我需要监控串口信号(RI、DSR、CD、CTS)的状态。
使用“串行”库进行循环和轮询(例如使用函数 getRI)的 CPU 强度太大,并且响应时间不可接受。
有没有用python的解决方案?
在 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(),
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)