Python监视器串行端口(RS232)握手信号

2024-05-18 10:17:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要监视串行端口信号(RI、DSR、CD、CTS)的状态。 使用“串行”库进行循环和轮询(例如,使用函数getRI)占用的cpu太多,响应时间不可接受。在

python有解决方案吗?在


Tags: 端口函数信号状态时间cdcpu解决方案
1条回答
网友
1楼 · 发布于 2024-05-18 10:17:44

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

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(),
        )

相关问题 更多 >