En Linux, quiero enviar una cadena de comando (es decir, algunos datos) a un puerto serie (que contiene caracteres de control) y escuchar la respuesta (que generalmente también puede contener caracteres de control).
¿Cómo puedo hacer esto lo más simple posible en Linux? Un ejemplo es apreciado!
serial-port
Alex
fuente
fuente
Respuestas:
Todos los dispositivos en Unix se asignan a un archivo de dispositivo, los puertos seriales serían
/dev/ttyS0
/dev/ttyS1
....Primero eche un vistazo a los permisos en ese archivo, supongamos que está utilizando
/dev/ttyS1
.ls -l /dev/ttyS1
Querrá acceso read.write, si este es un sistema compartido, entonces debe considerar las consecuencias de seguridad de abrirlo para todos.
Un método crudo muy simple para escribir en el archivo, usaría el
echo
comando simple .y leer
Puede tener un gato corriendo en una terminal y hacer eco en una segunda.
Si todo es galimatías, entonces la velocidad en baudios, la configuración de bits puede necesitar configuración antes de comenzar a enviar.
stty
lo haré. !! NOTA stty usará stdin como descriptor de archivo predeterminado para afectar.Comandos equivalentes.
¿Esto podría ser suficiente para que escribas algo y te registres? No estoy seguro de lo que estás tratando de lograr.
Para un modo más interactivo, recuerda que tu enfoque de configuración predeterminada sería usarlo
minicom
, es solo un programa que hace todo lo que he mencionado hasta ahora. (similar a hyperterminal en Windows, puede ser familiar).Una solución intermedia utilizaría un programa de terminal como el
screen
que funcionará en un dispositivo en serie.man screen
man minicom
man stty
para más informaciónfuente
# stty -speed 38400 -f /dev/ttyUSB1
vuelvestty: invalid argument '-speed'
Todo lo que tienes que hacer es abrir dos terminales. En la primera terminal,
cat
todo desde el dispositivo, p. Ej.en el otro terminal, puede enviar caracteres hexadecimales arbitrarios y texto al terminal, por ejemplo, de la siguiente manera:
El
echo -e
comando permite la interpretación de escapes de barra invertida.Por supuesto, es necesario asegurarse de que (i) la configuración en serie (velocidad, longitud de palabra, control de flujo, etc.) sea correcta y (ii) el dispositivo en serie (en el otro extremo) no esté bloqueado.
fuente
Programas que hablan con dispositivos seriales:
o desde shell puedes hacer:
fuente
exec 99<&-
oexec 99>&-
debería usarse. ¿O posiblemente ambos?Este podría ser un mejor enfoque:
fuente
Puede leer y escribir en un dispositivo de forma simultánea de la siguiente manera:
Su mensaje se envía al segundo
cat
desdestdin
, y el primerocat
transmite la respuestastdout
, convirtiendo su terminal en una sala de chat.Para finalizar,
ctrl-c
y luego ejecutarfg
a continuación,ctrl-c
de nuevo.fuente