lectura de serie desde la línea de comando de linux

51

Tengo un dispositivo de puerto serie que me gustaría probar usando la línea de comando de Linux.

Puedo usar stty y echo para enviar comandos al puerto serie, pero cuando el dispositivo responde no tengo forma de leer lo que viene del puerto serie. estoy usando

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

para enviar un comando al dispositivo. El dispositivo funciona y envía una respuesta en 300 ms. ¿Cómo imprimo esa respuesta a la consola usando la línea de comando?

erin c
fuente

Respuestas:

56

Igual que con la salida. Ejemplo:

cat /dev/ttyS0

O:

cat < /dev/ttyS0

El primer ejemplo es una aplicación que abre el puerto serie y transmite lo que lee de él a su stdout(su consola). El segundo es el shell que dirige el tráfico del puerto serie a cualquier aplicación que desee; esta aplicación en particular simplemente transmite su stdina su stdout.

Para obtener una mejor visibilidad del tráfico, puede preferir un volcado hexadecimal:

od -x < /dev/ttyS0
Jirka Hanika
fuente
osocat stdio /dev/ttyS0
pstanton
Envié un comando a un dispositivo con el que estoy trabajando. El comando es: echo "1GAINS" | sudo tee / dev / ttyUSB0 .... y en respuesta recibo una secuencia infinita que repite el mismo mensaje. ¿Algunas ideas? El dispositivo en sí debería repetir el comando que envío una vez, pero aquí es como si recibiera comentarios extraños.
user391339
Verifiqué que los comentarios no son "reales" utilizando un analizador en serie. El dispositivo solo repite el comando una vez, pero usando los comandos anteriores obtengo una repetición loca e interminable en la salida del terminal.
user391339
¿Funciona con datos binarios?
ransh
@ransh: vea la parte de volcado hexadecimal de la respuesta. En última instancia, necesitará un humano o una herramienta que comprenda o que pueda realizar ingeniería inversa de esos datos binarios en particular.
Jirka Hanika