Использование socat для прямого последовательного соединения

Цель состоит в том, чтобы подключиться кembedded использование устройстваserial интерфейс. До сих пор я использовал:

stty -F /dev/ttyS2 115200 cs8 ixoff
socat readline,history=/etc/socat.history /dev/ttyS2,raw,echo=0

И это работает отлично, но потом я обнаружил, что во времяsystem boot которые требуют от вас нажать одну клавишу без нажатияenter, а такжеreadline терпит неудачу там. Так что моя идея заключалась в том, чтобы связатьttyS2 вcons0, но потом я обнаружил несколько проблем, таких как неспособность выйти (ctr+c, ctr+q ctr+] и дажеesc не работает),backspace а такжеdelete не работают, буквы набираются дважды и т. д. Итак, после некоторых проб и ошибок я придумал следующее:

socat /dev/cons0,raw,echo=0,crnl /dev/ttyS2,raw,echo=0,escape=0x03,crnl
raw с обеих сторон позволяет одинkey press вызватьboot optionecho=0 с обеих сторон мешаетkey press удвоениеcrnl с обеих сторон мешаютenter key press удвоениеescape=0x03 позволяет мнеquit вещь нажатиемctr+c

Проблема в том, что когда я ухожуcons0 все чертовски, как будто оно каким-то образом сохранилоraw,echo=0,crnl Настройки. Я знаю, что эта проблема, вероятно, слишком специфична для моего сценария, но мне просто нужен простой способ посылать нажатия клавиш на последовательный порт, как сputty (который не доступен на моей платформе). я используюsocat потому что он очень легкий, не требует дополнительных библиотек и потому что показанные команды являются частью большого скрипта, который используетexpect.

Любые идеи и предложения с благодарностью.

Ответы на вопрос(2)

Ваш ответ на вопрос