Suponho que haja algo errado com stty
...
...
Há algo que estou perdendo na tentativa de configurar a taxa de transmissão do UART com stty?
Sim, seu teste tem falhas, para que você não detecte que a taxa de transmissão foi alterada.
Alguns fatos (possivelmente obscuros):
- Uma porta serial não pode receber nenhum dado quando os dados são enviados a uma taxa de transmissão muito mais lenta em relação à sua configuração (por exemplo, enviada a 9600 baud e recebendo a 115200 baud).
- O comando cat possui uma peculiaridade que pode fazer com que ele não libere os buffers stdio, a menos que encontre um caractere de terminação de linha. Os comandos cat IOW sucessivos podem exibir os mesmos dados quando não houver terminação de linha. A resposta aceita a esta pergunta faz alusão a esse problema.
Sua escolha e sequência de comandos shell trabalham em conjunto para ajudar a levá-lo à sua conclusão incorreta.
# stty -F / dev / ttyUSB0 9600
# stty -F / dev / ttyUSB0
# cat / dev / ttyUSB0
dados dados dados
^ C
Então, você configura o terminal serial com a taxa de transmissão adequada e recebe alguns dados.
# stty -F / dev / ttyUSB0 115200
# stty -F / dev / ttyUSB0
# cat / dev / ttyUSB0
dados dados dados
^ C
Depois de reconfigurar com uma taxa de transmissão muito mais rápida, a porta serial provavelmente deixa de detectar quadros válidos e nenhum novo dado é recebido.
Ao emitir outro comando cat , você vê uma exibição dos mesmos dados que foram recebidos anteriormente (ou seja, antes da alteração da taxa de transmissão).
Termo aditivo
Você deve pelo menos se convencer de que o comando stty não está quebrado e alterar a taxa de transmissão conforme o esperado.
Ou:
R. Em vez de mudar para uma taxa de transmissão muito rápida (que não pode detectar nenhum enquadramento), mude para uma moderada 38400 ou 4800 mais lenta, uma das quais deve causar recepção / exibição de caracteres ilegíveis (em vez de dados válidos ou nada).
Ou
B. Troque a ordem das taxas de transmissão. Redefina os sistemas e use stty para configurar a taxa de transmissão rápida e inválida inicialmente para causar a recepção / exibição de caracteres ilegíveis ou nada.
Em seguida, use stty para configurar a taxa de transmissão adequada e comece a receber os dados conforme o esperado.
cat
exibição de qualquer dado. Não consigo imaginar o que poderia causarcat
a exibição dos dados antigos, pois antes de abrir o dispositivo não há buffer para armazenar esses dados.