0


正しいボーなどを設定した後、シリアルポート(スケール)から値を読み取るPython pyserialスクリプトがあります。
パテでは、次の値を返します。

0.00 Kg  
0.00 Kg

しかし、pyserial readline()/からの値は、無効な ascii を含むread()a を返します:bytearray

b'  \xb0\xae\xb0\xb0 kg \r\x8a  '
  • \xb0\xae10進数で176、174に等しい。
  • 10 進数の文字 0 は 48、および 0x30 である必要があります
  • キャラクター 。10 進数で 46、0x2E にする必要があります

ここで何が問題なのですか?

4

2 に答える 2

3

176-128=48、174-128=46 であることに注意してください。したがって、表示される数値の一部は、予想よりも 128 大きくなっています。これは、一部の文字に対して最上位ビット (ビット 7) が設定されていることを意味します。これは、通信設定 (パリティ、長さ) の一部が、ストップ ビット) が間違っています。7E1 で試してください:

serial.Serial(..., bytesize=serial.SEVENBITS,
    parity=serial.PARITY_EVEN, stopbits=serial.STOPBITS_ONE)

もちろん、これらのパラメーターが正しいかどうかはわかりません。あなたは正しいものを見つけなければなりません。

于 2013-08-01T10:24:16.503 に答える
0

印刷 chr(0xb0-0x80) 0 印刷 chr(0xae-0x80) . など - データ長が正しく設定されていないと思われます (データ ビット)。

于 2013-08-01T10:20:07.077 に答える