10
我需要監視串行端口信號(RI,DSR,CD,CTS)的狀態。 '串行'庫的循環和輪詢(例如,使用函數getRI)太密集CPU並且響應時間不可接受。Python監視器串行端口(RS-232)握手信號
python是否有解決方案?
我需要監視串行端口信號(RI,DSR,CD,CTS)的狀態。 '串行'庫的循環和輪詢(例如,使用函數getRI)太密集CPU並且響應時間不可接受。Python監視器串行端口(RS-232)握手信號
python是否有解決方案?
在Linux可能使用基於中斷的通知throught阻擋系統調用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(),
)