问题描述
我正在尝试从具有 32x32 个独立压力点的压力传感垫读取值。它将串行读数输出为 1 到 250 + 1 个“结束标记”字节之间的 1024 个字节,该字节始终为 255(或 0xFF)。
下面的代码大部分时间都有效...
import serial
ser = serial.Serial('/dev/tty.usbmodem14101',11520)
ser.flushinput()
while True:
ser_bytes = bytearray(ser.read(1025))
ser_ints = [int(x) for x in ser_bytes]
print('size: ',len(ser_ints))
print(ser_ints)
但我认为使用 ser.read_until(b'0xFF')
来确保我总是读取正确的值数组会更有意义。但我无法以这种方式使用 ser.read_until
。
请问如何使用 ser.read_until
重写上面的代码?而且真的有必要吗?谢谢
解决方法
Python 使用 \xFF
(或小写的 \xff
)来指定单个字节,因此请改为这样做:
ser.read_until(b'\xFF')
0x
中的 b'0xFF'
没有特殊意义,只是产生一个 4 字节的序列。有关详细信息,请参阅文档:https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals