如何 serial.read_until 特定字节值?

问题描述

我正在尝试从具有 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