2011-05-05 19 views

Respuesta

13

En Linux es posible monitorizar che cambio de estado de un pin de señal de un puerto RS-232 mediante notificación basada interrupción throught el bloqueo TIOCMIWAIT syscall:

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