redireciona a saída da interface?

0

Estou ecoando um comando AT para uma interface de modem ( /dev/ttyUSB3 ) e o comando é executado com êxito.

Por exemplo, o comando abaixo funciona e tem uma saída de OK :

echo -e "ATZ\r" > /dev/ttyUSB3

Eu posso ver isso com outro terminal com cat /dev/ttyUSB3 ativo.

Como, em vez de usar cat (por exemplo, usar um comando para enviar um comando e recuperar a saída), redirecionar a saída OK para uma variável ou arquivo para que eu possa processar os dados retornados do modem?

    
por Paul 26.01.2015 / 15:44

2 respostas

1

Você deve usar o dispositivo serial como um arquivo normal. A única diferença é que ele precisa de alguns ioctl () s para fazer a configuração de velocidade e controle de linha.

Portanto, não use os.system("echo ... mas f = open('/dev/ttyUSB3', 'rw') e, em seguida, f.write() e f.read() .

Em teoria, você poderia usar ioctl() para definir a velocidade e assim por diante, mas nesse estágio é simplesmente mais fácil usar pySerial do que fazer todo o parâmetro empacotando-se. ser = serial.Serial(port='/dev/ttyUSB3', baudrate=9600, timeout=1, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS) com ser.write() e ser.read() .

Observe que você deve usar o udev para definir um nome exclusivo para a porta serial, em vez de codificar / dev / ttyUSB3. Veja como fazer isso para um único adaptador USB / RS-232 e aqui está como fazer isso para um adaptador USB / RS-232 de vários compartimentos .

    
por 27.01.2015 / 05:21
0
read modem_output < /dev/ttyUSB3
    
por 26.01.2015 / 15:47