使用Virtual Serial Port Driver+com2tcp或tcp2com进行两台电脑的串口通讯
问题说明
最近想进行串口通讯的一个测试,一开始在一台电脑上使用Virtual Serial Port Driver创了虚拟串口,然后两个程序连接这个虚拟串口做通讯。
现在我希望在两台电脑之间进行串口通讯。
解决方案
使用两台电脑进行串口通讯测试,关于这种方法有以下说明:
- 不能直接拿一个双头usb线直接把两个电脑连接在一起进行串口通讯,这种方法不行;
- 方案一:两台电脑分别连接usb转ttl设备,两个usb转ttl设备连接,可以进行串口通讯,这种方法需要额外的硬件设备,拓扑图如下所示
- 方案二:单个电脑使用usb转ttl设备进行回环通讯,具体实现方式我没有研究。
- 方案三:使用网线将两个电脑连接在一起,然后使用com2tcp(tcp2com)工具将com口映射到网口,实现串口通讯。
本教程介绍方案三的具体方法。
方案三具体操作流程
网上教程
之前参阅网上的一些教程,例如教程1,教程2,他们的方法我没有尝试成功,而我是使用一种很奇怪的方法通讯成功了。
软件安装
本例使用了两个软件,Virtual Serial Port Driver和com2tcp,Virtual Serial Port Driver的下载地址我不记得了请大家自行寻找。
下载安装com2tcp之后,其实包括了两个软件,分别是com2tcp和tcp2com,这两个软件在本例中都被使用。
很多教程使用的是com0com而不是Virtual Serial Port Driver来建立虚拟串口,那也是可以的。
此外,还需要任意的串口通讯助手软件来验证是否通讯成功。
拓扑图
官方教程给出的拓扑图如下所示,这种方法我没有尝试成功。
本例的拓扑图,这个是我瞎试出来发现可以用,具体原理是什么有待后面补充。
此外, 我A电脑是win11,B电脑是win10,证明了这种方法在两个系统上均可正常运行。
准备工作
- 使用一根网线将两个电脑连接。
- 将两个电脑的ip地址设置在同一网段,例如,我的A电脑是192.168.1.40,B电脑是192.168.1.41,两个电脑子网掩码都是255.255.255.0。设置ip地址的方法为:控制面板——查看网络状态和任务——以太网——属性——选择“Internet协议版本4(TCP/IP)”然后点击属性——然后进行设置。
com2tcp和tcp2com操作
在A电脑上,打开Virtual Serial Port Driver,创建com1和com2两个虚拟串口,如下所示
然后,在A电脑上,双击打开TCP2COM软件,然后进行如下设置,然后点击Connect。
然后打开电脑B,双击打开COM2TCP软件,进行如下设置后点击Connect(注意这里的Remote IP是A电脑的ip地址)。
进行如上操作后,在看A电脑的Virtual Serial Port Driver,可以看到此时COM2后面有了串口通讯参数的显示。
使用串口助手进行验证
在A电脑上打开串口助手,端口选择COM1,打开串口,在B电脑上打开串口助手,端口选择COM3,打开串口,即可实现两台电脑的串口通讯,如下图所示
A电脑的串口助手
B电脑的串口助手:
到此为止,使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯成功实现。
方案三存在的问题
数据错误
我使用A电脑给B电脑发送数据时,发送的一帧数据是
0x01 0x03 0x06 0x12 0x34 0x56 0x78 0x9A 0xBC 0x69 0x43
然而收到的却是
0x01 0x03 0x06 0x12 0x34 0x56 0x78 0x3F 0x3F 0x69 0x43
目前没有找到原因
通讯延时
理论上来说,一帧11字节数据在15200-E-8-1
的情况下,一帧数据传输时间约为1ms,然而,使用这种方法实际测试,一帧数据传输时间约为300ms,猜测原因是这种方法由于经过了TCP/IP这个媒介,多了一道程序,在这个环节中产生了较大的延迟。