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