Ulr*_*rik 6 linux bash serial-port socat
目标是embedded使用serial接口连接到设备。到目前为止,我已经使用了:
stty -F /dev/ttyS2 115200 cs8 ixoff
socat readline,history=/etc/socat.history /dev/ttyS2,raw,echo=0
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但后来我发现在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
Run Code Online (Sandbox Code Playgroud)
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.
任何想法和建议都非常感谢。
正如奥斯汀·菲利普斯所说,你可以用它stty sane来恢复......
...但更好的是,您(可能)可以将其附加到您的 socat 命令中,并在使用 ctrl-c 退出时自动socat xxxxx ; stty sane恢复。