Начать последовательное чтение, когда данные начинаются с пустой строки - PullRequest
1 голос
/ 12 февраля 2020

У меня проблема с чтением последовательных данных из Arduino на Python. Я отправляю данные с датчиков через запятую с помощью одной функции Serial.println, а со стороны Arduino все вроде бы хорошо. С другой стороны, в Python я должен отформатировать эти данные для float и int, но первая строка всегда пуста, и я получаю ошибку при преобразовании их в float.

b = ser.readline()
string_n = b.decode()
string = string_n.rstrip()
sensor = string.split(',')
senzor1 = list(filter(None, sensor))
print(sensor1)

Я пытался с помощью этой опции отфильтровать пустую строку, но я получил это как результат:

[]
['-9.84', ' 27']
['-5.14', ' 29']
['-13.83', ' 25']
['0.82', ' 31']

В противном случае первая строка - [''], и она начинается с датчика показания.

Итак, только один Serial.println на моей стороне Arduino. Любая идея, как удалить этот пустой список или как его улучшить?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Мне удалось присвоить Serial.print нули на Arduino в качестве начального состояния, прежде чем датчики начнут работать, таким образом он Python будет читать нули в начале вместо пустого пространства, и это не влияет на последующую работу. Спасибо за помощь, Том.

0 голосов
/ 12 февраля 2020

Вы не можете избежать создания списка из списка.

Вы можете сделать:

b = ser.readline()
string_n = b.decode().strip()
sensor1 = [x.strip() for x in string_n.split(',') if x.strip()]
if sensor1:
    print(sensor1)

или:

b = ser.readline()
string_n = b.decode().strip()
if ',' in string_n:
    sensor1 = [x.strip() for x in string_n.split(',') if x.strip()]
    print(sensor1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...