com2com一个将远端串口数据转发到本地的工具
开发工具 vs2022
开发环境 .NET 8.0
支持跨平台
Gitee
Github
下载最新版本
系统结构图
运行效果图
下图中的两个串口调试工具,仅为演示效果使用,实际场景中一个是你的设备,另一个是你的应用程序。
开发初衷
有一台串口设备在客户那边,客户接在他本地的工控机上,我这边远程开发调试。开始是模拟数据包开发的,但感觉这样仍然不太方便。所以就想找一个工具能够将设备的数据转发到我这里,方便开发。
暂时没有找到合适的工具,所以就自己临时开发一个,方便自己使用,目前基本满足使用,后期再慢慢完善。
使用方法
- 将 com2com.exe 复制到设备连接的电脑主机上,和本地开发机,各一份。
- 设备连接的电脑(称为 A 主机),能够用串口工具正常通讯。
- 开发主机(称为 B 主机),需要使用虚拟串口工具,模拟出一对串口。比如 com1 和 com101。
- 在 A 主机上运行
com2com.exe portName=com101 baudRate=9600 sendKey=aaaaaaa rcvKey=bbbbbb mqttServer=broker.emqx.io
,COM1 是和设备通讯的串口号,9200 是波特率。后面的 a,b 为密钥对。前面的 a 表示自己,后面 b 表示要发给谁。 - 在 B 主机上运行
com2com.exe portName=com1 baudRate=9600 sendKey=bbbbbb rcvKey=aaaaaaa mqttServer=broker.emqx.io
,此时主机打开 com1 串口,就可以正常通讯了。主机可以认为 com1 接的就是远程的设备。
原理介绍
利用 mqtt 服务器做中转,设备侧 A 主机收到的数据发送到 mqtt 服务器上。B 主机通过订阅主题,可以收到相应的数据,再通过虚拟串口发给 B 主机的串口上。
公网免费开放的 mqtt 服务器
broker.mqttdashboard.com
broker.emqx.io
使用示例
分别在开发机和设备主机执行下面的指令
开发机
com2com.exe portName=com101 baudRate=9600 sendKey=aaaaaaa rcvKey=bbbbbb mqttServer=broker.emqx.io
设备主机
com2com.exe portName=com1 baudRate=9600 sendKey=bbbbbb rcvKey=aaaaaaa mqttServer=broker.emqx.io
参数说明
com2com.exe 是主程序,以下参数大小写不能改变,各参数是间用空格分开。
参数 | 说明 | 示例 |
---|---|---|
portName | 串口号,以com开头,比如com1 | portName=com101 |
baudRate | 串口波特率 | baudRate=9600 |
sendKey | 发送密钥 | sendKey=aaaaaaa |
rcvKey | 接收密钥 | rcvKey=bbbbbb |
mqttServer | mqtt服务器地址 | mqttServer=broker.emqx.io |
mqttUserName | mqtt登录用户名 | mqttUserName=test |
mqttPwd | mqtt登录密码 | mqttPwd=test@88888 |
发送密钥和接收密钥是两个密钥对,必须成对出现。在设备侧是 a和b,在开发机侧就是 b和a。字符串随意起。但是最好是唯一的,如果其他人也使用同样的密钥对,就也能接收到你的数据了。