31

我正在使用屏幕从串行控制台读取文本。问题是输出似乎只有换行符 \n 而没有回车符 \r,所以显示看起来像这样......

Line1
     Line2
          Line3

我想知道有没有补丁可以解决这个问题?

4

4 回答 4

29

onlcr用于将外出线路翻译成车厢 回报

stty -F /dev/ttyS0 inlcr传入的换行符转换为回车符。您可以在启动屏幕后从另一个终端运行它,以避免在启动时重置该屏幕。然而不幸的是,这只会改变问题。然后,您将仅获得回报,而没有换行符。

需要一个选项来将返回附加到传入的换行符,以便终端接收\n\r,这是串行设备首先应该输出的内容。似乎有一个onlret选项可以对传出数据执行此操作,但inlret在这种情况下我们似乎不需要任何选项。

我有完全相同的问题(虽然使用 picocom),而且我一直在谷歌上搜索几天试图找到标准修复,但似乎没有人有。有许多串行设备只能输出\n,根本不能输出\r\n,我不相信它们都只属于两个 linux 用户。是什么赋予了!?

于 2012-03-19T23:24:47.950 回答
12

如果您使用 pyserial 附带的miniterm.py程序,它会将换行符解释为 crlf。它不是功能最全的终端仿真器,但为了与简单的串行设备交互,它可以完成工作。

使用语法(在 OSX 上):

miniterm.py /dev/tty.usbserial-XXXXXX 115200

将 XXXXXX 替换为系统上出现的任何设备。

于 2014-01-29T18:25:35.667 回答
4

试试stty onlcr

手册页说它将在输出时将换行符转换为回车符/换行符对,这似乎是您所需要的。

于 2011-10-18T20:01:42.167 回答
3

在我的情况下工作:stty -F /dev/ttyACM0 -icrnl

因为序列被隐式设置为将 CR 转换为 NL。此命令将其设置回来。注意前面的减号icrnl

于 2017-04-20T15:30:06.147 回答