¿Cómo puedo marcar la hora de cada línea emitida por un dispositivo en serie?

2

Accedo a un dispositivo de medición en serie a través de screen /dev/tty.usbserial 9600. Mientras el dispositivo está midiendo, genera sus datos n veces por segundo en una línea. ¿Cómo puedo agregar una marca de tiempo en cada línea (o cada pocas líneas, si ralentiza demasiado el registro)?

Estoy en OSX 10.8.2 y uso Terminal.app como mi terminal.

Saaru Lindestøkke
fuente

Respuestas:

1

No pude encontrar ninguna manera de dejar que la pantalla imprima marcas de tiempo. En cambio, crear el archivo de registro de la pantalla e imprimirlo con awk funciona bien.

1. Cree (o edite) ~ / .screenrc para permitir que la pantalla cree un archivo de registro.

Agregue la configuración de registro a .screenrc (archivo de configuración de la pantalla) en su directorio de inicio.

logfile "/path/to/log/file" # Specify log file name with absolute path.
logfile flush 1
deflog on

2. Pantalla de inicio

$ screen /dev/tty.usbserial 9600 -L

Entonces la pantalla comienza a crear un archivo de registro. (Hay otras formas de crear archivos de registro).

3. Imprima el archivo con tail + awk

Ejecute este comando de shell en otra ventana de terminal.

$ tail -f screen.log | awk '{ print strftime("%H:%M:%S"), $0; fflush(); }'

Imprime el archivo de registro con marcas de tiempo!

15:41:27 xxx
15:41:28 xxx
15:41:29 xxx
15:41:30 xxx
15:41:31 xxx

Si desea imprimir el registro con marcas de tiempo tanto en la salida estándar como en un archivo, canalícelo al comando tee.

$ tail -f /path/to/log/file | awk '{print strftime("%H:%M:%S"),$0; fflush();}' | tee /path/to/another/file
Mariko Hisakawa
fuente