如何serial.read_until一个特定的字节值?

How to serial.read_until a specific byte value?

我正在尝试从具有 32x32 个独立压力点的压力传感垫读取值。它将串行读数输出为 1 到 250 + 1 'end token' 字节之间的 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')

b'0xFF'中的0x没有特殊意义,只是产生一个4字节的序列。详情见文档:https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals