【问题标题】:Python monitor serial port (RS-232) handshake signalsPython监听串口(RS-232)握手信号
【发布时间】:2011-05-05 22:37:44
【问题描述】:

我需要监控串口信号(RI、DSR、CD、CTS)的状态。 使用“串行”库进行循环和轮询(例如,使用函数 getRI)过于占用 CPU 资源,并且响应时间不可接受。

有没有python的解决方案?

【问题讨论】:

    标签: python serial-port


    【解决方案1】:

    在 Linux 上,可以通过阻塞系统调用 TIOCMIWAIT 使用基于中断的通知来监视 RS-232 端口的信号引脚的状态变化:

    from serial import Serial
    from fcntl import  ioctl
    from termios import (
        TIOCMIWAIT,
        TIOCM_RNG,
        TIOCM_DSR,
        TIOCM_CD,
        TIOCM_CTS
    )
    
    ser = Serial('/dev/ttyUSB0')
    
    wait_signals = (TIOCM_RNG |
                    TIOCM_DSR |
                    TIOCM_CD  |
                    TIOCM_CTS)
    
    if __name__ == '__main__':
        while True:
            ioctl(ser.fd, TIOCMIWAIT, wait_signals)
            print 'RI=%-5s - DSR=%-5s - CD=%-5s - CTS=%-5s' % (
                ser.getRI(),
                ser.getDSR(),
                ser.getCD(),
                ser.getCTS(),
            )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多