[英]python pyserial readline not working, but screen kinda does, worked in ubuntu 16
我有一个脚本来监视串行com端口:
纳米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
然后每次我按回车我都会得到初始数据:
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下,输出将是这样的,初始化一次,然后每秒获取一个新的统计信息行:
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
如果我按Enter键,我只会得到在屏幕上执行的重新初始化的输出。
我希望有人能帮我解决这个问题,我觉得我在圈里追逐死胡同。
该设备是Nonin Avant 9600:ASCII串行9600波特,具有8个数据位,1个起始位和2个停止位。 每行以CR / LF终止
对于任何发现此线程的人。 我尝试了几种不同的方法来从串行端口获取输出,但没有任何效果。 我正在使用我们的备用血氧仪进行测试。 我关闭了通常使用的血氧仪,现在串行通讯正常工作。 血氧饱和度仪似乎工作正常并在其屏幕上正确显示,因此我不会猜到它可能是引起串行通讯问题的设备。
同样奇怪的是,关闭设备后再打开设备会使我从串行端口中获取一些数据,但仅在开始时,我才一直在获取数据。 我几乎想知道这只是设备的设置还是怪异的东西,但是我看了一下手册,却什么也没看到。 希望我对电子学有所了解,可以很好地解决其他问题,但是没有明显烧毁或凸起的组件,所以我不知道下一步该怎么做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.