Como posso registrar o timestamp de cada linha emitida por um dispositivo serial?

2

Eu acesso um dispositivo de medição serial via screen /dev/tty.usbserial 9600. Enquanto o dispositivo está medindo, ele envia seus dados n vezes por segundo em uma linha. Como posso adicionar um carimbo de data / hora a cada linha (ou a cada poucas linhas, se isso atrasar demais o registro)?

Estou no OSX 10.8.2 e uso o Terminal.app como meu terminal.

Saaru Lindestøkke
fonte

Respostas:

1

Não foi possível encontrar nenhuma maneira de permitir que os carimbos de data e hora sejam impressos na tela. Em vez disso, criar o arquivo de log da tela e imprimi-lo com o awk funciona bem!

1. Crie (ou edite) ~ / .screenrc para permitir que a tela crie um arquivo de log.

Adicione a configuração de log ao .screenrc (arquivo de configuração da tela) em seu diretório pessoal.

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

2. Tela inicial

$ screen /dev/tty.usbserial 9600 -L

Em seguida, a tela começa a criar um arquivo de log. (Existem outras maneiras de criar arquivos de log.)

3. Imprima o arquivo com tail + awk

Execute este comando shell em outra janela do terminal.

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

Ele imprime o arquivo de log com carimbos de data e hora!

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

Se você deseja imprimir o log com carimbos de data e hora na saída padrão e em um arquivo, envie-o para o comando tee.

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