Eu tentaria algo assim:
(stty raw; while IFS= read -R line; do
printf '%s\n' "$line" > /home/me/received.txt; done) < /dev/ttyUSB2
Eu tenho um Arduino enviando dados através de uma porta serial para o meu PC Ubuntu. Isso está funcionando, pois posso abrir um monitor serial no PC e ver os dados. O arduino envia uma linha de dados a cada 2 segundos. Eu quero redirecionar a saída para um arquivo de texto no PC. Eu tentei:
(stty raw; cat > /home/me/received.txt) < /dev/ttyUSB2
Funciona, mas anexa cada linha recebida ao arquivo. Eu quero mais escrever o arquivo a cada vez. Em outras palavras, o arquivo deve ter apenas uma linha de dados que seria a mais nova recebida.
Eu pensei que o < vs < < cuidaria disso, mas obviamente estou perdendo alguma coisa. Alguém pode me apontar na direção certa?
Outra possibilidade é abusar ligeiramente do awk:
( stty raw; awk -v f="outfile" '{print >f; close(f)}' )<tty