redirecionar a saída da interface?

redirecionar a saída da interface?

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

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

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

Posso ver isso tendo outro terminal cat /dev/ttyUSB3ativo.

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

Responder1

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

Portanto, não use os.system("echo... mas f = open('/dev/ttyUSB3', 'rw')e então 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 empacotamento de parâmetros sozinho. 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 por umadaptador USB/RS-232 únicoe aqui está como fazer isso por umadaptador multiporta USB/RS-232.

Responder2

read modem_output < /dev/ttyUSB3

informação relacionada