我正在使用屏幕从串行控制台读取文本。问题是输出似乎只有换行符 \n 而没有回车符 \r,所以显示看起来像这样......
Line1
Line2
Line3
我想知道有没有补丁可以解决这个问题?
我正在使用屏幕从串行控制台读取文本。问题是输出似乎只有换行符 \n 而没有回车符 \r,所以显示看起来像这样......
Line1
Line2
Line3
我想知道有没有补丁可以解决这个问题?
onlcr
用于将外出的新线路翻译成车厢 回报。
stty -F /dev/ttyS0 inlcr
将传入的换行符转换为回车符。您可以在启动屏幕后从另一个终端运行它,以避免在启动时重置该屏幕。然而不幸的是,这只会改变问题。然后,您将仅获得回报,而没有换行符。
需要一个选项来将返回附加到传入的换行符,以便终端接收\n\r
,这是串行设备首先应该输出的内容。似乎有一个onlret
选项可以对传出数据执行此操作,但inlret
在这种情况下我们似乎不需要任何选项。
我有完全相同的问题(虽然使用 picocom),而且我一直在谷歌上搜索几天试图找到标准修复,但似乎没有人有。有许多串行设备只能输出\n
,根本不能输出\r\n
,我不相信它们都只属于两个 linux 用户。是什么赋予了!?
如果您使用 pyserial 附带的miniterm.py程序,它会将换行符解释为 crlf。它不是功能最全的终端仿真器,但为了与简单的串行设备交互,它可以完成工作。
使用语法(在 OSX 上):
miniterm.py /dev/tty.usbserial-XXXXXX 115200
将 XXXXXX 替换为系统上出现的任何设备。
试试stty onlcr
。
手册页说它将在输出时将换行符转换为回车符/换行符对,这似乎是您所需要的。
在我的情况下工作:stty -F /dev/ttyACM0 -icrnl
因为序列被隐式设置为将 CR 转换为 NL。此命令将其设置回来。注意前面的减号icrnl
。