需求
命令行是操作SylixOS等系统的必备人机交互界面,其中最常见的就是基于串口的命令行。尤其是对于没有显示器键盘,没有网络telnet的系统,串口命令行便是人机操作的唯一通道。基于串口命令行不仅可以执行各种命令,也可以借助xmodem,ymodem等协议进行文件传输。
实际开发过程中,目标板一般都在电脑旁边,可以直接通过串口线或USB转串口线连接目标板和电脑。但有时调测人员和目标设备不在同一个地方,就只能通过远程桌面方式进行远程调试。远程桌面需要传输的数据量较多,对带宽有一定要求,可能会比较卡动。
那么,有没有方法不使用远程桌面,而是直接实现串口命令行的远程访问呢?
答案是肯定的,而且早就有前人实现,并提供了相关工具。
原理
实现原理就是串口转网络,通过网络进行远距离传输,可以是局域网内也可以在广域网内。然后再把网络转成串口,命令行软件(SecureCRT,Xshell,超级终端等)连接这个远程串口和连接本地串口在协议上完全是没区别的,但速度上可能会有降低。
这里我们不关心各种软硬件工具技术上是如何实现的,只讲清楚用哪些软件如何操作即可实现远程串口。
先列出几个重要的软件说明及下载地址,这些软件都是笔者在试用过大量类似软件后挑选出的,其他软件不是功能不全,就是安装报错,要不就是收费等等,总之是不好用。
第一款软件,TCP2ComV1.1.5.1.exe
这是网友开发的一款网络转串口软件工具,他能将一个物理串口绑定到指定的TCP服务端或客户端。
此软件免费使用且免安装,下载需要些CSDN积分,下载地址:TCP2ComV1.1.5.1免费好用的串口转TCP工具
第二款软件,USR-VCOM_V3.7.2.525_Setup.exe
这是有人科技出的一款虚拟串口软件,它能创建虚拟串口并绑定指定的TCP服务端或客户端。此软件免费但需要安装,下载地址:有人虚拟串口软件 V3.7.2.529
这两个软件的共同点是都免费,都可绑定串口到TCP接口,不同点是TCP2Com绑定物理串口,USR-VCOM创建并绑定虚拟串口。
第三个是内网穿透工具,量子互联。也有很多免费的内网穿透工具或服务,但功能受限,网速较慢,连接不稳定,或者操作繁琐。不想折腾这些就直接TB找了这个收费的,一个月10块钱,简单好用。
至于命令行软件,SecureCRT,Xshell,超级终端等都是可以的,我习惯用SecureCRT。
操作
假设我在上海(对,就是疫情特别严重时的上海),设备在北京,只有一个串口命令行可用来调测,使用上面的工具改如何连接呢?
- 设备命令行串口连接本地主机。
- 在本地主机上启动TCP2Com软件,绑定命令行串口到TCP服务端
127.0.0.1:8700
,注意IP地址要设为本机地址(localhost,127.0.0.1)。 - 设置内网穿透,为TCP服务端映射出外网域名和端口号
xxxx.cn:10430
。 - 在远程电脑上启动USR-VCOM,创建虚拟串口
COM11
并绑定到TCP客户端。客户端连接的服务端地址即是xxxx.cn:10430
,即内网穿透后的由TCP2Com创建的服务端。TCP客户端和服务端会自动进行连接,如果异常断开也会自动重连。 - 在远程电脑上使用SecureCRT连接虚拟串口
COM11
。此时就可以用上海电脑上的SecureCRT命令行界面操控远在北京的设备了。
注意:通过SecureCRT的telnet直接连接xxxx.cn:10430
也是可通的,也能对命令行进行基本的收发控制。但因为SecureCRT对此命令行通信是按telnet协议操作的,一些特殊操作(如:Ctrl+C ,xmodem文件传输等)就会和本身逻辑是串口协议实际情况不符,造成操作异常。
这里使用量两个网络转串口工具,因为设备必须连接硬件串口,而SecureCRT要连接虚拟串口。
如果只用TCP2Com软件也可以也可以按下图拓扑实现。
当然如果要是有一个网络转串口工具既可以绑定硬件串口也可以创建和绑定虚拟串口,那就更方便了。