通过TCP Connection远程访问串口

有时候我们需要从网络上的某台电脑访问网络中的一台嵌入式设备的串口调试底层代码,而这台嵌入式设备的串口接在网络中另一台电脑的串口上,比如我现在需要调试的硬件环境如下:

Win11系统的串口上连接这一个开发板的串口,

Win11系统中使用Vitualbox软件安装着一台Ubuntu 22.04的虚拟机,

需要在Ubuntu22.04中访问开发板的串口,以便调试用。

Virtualbox提供了多种方法可以在guest主机中虚拟一个串口从而与host主机的串口进行通讯,我试过两种方法,一是“主机设备”的端口模式,二是“TCP”的端口模式。两种模式都能够成功访问host主机的串口,但都有一个同样的问题:

host主机待机会导致guest主机中的串口设备无法找到(NOT_FOUND的错误),如果需要重新找到串口设备,就需要将guest主机休眠再恢复,比较浪费时间,而且并不是每次重新恢复guest主机后都能成功找到串口设备,会概率性失败,具体原因还不清楚。

此时采用网络访问开发板的串口就比较灵活了,因为当host主机待机并且恢复后,guest主机不需要休眠再唤醒,只需要重新建立网络连接就可以了。

可以采用相应的方法(硬件或者软件)实现这一功能。

本文提供一种有效且免费的方法(当然你也可以购买商业版的许可证,支持一下自主研发,;-))。这一方法使用的是如下两个软件工具:

1. CommFront公司的Serial-TCP工具,运行在Windows系统下;

2. socat命令,运行在Linux系统下。

第一步:

在host主机的Windows系统下,运行Serial-TCP工具(工具下载地址:Free Serial-TCP (More than just a Device Server) – CommFront,应该也有其他的工具的,如果host主机是Linux系统,应该只需要采用socat命令实现这一工具的功能(我还没有试过,待验证)),根据开发板的串口配置如下设置好相应的参数,电机activate按钮,启动串口和TCP端口的连接,这样host主机串口的数据就通过设置的TCP连接同步进行收发了:

第二步:

在guest主机的Ubuntu 22.04系统下,在其中一个窗口中输入如下命令:

socat TCP-CONNECT:192.168.1.100:1234 PTY,link=/tmp/foo-pty

再在另一个窗口中输入如下命令,就可以访问开发板的串口了:

screen /tmp/foo-pty

效果如下:

参考网站:

virtual box串口设置-蒲公英云1、断开   有设备但是不连接,就像台式机一般都有串口但是没有接设备2、管道  pipe/ 需要使用软件去接收数据,暂时没有找到对应的接收工具3、物理设备icon-default.png?t=N7T8https://www.dandelioncloud.cn/article/details/1598291878263078913

Serial port in VirtualBox – Maciej BlizińskiWhile installing Solaris on VirtualBox on Linux host, I was slightly annoyed by the graphical interface. I had to go out of my screen session, use mouse, click the virtual machine window, let it steal the input and then press right ctrl key to go out, and use mouse again to go back to my screen…icon-default.png?t=N7T8https://automatthias.wordpress.com/2008/09/13/serial-port-in-virtualbox/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值