SecureCRT 和 MobaXterm 用于串口收发时数据异常(无法成功发送)——更改换行符解决
目录
【问题】
【解决方法】
【关于发送失败时为什么会显示自己发送的消息】
【让SecureCRT分离显示发送框和接收框】
【换行符概述】
【问题】
SecureCRT 和 MobaXterm 在嵌入式Linux领域使用很多,主要用于ssh和serial登录, 但是最近在用于单片机串口收发时发现功能异常, 用正点原子的 XCOM 可以成功对单片机设备串口进行收发数据, 但是使用这两个软件发送窗口数据后仅仅是回显了我发送出去的命令,如下图:
排查一圈后发现问题主要在于:换行符。不同操作系统的换行符不同,那么主要用于该平台的软件,它的默认换行符一般为主用平台的换行符。如XCOM的默认换行符是Windows所使用的CR & LF, 而SecureCRT的默认换行符是Linux所使用的LF(Line Feed), MobaXterm不确定。
先说解决方法:
【解决方法】
SecureCRT:
在Options—Session Option—Terminal—Emulation—Modes下勾选下图的2个New line mode
MobaXterm:
在鼠标右键—Change terminal settings...下视情况勾下图的两个选项(或其中之一)。
注意:MobaXterm在打开串口界面后,需要重启或复位开发板重新建立连接
SecureCRT成功发送窗口指令并收到回复:
参考:
终端输出换行异常:Security CRT 和 mobaxterm分别该怎么设置_mobaxterm回车-CSDN博客
MobaXterm配置_mobaxterm换行-CSDN博客
【关于发送失败时为什么会显示自己发送的消息】
在MobaXterm中有一个选项:Local echo,可选Auto、Force on、Force off
作用:控制是否在本地显示输入的字符
Auto:由远程服务器决定(默认)。
Force on:强制本地显示输入(即使远程服务器也回显,可能导致重复字符)。
Force off:强制关闭本地回显(需依赖服务器回显,否则看不到输入)。
在友善串口助手(官网链接)中,可以设置是否在接收框中显示发送内容,如下:
在其他串口软件中应该也有类似的功能。
【让SecureCRT分离显示发送框和接收框】
勾选View—Command Window,即可出现下面白色背景的发送框
【换行符概述】
LF: Linefeed,对应ASCII中转义字符\n,表示换行
CR: Carriage Return,对应ASCII中转义字符\r,表示回车
CR&LF:Carriage Return & Linefeed,\r\n,表示回车并换行
NR&LF: 根据系统自动调整,不建议使用
操作系统 | 换行符 | 说明 |
---|---|---|
Unix/Linux/macOS(现代) | LF (\n ) | 纯 LF 作为换行符 |
Windows | CR+LF (\r\n ) | 沿用 DOS 和早期终端的习惯 |
Classic Mac OS(已淘汰) | CR (\r ) | 已被 macOS(Unix-based)取代 |
更详细的介绍见:
换行符 CR+LF 的解释与应用-CSDN博客
Windows和Linux的换行符CRLF/LF(\r\n,\n)_vim 显示{cr}{lf}-CSDN博客