如何在gnu屏幕中切换CR/LF?

Pat*_*ick 23 linux serial-port gnu-screen tty

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

Line1
     Line2
          Line3
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何补丁来解决这个问题?

小智 23

onlcr是用于转换ø utgoing Ñ EW 分级表到Ç arriage ř eturns.

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

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

我有完全相同的问题(虽然使用picocom),我一直在谷歌上搜索并试图找到标准修复,但似乎没有人.有许多串行设备只有输出\n而且根本无法输出\r\n,我拒绝相信所有这些设备只属于两个Linux用户.是什么赋予了!?

  • 在picocom中,您可以将`--imap lfcrlf`添加到命令行选项中.这将从串行端口读取后将LF转换为CR + LF. (7认同)

小智 8

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

用法语法(在OSX上):

miniterm.py /dev/tty.usbserial-XXXXXX 115200
Run Code Online (Sandbox Code Playgroud)

将XXXXXX替换为系统中出现的任何设备.


Fré*_*idi 4

尝试stty onlcr

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

  • 有趣的是,看起来“screen”在启动时重置了它正在运行的 TTY。我不知道你是否可以在不修补和构建自己的二进制文件的情况下解决这个问题。 (3认同)
  • 是的,我尝试过这个,但没有成功。stty -F /dev/ttyS0 onlcr (2认同)