com0com+hub4com虚拟串口对,读写com15口的同时能够做到监听此端口
使用 com0com
创建的“虚拟串口对”。
核心概念:虚拟串口的“成对”性
com0com
的工作原理不是创建一个个独立的端口,而是创建成对的、互相连接的端口,就像一根虚拟的交叉线。
- 当您创建一个
COM16 <=> COM17
的端口对时: - 任何发送到
COM16
的数据,都会立刻从COM17
出来。 - 任何发送到
COM17
的数据,都会立刻从COM16
出来。
hub4com
打开 COM16
,是为了持有这根虚拟电缆的一端。您的主程序不应该再去抢夺这一端,而应该去连接这根电缆的另一端,也就是 COM17
!
这就像两个人用一对对讲机通话,hub4com
拿着A对讲机(COM16
),您的主程序就必须拿起B对讲机(COM17
)才能和它通话。您不能和 hub4com
去抢同一个A对讲机。
正确的、最终的架构图
让我们重新绘制这个蓝图,这次保证它是完全正确的:
+-----------------+| hub4com.exe |+-----------------+/ | \/ | \/ | \
+------------------+ +------------+ +------------+ +------------+
| 物理设备 | <=> | \\.\COM15 | | \\.\COM16 | | \\.\COM18 |
+------------------+ +------------+ +------------+ +------------+^ ^| | (com0com 虚拟电缆)v v+------------+ +------------+| \\.\COM17 | | \\.\COM19 |+------------+ +------------+| || |+-----------------+ +-----------------+| 您的主程序 | | 您的监听程序 |+-----------------+ +-----------------+
解读这个正确的架构:
hub4com
作为中心,连接了三个端口:COM15
(物理设备)COM16
(虚拟端口对A的一端)COM18
(虚拟端口对B的一端)
- 您的主程序 连接到
COM17
,也就是虚拟端口对A的另一端。 - 您的监听程序 连接到
COM19
,也就是虚拟端口对B的另一端。
当您的主程序向 COM17
发送数据时,数据会通过虚拟电缆出现在 COM16
,被 hub4com
接收。hub4com
再将其广播给 COM15
和 COM18
。监听程序连接在 COM19
,就能收到从 COM18
传来的数据。
终极解决方案:完整操作步骤
请严格按照以下步骤操作,这将是最终的正确方案。
第一步:彻底重置 com0com
配置
为了避免任何混淆,我们从头开始。
- 以管理员身份运行
com0com
的图形化设置工具setupg.exe
。 - 在窗口中,选中所有现有的端口对,然后点击 “Remove” 按钮,将它们全部删除。确保列表是空的。
- 现在,我们要创建两个全新的、不相关的端口对。
- 创建第一对 (给主程序用):
- 在
CNCA0
处输入COM16
。 - 在
CNCB0
处输入COM17
。 - 点击 “Add Pair” 按钮。
- 在
- 创建第二对 (给监听器用):
- 在
CNCA1
处输入COM18
。 - 在
CNCB1
处输入COM19
。 - 点击 “Add Pair” 按钮。
- 在
- 创建第一对 (给主程序用):
- 完成后,您的
setupg.exe
窗口看起来应该像这样:CNCA0 <-> CNCB0 PortName0=COM16,PortName1=COM17 CNCA1 <-> CNCB1 PortName0=COM18,PortName1=COM19
- 点击 “Apply” 并关闭窗口。现在您的虚拟端口环境已经完美设置好了。
第二步:运行 hub4com
(命令不变)
- 以管理员身份打开命令提示符 (CMD)。
- 运行我们之前确认过的最简单的命令,它连接的是物理口和每对虚拟端口的一端。
"C:\Program Files (x86)\com0com\hub4com.exe" --baud=115200 \\.\COM15 \\.\COM16 \\.\COM18
hub4com
会成功启动并打开这三个端口,然后等待。不要关闭这个窗口。
第三步:连接您的程序 (最关键的修正!)
现在,启动您的应用程序,并连接到配对的另一端!
- 启动您的主程序,在它的串口设置里,选择并连接
COM17
! - 启动您的监听程序,在它的串口设置里,选择并连接
COM19
!
这一次,当您的主程序尝试连接 COM17
时,它会发现 COM17
是空闲的,并且可以成功连接。hub4com
正在 COM16
的另一头等着它。同样,监听程序也能成功连接 COM19
。
至此,所有部分都已正确就位,您的数据监听系统将完美运行。