Python监听串口(RS-232)握手信号

Posted

技术标签:

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

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

有没有python的解决方案?

【问题讨论】:

【参考方案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(),
        )

【讨论】:

以上是关于Python监听串口(RS-232)握手信号的主要内容,如果未能解决你的问题,请参考以下文章

UART,串口,RS232,RS485等等,之间有啥联系和区别?

串口(RS232,RS485)

NBIoT无线模块DTU数传电台串口服务器RS232/RS485端口工业路由信号传输

串口通信概念

51单片机里的RS232串口电压肯定不会超过5V,为啥还要MAX232电平转换呀。用PL2303,还需要MAX232吗。

stm32---RS485半双工通信