当出现特定字符时,开始使用pyserial从串行端口读取传入的数据

时间:2019-07-11 13:57:16

标签: python pyserial

我正在尝试从体重秤(雷克萨斯矩阵一)读取输入数据。我希望代码在=出现后开始读取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'

1 个答案:

答案 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