Eu tenho uma escala que envia continuamente dados via porta serial, 2 vezes por segundo. A única maneira confiável de ler esses dados era o comando cat
. Os seguintes trabalhos:
cat /dev/ttyUSB0
Mas o problema com cat
é que, como ele não recebe um EOF
, ele continua recuperando dados. Eu também tentei head
, read
e tail
.
head -1 /dev/ttyUSB0 | strings
funciona quase toda vez, mas de vez em quando mostra dados antigos, e somente o comando re-running cat corrige (?). A string após o pipe recupera apenas dados imprimíveis.
read line < /dev/ttyUSB0 | echo $line
agora recupera dados, mas na maioria das vezes mostra apenas uma linha vazia.
tail -1 < /dev/ttyUSB0
apenas congela, esperando por EOF
, talvez?
Meu problema é que preciso escrever um script bash
que possa ser chamado e "lido" /dev/ttyUSB0
e recuperar dados. Eu vou usar head
. Mas eu estou querendo saber, como cat
nunca falha, se há uma maneira de capturar apenas uma linha de cat
output e depois pará-lo.
Nota: a configuração da porta é de 9600 bauds, 1 bit de início, 8 bits de dados, sem paridade, 2 bits de parada. Para definir a porta corretamente, este é o comando:
sudo stty -F /dev/ttyUSB0 9600 -parity cs8 cstopb