我正在尝试从体重秤(雷克萨斯矩阵一)读取输入数据。我希望代码在=
出现后开始读取8个字符。
问题在于,有时代码会执行此操作,而另一些时候,代码会在秤发送的测量值的中间开始读取数据,从而无法正确读取。我在Windows的python 3上使用pyserial
模块。
import serial
ser=serial.Serial("COM4", baudrate=9600)
a=0
while a<10:
b=ser.read(8)
a=a+1
print(b)
预期结果是:b'= 0004.0'
但是有时候我会得到:b'4.0= 000'
答案 0 :(得分:2)
我想我们需要更多有关体重秤的数据格式的信息,以提供完整的答案。但是您当前的代码只能从流中读取前80个字节,一次读取8个字节。
如果要读取 any 等号后的下一个8个字节,可以尝试执行以下操作:
import serial
ser = serial.Serial("COM4", baudrate=9600)
readings = []
done = False
while not done:
current_char = ser.read()
# check for equals sign
if current_char == b'=':
reading = ser.read(8)
readings.append(reading)
# this part will depend on your specific needs.
# in this example, we stop after 10 readings
# check for stopping condition and set done = True
if len(readings) >= 10:
done = True