我试图在覆盆子pi和arduino之间建立一个RS485通信系统。我目前正在使用Nick Gammons arduino 485库Arduino RS485 Library,并希望将其移植到python上以在raspberry pi上运行。
传输方面的事情正在与crc8和补充错误预防工作正常工作但我很难接收方面的东西。正如pySerial API HERE中所述,ser.read()返回一个bytes类型的变量。这个问题是我需要按位操作来执行错误检查,例如:
in_byte = ser.read()
if (in_byte >> 4) != ((in_byte & 0x0F) ^ 0x0F):
return 0
in_byte >>= 4
这当然会抛出一个解释器错误,说按位运算符'>>'与int和bytes
类型的变量不兼容我知道int.from_bytes方法但是这似乎需要多个字节加一个endian格式
我应该逐字节串行数据执行逐位运算的“正确”或典型方式是什么?
我对来自C / C ++背景的python相对较新,
由于
安迪
答案 0 :(得分:0)
简短回答:
ord()函数适用于单个字节ex:
temp = ser.read()
in_byte = ord(temp)
TLDR: