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?

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.