У меня есть последовательное устройство, установленное в режим raw с помощью stty -F /dev/ttyS0 raw
. Когда я пытаюсь отправить через него какие-либо данные с помощью echo 'hello' > /dev/ttyS0
, происходит следующее:
Другая сторона не получает никаких данных; Осциллограф показывает, что данные не отправляются
В течение примерно 40 секунд не появляется подсказка, кажется, что терминал зависает
В чем может быть причина такое поведение?
PS Настройки последовательного порта в качестве выхода с stty -F /dev/ttyS0 -a
:
скорость 9600 бод; stty: / dev / ttyS0 line = 0; intr = ^ C; выход = ^ \; стереть = ^ ?; убить = ^ U; eof = ^ D; eol =
; eol2 = ; swtch = ; начало = ^ Q; стоп = ^ S; susp = ^ Z; rprnt = ^ R; werase = ^ W; lnext = ^ V; флеш = ^ O; мин = 1; время = 0; -parenb -parodd cs8 hupcl -cstopb crelad clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opocrlnon -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon iexten echo echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
После долгого поиска возможной причины я произошел через решение. Это имело отношение к определенной ошибке во время инициализации моих аппаратных средств в соответствии с Linux. Решение было к вручную (хорошо, от прогона программы с повышением) устанавливает флаг, который управлял уровнем сигнала для прерываний.
После этого был установлен, последовательный порт начал работать как ожидалось.
я нашел решение здесь: форумы linux.org . Это ссылается superiotool как вдохновение
Если Вы будете использовать аппаратное управление потоками РТС/CTS затем, то сериал заблокирует ожидание (Готово отправляемого) РТС. Вы, вероятно, хотите включить программное управление потоком вместо этого путем отключения CTS и РТС:
stty -F /dev/ttyS0 -crtscts