# com2com **Repository Path**: bonn_admin/com2com ## Basic Information - **Project Name**: com2com - **Description**: 将一个电脑本地串口设备的数据转发到另一个电脑的串口上,实现远程接收串口数据。 - **Primary Language**: C# - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2023-05-20 - **Last Updated**: 2025-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # com2com 开发工具 vs2022 开发环境 .NET 8.0 支持跨平台 [Gitee](https://gitee.com/bonn_admin/com2com) [Github](https://github.com/bonn-admin/com2com) [下载最新版本](https://gitee.com/bonn_admin/com2com/releases/latest) ## 系统结构图 ## 运行效果图 下图中的两个串口调试工具,仅为演示效果使用,实际场景中一个是你的设备,另一个是你的应用程序。 # 开发初衷 有一台串口设备在客户那边,客户接在他本地的工控机上,我这边远程开发调试。开始是模拟数据包开发的,但感觉这样仍然不太方便。所以就想找一个工具能够将设备的数据转发到我这里,方便开发。 暂时没有找到合适的工具,所以就自己临时开发一个,方便自己使用,目前基本满足使用,后期再慢慢完善。 # 使用方法 1. 将 com2com.exe 复制到设备连接的电脑主机上,和本地开发机,各一份。 2. 设备连接的电脑(称为 A 主机),能够用串口工具正常通讯。 3. 开发主机(称为 B 主机),需要使用虚拟串口工具,模拟出一对串口。比如 com1 和 com101。 4. 在 A 主机上运行 `com2com.exe portName=com101 baudRate=9600 sendKey=aaaaaaa rcvKey=bbbbbb mqttServer=broker.emqx.io`,COM1 是和设备通讯的串口号,9200 是波特率。后面的 a,b 为密钥对。前面的 a 表示自己,后面 b 表示要发给谁。 5. 在 B 主机上运行 `com2com.exe portName=com1 baudRate=9600 sendKey=bbbbbb rcvKey=aaaaaaa mqttServer=broker.emqx.io`,此时主机打开 com1 串口,就可以正常通讯了。主机可以认为 com1 接的就是远程的设备。 # 原理介绍 利用 mqtt 服务器做中转,设备侧 A 主机收到的数据发送到 mqtt 服务器上。B 主机通过订阅主题,可以收到相应的数据,再通过虚拟串口发给 B 主机的串口上。 公网免费开放的 mqtt 服务器 ```bash broker.mqttdashboard.com broker.emqx.io ``` # 使用示例 分别在开发机和设备主机执行下面的指令 开发机 ```bash com2com.exe portName=com101 baudRate=9600 sendKey=aaaaaaa rcvKey=bbbbbb mqttServer=broker.emqx.io ``` 设备主机 ```bash 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。字符串随意起。但是最好是唯一的,如果其他人也使用同样的密钥对,就也能接收到你的数据了。