在我的场景中,我有4台设备通过RS232连接将串行数据发送到我的PC。我还使用硬件将所有4个数据流收集到一个USB连接中。
现在,此设置在Windows中创建了4个COM端口,这是我的问题,因为我有一个现成的软件从读取 串口。
我正在尝试创建一个小型的C ++软件来从我的4个RS232串口端口获取数据包并将流转发到一个串口。交替数据包肯定会起作用。到目前为止,我已经知道了,我需要创建一个虚拟串行端口来编写序列化流,并确保现成的软件从中读取。现在我还没有对此进行过测试,但我认为如果没有桥接器,我将无法做到这一点,因为我无法保持端口打开以编写序列化数据并使用现成的软件打开它来读取数据
我当时要做的是
我的问题
考虑下面的代码示例,
这是一个应该执行此操作的天真代码:
unsigned char receiveBuffer[PACKET_LENGTH];
OpenCOMPort(COMport_A);
OpenCOMPort(COMport_B);
OpenCOMPort(COMport_C);
OpenCOMPort(COMport_D);
OpenCOMPort(COMport_TARGET); // This is the virtual COM Port to write to
while(true) {
packetReadFromDevice(COMport_A);
packetWriteToDevice(*(receiveBuffer), COMport_TARGET); // Write COM A data
packetReadFromDevice(COMport_B);
packetWriteToDevice(*(receiveBuffer), COMport_TARGET); // Write COM B data
packetReadFromDevice(COMport_C);
packetWriteToDevice(*(receiveBuffer), COMport_TARGET); // Write COM C data
packetReadFromDevice(COMport_D);
packetWriteToDevice(*(receiveBuffer), COMport_TARGET); // Write COM D data
if(somethingHappens)
break;
}
closeCOMPort(COMport_A);
closeCOMPort(COMport_B);
closeCOMPort(COMport_C);
closeCOMPort(COMport_D);
closeCOMPort(COMport_TARGET);