lendo de serial a partir da linha de comando linux

51

Eu tenho um dispositivo de porta serial que gostaria de testar usando a linha de comando linux.

Consigo usar stty e echo para enviar comandos para a porta serial, mas quando o dispositivo responde, não tenho como ler o que vem da porta serial. estou usando

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

para enviar um comando para o dispositivo. O dispositivo opera e envia uma resposta de volta em 300 ms. Como imprimo essa resposta no console usando a linha de comando?

erin c
fonte

Respostas:

56

O mesmo que com a saída. Exemplo:

cat /dev/ttyS0

Ou:

cat < /dev/ttyS0

O primeiro exemplo é um aplicativo que abre a porta serial e retransmite o que lê para seu stdout(seu console). O segundo é o shell que direciona o tráfego da porta serial para qualquer aplicativo que você gosta; esse aplicativo em particular apenas repassa stdinpara o seu stdout.

Para obter melhor visibilidade do tráfego, você pode preferir um hex dump:

od -x < /dev/ttyS0
Jirka Hanika
fonte
ousocat stdio /dev/ttyS0
pstanton 19/11/19
Enviei um comando para um dispositivo com o qual estou trabalhando. O comando é: eco "1GAINS" | sudo tee / dev / ttyUSB0 .... e em resposta estou recebendo um fluxo infinito repetindo a mesma mensagem. Alguma ideia? O dispositivo em si deve repetir o comando que envio uma vez, mas aqui é como se eu estivesse recebendo um feedback estranho.
User391339 01/01
Eu verifiquei que o feedback não é "real" usando um analisador serial. O dispositivo repete o comando apenas uma vez, mas, usando os comandos acima, recebo uma repetição sem fim na saída do terminal.
precisa saber é o seguinte
Funciona com dados binários?
Ransh
@ransh - Veja a parte do dump hexadecimal da resposta. Você precisará de um humano ou de uma ferramenta que entenda ou possa fazer engenharia reversa desses dados binários específicos.
Jirka Hanika