Python pyserial readline не работает, но экран вроде работает, работал в Ubuntu 16 - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть скрипт, который отслеживает последовательный порт:

nano spo.py:

#!/usr/bin/env python3
import serial, time
ser = serial.Serial('/dev/ttyS0', 9600)
while 1:
        serial_line = ser.readline()
        print(serial_line)
        time.sleep(60)

ser.close()

ctrl + x для сохранения и выхода

chmod +x spo.py
./spo.py

Этот скрипт работал под Ubuntu 16, эта система также могла быть более старой версией python.

под Ubuntu 18.04 Сейчас я не получаю последовательный вывод, если предположить, что из-за более новой Ubuntu или более новой версии python

РЕДАКТИРОВАТЬ, я нашел способ получить НЕКОТОРЫЕ выходные данные во время работы моего скрипта (во время работы скрипта я выключил и включил устройство пару раз):

b'NONIN AVANT 9600\r\n'                                                                                                         
b'NONIN AVANT 9600\r\n'                                                                                                                                                             
b'NONIN AVANT 9600\r\n'                                                                                                                                                             

вышеупомянутый форматируется не так, как раньше:

NONIN AVANT 9600

если я использую экран, я получаю немного больше шума, только если нажимаю ввод

screen /dev/ttyS0 9600

, то каждый раз, когда япри нажатии enter я получаю исходные данные:

NONIN AVANT 9600

Patient:
Clinician:

09/01/04 12:52:32 
SpO2= 96 HR= 62 F

при повторном нажатии на ввод я получаю больше, но он начинается вместо отображения следующей строки:

NONIN AVANT 9600

Patient:
Clinician:

09/01/04 12:53:55 
SpO2= 97 HR= 65 F

в Ubuntu 16 onмоя старая установка, сделанная несколько лет назад, будет выглядеть примерно так:и затем каждую секунду получаю новую строку статистики:

NONIN AVANT 9600

Patient:
Clinician:

09/01/04 12:53:55 
SpO2= 97 HR= 65 F
SpO2= 98 HR= 69 F
SpO2= 96 HR= 70 F
SpO2= 98 HR= 74 F
SpO2= 97 HR= 63 F
SpO2= 96 HR= 62 F
SpO2= 95 HR= 64 F

Я получаю только повторно инициализированный вывод, который я делаю на экране, если я нажимаю клавишу ввода.

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

Устройство представляет собой Nonin Avant 9600: ASCII последовательный 9600 бод с 8 битами данных, 1 стартовым битом и 2 стопамибиты.Каждая строка заканчивается CR / LF

1 Ответ

0 голосов
/ 27 ноября 2018

Для тех, кто находит эту тему.Я пробовал несколько разных способов получения вывода из последовательного порта, ничего не получалось.Я использовал наш резервный оксиметр для тестирования.Я переключил оксиметр на тот, который мы обычно используем, и теперь последовательная связь работает нормально.Плохой оксиметр, по-видимому, функционировал правильно и правильно отображался на своем экране, поэтому я не догадывался, что это могло быть устройство, вызывающее проблему с последовательной связью.

Также странно, выключать и включать устройствовыводит некоторые данные из последовательного порта, но только изначально я не получаю данные.Я почти задался вопросом, является ли это просто настройкой или чем-то странным с устройством, но я просмотрел руководство и ничего не увидел.Хотелось бы, чтобы я знал немного больше об электронике, было бы неплохо исправить этот другой, но нет никаких явно сгоревших или выпуклых компонентов, поэтому я бы не знал, что искать дальше.

...