代码之家  ›  专栏  ›  技术社区  ›  Jieiku

PythonPySerialReadLine不工作,但屏幕有点工作,在Ubuntu16中工作

  •  0
  • Jieiku  · 技术社区  · 7 年前

    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的旧版本。

    编辑时,我找到了一种在运行脚本时获得一些输出的方法(在脚本运行时,我打开和关闭设备电源几次):

    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下,输出如下,初始化一次,然后每秒获得一个新的统计行:

    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
    

    我希望有人能帮我弄明白这一点,我觉得我在一圈又一圈地追逐着死胡同。

    该设备为非前卫9600:ASCII串行9600波特,具有8个数据位、1个起始位和2个停止位。每条线路均由CR/LF端接

    1 回复  |  直到 7 年前
        1
  •  0
  •   Jieiku    7 年前

    同样奇怪的是,关闭和打开设备会从串行端口获取一些数据,但只是在最初,我不会一直获取数据。我几乎想知道这是否只是一个设置或奇怪的设备,但我看了手册,没有看到任何东西。要是我对电子产品多了解一点就好了,要是能修好另一个就好了,但并没有任何明显烧坏或鼓包的部件,所以我不知道下一步该找什么。