2011-05-05 210 views

回答

13

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