(ValueError)使用python读取串口响应

时间:2012-06-19 13:59:54

标签: python serial-port pyserial

我正在尝试读取串口的响应。 (我正在使用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))

起初我直接使用打印(响应),我得到的是:

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很新,并且不知道问题是什么。

1 个答案:

答案 0 :(得分:1)

您的字符串已经是十六进制文字:

>>> x = '\x94#\xdb\xff'
>>> x.encode('hex')
'9423dbff'
>>> int(x.encode('hex'),16)
2485378047L
相关问题