我正致力于通过COM在C ++中为ESPA 4.4.4发送数据。连接在COM端口上的程序B通常会检测程序A是否发送数据。为了测试这个,我创建了两个虚拟端口对与com0com,COM1 / CNCB1,COM2 / CNCB2。使用hub4com,我解释了here
但是当我尝试用A或B连接到COM1或COM2时,由于端口已经在使用,因此无法完成。
所以我的问题是我想要两个端口进行通信。 - >第一个问题:教程中的架构是否适合处理。我的意思是可以处理COM1 / CNCB1和COM2 / CNCB2吗? - >第二个问题:连接两个端口的命令是“hub4com选项\。\ input_COM \。\ output_COM1”\。\ output_COM2“...... 所以我试着这样做:“hub4com -baud = 9600 \。\ COM1 \。\ COM2”。该命令有效,我得到以下返回:
Open("\\.\COM1", baud=9600, data=8, parity=no, stop=1, octs=off, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK
Open("\\.\COM2", baud=9600, data=8, parity=no, stop=1, octs=off, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK
Route data COM1(0) --> COM2(1)
Route data COM2(1) --> COM1(0)
Route flow control COM1(0) --> COM2(1)
Route flow control COM2(1) --> COM1(0)
Started COM1(0)
Started COM2(1)
因此建立了道路并且数据应该进行通信。但我无法使用我的程序连接COM端口。所以我尝试连接CNCB1和CNCB2。我可以连接COM端口。但我不知道数据是否已经到来。
- >第三个问题:有没有可靠的方法来了解COM1是否向COM2发送数据?只需要一点点软件就可以测试架构:)
答案 0 :(得分:1)
应该没问题,他们只是名字。如果你想让一个人处于中间类型的应用程序中,你希望数据像...一样流动(ProgramA - > COM1 - > CNCB1 - > ProgramB - > COM2 - > CNCB2 - >目的地。)因此,ProgramB应该为CNCB1和COM2打开端口。
我不太熟悉hub4com给你答案。听起来hub4com正在打开端口,你的应用程序也试图打开端口。只有一个应用程序可以访问端口。
听起来你需要一个端口监视器。 http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx
答案 1 :(得分:0)
Portmon已停止使用,在最近的(x64)Windows版本中无效...
现在,在Windows中,您可以使用这个不错的程序:Serial-Lab
我遇到了类似的问题,并将com0com与上面提到的SerialLab结合使用。 安装com0com后,它创建了COM3和COM4端口,我用这两个进行测试。在你的情况下,似乎你有com0com创建的COM1和COM2?
在我的(Java)应用程序中,我然后将数据发送到COM4,而在SerialLab中我连接到COM5,我能够读取从我的Java应用程序发送的数据。您也可以从SerialLab发送数据,这样您就可以测试各个方向的模拟通信。
另一个类似的计划也是MyTerm。