我正在使用screen从串口控制台读取文本。问题是输出似乎只有换行符\n而没有回车符\r,因此显示的效果如下...
Line1
Line2
Line3
我想知道是否有任何补丁可以修复这个问题?
我正在使用screen从串口控制台读取文本。问题是输出似乎只有换行符\n而没有回车符\r,因此显示的效果如下...
Line1
Line2
Line3
我想知道是否有任何补丁可以修复这个问题?
onlcr
是用于将传出的换行符翻译为回车符。
stty -F /dev/ttyS0 inlcr
将传入的换行符翻译为回车符。您可以在启动 screen 后从另一个终端运行此命令,以避免任何屏幕可能在启动时进行的重置。然而,这只会改变问题。您将仅获得回车符而没有换行符。
需要一种选项,以使传入的换行符附加一个回车符,从而使终端接收到 \n\r
,这应该是串行设备应该首先输出的内容。似乎有一个 onlret
选项可用于传出数据,但在我们需要的情况下没有 inlret
选项。
我也遇到了完全相同的问题(不过我是使用 picocom),已经搜索了几天,试图找到标准解决方法,但似乎没有人有一个。有许多串行设备只输出 \n
,根本无法输出 \r\n
,我拒绝相信所有这些设备都属于只有两个 Linux 用户。发生了什么!?
stty
命令,会出现 Device or resource busy
的错误提示。 - MRuleminiterm.py /dev/tty.usbserial-XXXXXX 115200
用设备在系统中显示的任何名称替换XXXXXX。
miniterm.py
。请注意,我必须运行sudo python /path/to/miniterm.py ...
。 - Ari$ python3 -m serial.tools.miniterm <port> <speed>
(参考pyserial工具文档)- 或许可以编辑答案。 - undefinedstty onlcr
命令。根据man文档,该命令可将换行符转换为回车符/换行符组合以进行输出,这似乎是您所需要的。screen
在启动时会重置它正在运行的 TTY。我不知道是否可以避免这种情况,除非打补丁并构建自己的二进制文件。 - Frédéric Hamidistty -F /dev/ttyACM0 -icrnl
。因为串行通信默认将CR转换为NL,在执行该命令后会将其重新设置回去。请注意减号前缀 icrnl
。
stty
设置?不过我觉得很奇怪,因为你是在“读取”时看到的。 - ninjaljstty
指示终端将换行视为换行和回车。否则,我们可以看到终端移动到下一行,但不会将索引指针返回到行的开头,就像如果\r
与\n
一起发送一样。 - sherrellbc