O comando Echo trava ao gravar no dispositivo serial

2

Eu tenho um dispositivo serial definido para o modo raw com stty -F /dev/ttyS0 raw . Quando eu tento enviar dados através dele com echo 'hello' > /dev/ttyS0 , o seguinte acontece:

  • Nenhum dado é recebido pelo outro lado; O osciloscópio mostra que nenhum dado está sendo enviado

  • Nenhum prompt aparece por aproximadamente 40 segundos, o terminal parece estar travando

Qual poderia ser o motivo desse comportamento?

P.S. As configurações da porta serial como saída com stty -F /dev/ttyS0 -a são:

speed 9600 baud; stty: /dev/ttyS0 line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = < undef>; eol2 = < undef>; swtch = < undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

    
por Srv19 18.04.2016 / 17:31

2 respostas

1

Se alguém usar o controle de fluxo de hardware RTS / CTS, a serial bloqueará a espera pelo RTS (Ready-To-Send). Você provavelmente deseja habilitar o controle de fluxo de software, desabilitando o CTS e o RTS:

stty -F /dev/ttyS0 -crtscts
    
por Colin Ian King 18.04.2016 / 18:58
0

Após uma longa pesquisa pelo possível motivo, eu passei pela solução. Isso teve a ver com um certo erro durante a inicialização do meu hardware no Linux. A solução foi manualmente (bem, a partir de um programa executado com elevação) definir um sinalizador que controlasse o nível de sinal para interrupções.

Depois disso, a porta serial começou a funcionar conforme o esperado.

Encontrei a solução aqui: fóruns do linux.org . Faz referência a superiotool como inspiração

    
por Srv19 01.12.2016 / 15:31