字节操作(串行数据)Raspberry Pi

时间:2017-08-15 13:26:20

标签: python python-3.x raspberry-pi raspberry-pi3 raspberry-pi2

我试图在覆盆子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相对较新,

由于

安迪

1 个答案:

答案 0 :(得分:0)

简短回答:

ord()函数适用于单个字节ex:

        temp = ser.read()
        in_byte = ord(temp)

TLDR:

Using Python struct.unpack with 1-byte variables