Серийные пустые данные Python - PullRequest
0 голосов
/ 30 октября 2018

У меня есть скрипт, который считывает данные с устройства, отправляющего данные от 1 до 9 по кабелю RS232. Я беру данные с помощью приведенного ниже сценария.

import serial

ser = serial.Serial(
    port='COM3', \
    baudrate=9600, \
    parity=serial.PARITY_NONE, \
    stopbits=serial.STOPBITS_ONE, \
    bytesize=serial.EIGHTBITS, \
    timeout=10)

while True:
    data_raw = ser.readline().decode().strip()
    print("Data is: " + data_raw)

Вывод как показано ниже

Data is: 
Data is: 5
Data is: 6
Data is: 7
Data is: 8
Data is: 9
Data is: 1

Я не могу понять, почему первые данные приходят как пустые, и как я могу это исправить. Это необходимо, так как я собираю эти данные и буду входить в базу данных.

1 Ответ

0 голосов
/ 30 октября 2018

Это потому, что вы получаете только символ конца строки и не ждете, пока получите последовательные данные.

print('Data is: ' + b'\n'.decode().strip())
print('Data is: ' + b'5\n'.decode().strip())

>>> Data is: 
>>> Data is: 5

Вы можете игнорировать пустые данные.

while True:
    data_raw = ser.readline().decode().strip()
    if data_raw:
        print("Data is: " + data_raw)
...