从串口测试字节

时间:2013-06-22 20:13:15

标签: python python-2.7

我正在尝试测试从串口接收的数据,似乎无法正确使用。我需要检查数据包中收到的第一个字节是否为0xBE:

#ser is instance of pyserial serial object
data=ser.read(5)
print "serial RX: " + binascii.b2a_hex(data)
if data[0] != 0xBE:
    print"wrong value"

始终打印:

serial RX: beef000008
wrong value

即使ascii打印的二进制文件显示已收到正确的值。

在这个真正基本的任务中我哪里出错了?

谢谢,     罗宾。

1 个答案:

答案 0 :(得分:3)

来自pyserial's documentation

Changed in version 2.5: Returns an instance of bytes when available (Python 2.6 and newer) and str otherwise.

所以我测试了:

>> bytes(0xbe) == 0xbe
False

但如果将其转换为int:

>> int(bytes(0xbe)) == 0xbe
True

stackoverflow question所示,[{3}}类型包含在[PEP-3137 bytes]中。它就像是python3的3,但只是bytearraystr的别名。

所以,基本上,只需在执行python2代码时将pyserial的输出视为str