1

次を使用して、16 進数形式でデバイスに書き込みますpyserial

ser.write("\x01\x03\x00\x00\x00\x0A\xC5\xCD")
data = ser.readline()
print data

出力は次のとおりです。

Q,f�    ��
Q.f�    �   
Q8f�    �B
Q5f�    �

私の問題は、たとえば、出力を16進形式で表示する方法です

01 03 14 50 AD 00 00 00 00 00 00 00 00 00 00 66 DC 00 00 00 09 00 00 A8 42

また、どうすれば10進数に変換できますか:

50AD = 20653
66DC = 26332
4

2 に答える 2

2

16 進数を表示するには:

print ' '.join('%2x' % ord(c) for c in data)

小数を表示して何をしようとしているのかよくわかりません。データを 16 ビットのチャンクに分割して 10 進数で表示しようとしている場合は、次のようにします。

print [256*ord(c) + ord(d) for c, d in zip(data[::2], data[1::2])]
于 2012-09-20T18:29:51.447 に答える
1

2 つの問題があると思います。

  1. Python スクリプトで使用されるボー レートが、端末に設定されているボー レートと一致しません。テストのためだけに印刷可能な ASCII 値を送信しながら、それらを正しく取得するようにしてください。
  2. データを (ASCII 文字ではなく) 16 進数として表示したい場合は、端末でいくつかの設定を変更できるかどうかを確認してください。
于 2012-09-20T09:23:05.650 に答える