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

Byte manipulation (Serial Data) Raspberry Pi

我正在尝试在 raspberry pi 和 arduino 之间建立一个 RS485 通信系统。我目前正在使用 Nick Gammons arduino 485 库 Arduino RS485 Library 并希望将其移植到 raspberry pi 上的 python 到 运行。

事物的传输端使用 crc8 和补码错误预防工作正常,但我在事物的接收端遇到困难。正如 pySerial API HERE ser.read() returns 中记录的字节类型的变量。这个问题是我需要按位操作来执行错误检查作为示例:

            in_byte = ser.read()


            if (in_byte >> 4) != ((in_byte & 0x0F) ^ 0x0F):
                return 0

            in_byte >>= 4

这当然会引发解释器错误,说明按位运算符“>>”与 int 和 bytes 类型的变量不兼容

我知道 int.from_bytes 方法,但这似乎需要多个字节加上字节序格式

我应该对逐字节串行数据执行按位运算的'correct'或典型方法是什么?

我对 python 比较陌生,有 C/C++ 背景,

谢谢

安迪

简答:

ord() 函数非常适合单字节,例如:

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

TLDR:

Using Python struct.unpack with 1-byte variables