0

シリアルポートの応答を読み取ろうとしています。(私はRFIDモジュールを使用しています)これが私のコードです:

import serial
ser = serial.Serial()
ser.port = "/dev/ttyUSB0"
ser.baudrate = 9600
ser.timeout = 3
ser.open()
if ser.isOpen():
    ser.write("\xFF\x01\x03\x10\x02\x02\x18")
    print("command written")
while ser.isOpen():
    response = ser.read(5)
    print("trying to read")
    print(int(response,16))

最初は直接print(response)を使用しましたが、次のようになりました。

trying to read
�#��

したがって、応答を整数に変換するためにprint(int(response、16))を使用しましたが、エラーが発生します。

Traceback (most recent call last):
  File "serialread.py", line 13, in <module>
    print(int(response,16))
ValueError: invalid literal for int() with base 16: '\x94#\xdb\xff'

私は何をすべきか?私はPythonにかなり慣れていないので、問題が何であるかわかりません。

4

1 に答える 1

1

文字列はすでに16進リテラルです:

>>> x = '\x94#\xdb\xff'
>>> x.encode('hex')
'9423dbff'
>>> int(x.encode('hex'),16)
2485378047L
于 2012-06-19T14:09:19.633 に答える