2012-08-28 31 views
6

en el BusyBoxcommand para Linux existe el comando microcom para comunicarse con un módem serie:redireccionante comandos AT a MICROCOM de comandos en Linux

BusyBox v1.13.2 (2012-05-10 17:13:08 CEST) multi-call binary 

Usage: microcom [-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY 

Copy bytes for stdin to TTY and from TTY to stdout 

Options:  
     -d Wait up to DELAY ms for TTY output before sending every next byte to it 
     -t Exit if both stdin and TTY are silent for TIMEOUT ms 
     -s Set serial line to SPEED 
     -X Disable special meaning of NUL and Ctrl-X from stdin 

En lugar de utilizar la entrada estándar para escribir los comandos AT quiero colocarlos insise un archivo de texto y redirigir el contenido de ese archivo como stdin para el comando anterior. Por ejemplo, tengo un archivo

/tmp/at.txt 

con el comando AT AT, que por lo general obtiene confirmado por el TTY con un OK. Una sesión de serie con la entrada estándar se parece a:

microcom -t 3000 -X /dev/ttyS5         
at 
OK 

en el que la cadena at se introduce directamente en el teclado. Para usar el contenido del archivo /tmp/at.txt (contiene solo 'at \ n'). Para hacer esto,. He probado las siguientes variaciones:

microcom -t 3000 -X /dev/ttyS5 < /tmp/at.txt 
microcom -t 3000 /dev/ttyS5 < /tmp/at.txt 
cat /tmp/at.txt | microcom -t 3000 /dev/ttyS5 
tail -f /tmp/at.txt | microcom -t 3000 /dev/ttyS5 
cat /tmp/at.txt | microcom -t 3000 /dev/ttyS5 -X 
tail -f /tmp/at.txt | microcom -t 3000 /dev/ttyS5 -X 

y ninguno de ellos trabajado, es decir, ninguno de esos comandos hizo devolver el texto 'OK' en la pantalla. Por lo tanto, concluyo que hay algún problema al redirigir el contenido del archivo /tmp/at.txt como stdin para el comando microcom. Quizás tiene que ver con cómo se interpreta el final de línea o el final de archivo. Si alguien tiene alguna idea, agradecería algo de ayuda.

Gracias,

Alex

+0

Qué cáscara está usando? – tMC

Respuesta

5

Im que ejecutan el microcom en BusyBox v1.18.4 bajo Slitaz 4.0 & que duplican el problema & luego lo resolvieron. Si va a emular la entrada de teclado en este nivel, el archivo de búsqueda debe tener un CRLF completo después de cada línea, ya que la tecla del teclado transmite un^M (0x0D). El estándar Linux 0x0A escrito por la mayoría de los editores ASCII no es suficiente.

Hay muchas maneras de hacerlo, pero acabo de crear el archivo de registro con un byte extra al final de cada línea y luego utilicé el programa ncurses-hexedit para borrar el byte a 0x0D. Probé los comandos anteriores & obtuve una respuesta correcta con la entrada tomada de dicho archivo.

Espero que esto ayude.

5

Usted necesita terminar comandos AT con carácter especial \ r

echo "AT+CIMI\r" | microcom -t 2000 /dev/ttyS5 

Con \ n no funciona

grettings

+0

si al lado de busybox utiliza un shell real, como bash, no olvide especificar el distintivo -e -n para hacer eco: 'echo -ne" AT + CSQ \ r \ n "| microcom -X -t 1000/dev/modem_at1' –

Cuestiones relacionadas