I suppose there's something wrong with
stty
...
...
Is there something I'm missing in the attempt to configure UART baudrate with stty?
Sim, seu teste é falho, 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 115.200 baud).
- O comando cat tem um capricho que pode fazer com que ele não libere buffers stdio, a menos que encontre um caractere de terminação de linha. Os comandos cat sucessivos do IOW podem exibir os mesmos dados quando não houver término de linha. A resposta aceita para esta questão alude a esta questão.
Sua escolha particular e a sequência de comandos do shell funcionam em conjunto para ajudar você a concluir incorretamente.
# stty -F /dev/ttyUSB0 9600
# stty -F /dev/ttyUSB0
# cat /dev/ttyUSB0
data data data
^C
Portanto, você configura o terminal serial com a taxa de transmissão correta e recebe alguns dados.
# stty -F /dev/ttyUSB0 115200
# stty -F /dev/ttyUSB0
# cat /dev/ttyUSB0
data data data
^C
Após 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.
Quando você emite outro comando cat , você verá uma exibição dos mesmos dados que foram recebidos anteriormente (ou seja, antes da alteração da taxa de transmissão).
Adendo
Você deve ser capaz de pelo menos se convencer de que o comando stty não está quebrado e altera a taxa de transmissão como esperado.
Qualquer um:
Em vez de mudar para uma taxa de transmissão muito rápida (que não pode detectar qualquer enquadramento), mude para um baud moderado de 38400 ou 4800 bauds mais lento, o que deve causar recepção / exibição de caracteres ilegíveis (em vez de dados válidos ou nada).
Ou
Troque a ordem das baudrates. Redefinir os sistemas e usar 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 começar a receber os dados conforme o esperado.