用Delphi拦截串口数据

3
我知道如何使用TComPort进行串口通信,但是我希望能够查看虚拟(USB<=>RSR232)COM端口中进出的数据,而不会中断传输并(显然)打开端口。更准确地说,我想从USB GPS接收器中查看GPS数据。 问题在于我需要同时使用两个应用程序来使用相同的数据:我的Delphi应用程序和导航软件。另一个选择是使用带有欧洲地图(OpenStreetMap也可以,但找不到好的汽车导航软件)且具有良好API的高质量PC导航软件,该API能够返回GPS位置。
欢迎提出任何想法! :)
谢谢! G.
3个回答

2
使用com0com设备驱动程序与hub4com一起使用。
文档中得知:
与com0com驱动程序一起使用,hub4com可以:
- 通过多个不同的应用程序处理来自单个真实串行设备的数据和信号。例如,几个应用程序可以共享来自一个GPS设备的数据; 示例:

GPS hub


You have a GPS device that connected to your computer via a physical COM1 port and you'd like to handle its data by two GPS applications. You can do it this way:

  1. With the com0com's Setup Command Prompt create COM5<->CNCB0 and COM6<->CNCB1 virtual COM port pairs (see com0com's ReadMe.txt for more info). For example:

    command> install 0 PortName=COM5 -
    command> install 1 PortName=COM6 -
    
  2. Start the hub4com.exe on COM1, CNCB0 and CNCB1 ports:

    hub4com \\.\COM1 \\.\CNCB0 \\.\CNCB1
    

    It will send data received from COM1 port to CNCB0 and CNCB1 ports and it will send data received from CNCB0 port to COM1 port.

  3. Start the GPS applications on COM5 and COM6 ports.


是的,这似乎是最合理的集成到我的应用程序中,因为使用第三方应用程序只记录串行数据需要处理文件或使用winAPI来捕获数据。现在我只需要找到一种方法来使无人值守/静默安装和配置与我的应用程序一起。 - Grzesiek My
1
@Grzesiek 你可以看一下http://www.bermione.be/technology/handle-gps-data-by-two-gps-apps-simultaneously/,了解如何进行静默安装、配置和启动的示例。 - Tom Brunberg
它应该解决我的问题,但我想知道是否有一种方法可以直接从Delphi代码中完成所有操作?嗯,肯定有,但是怎么做呢?如何编写Delphi串口嗅探器应该是问题吗?还是我应该为此提出一个新问题? - Grzesiek My
是的,请提出一个新问题。 - LU RD

1

您可以使用Mark Russinovich的PortMon实用程序


最近我在使用PortMon来捕获一个电源的RS-232数据,这个电源是我们在Delphi应用程序中使用的。通过查看供应商示例程序发送给电源的内容,我们能够在我们的Delphi应用程序中模拟这些命令。效果很好。 - AlainD
这是一个边缘化的仅链接回答。您应该扩展您的答案,包括尽可能多的信息,并仅将链接用于参考。 - Ferrybig

-1

这是一个边缘仅链接答案。您应该扩展您的答案,包括尽可能多的信息,并仅将链接用于参考。 - Ferrybig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接