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等等,之间有啥联系和区别?
NBIoT无线模块DTU数传电台串口服务器RS232/RS485端口工业路由信号传输
51单片机里的RS232串口电压肯定不会超过5V,为啥还要MAX232电平转换呀。用PL2303,还需要MAX232吗。