串行端口重定向或拆分

时间:2009-08-27 18:40:43

标签: c# c++ c serial-port communication

我正在寻找有关如何进行串口重定向或端口拆分的书籍或代码示例。我编写了很多com端口应用程序,并希望编写一个监视器应用程序,它允许我观察应用程序和设备之间的串行端口。

所以我希望能够将串口重定向到另一个端口,这样我就可以监控端口之间的数据流。

我理解在某些情况下必须在内核级别完成。 (在USB情况下)

我在C#中使用system.IO.Ports编写了监视器应用程序。如果我必须调用一个很好的C ++ / C程序集。

由于

4 个答案:

答案 0 :(得分:3)

您可能会发现Mark Russinovich的PortMon对您的工作很有帮助,但它没有提供源代码。它将记录与端口相关的所有系统调用,并具有广泛的过滤功能,以使该日志保持在可管理的大小。

编辑: PortMon的工作原理是在运行时将内核模式设备驱动程序注入系统。该驱动程序通过将过滤器驱动程序插入堆栈来挂钩它想要监视的端口。该过滤器驱动程序将通过它的所有IRP报告给应用程序。这不是一个容易实现的任何延伸,它实际上无法在用户模式下完成。

Windows DDK确实有端口过滤器驱动程序的示例代码,但从样本到有用的东西还有很多工作要做。

可能解决的纯用户模式解决方案是使用两个额外的串行端口来窃听线路。一对USB转串口适配器和一些接线将满足您的需求。然后监视和关联发送和接收线只是“编程的小问题”。单芯片解决方案可以基于FT2232H device from FTDI,它具有可用的evaluation module。添加几个RS232电平转换器和一些D连接器,你在USB上有一个串行窃听器,看起来像两个到Windows的COM端口。

另一种开箱即用方法是许多逻辑分析仪和混合信号示波器可以进行串行协议解码,通常作为可选组件。廉价USB +软件解决方案的一个来源是Saelig。我自己从他们那里购买了芯片和模块,但是他们没有任何直接的经验,他们销售的任何基于USB的逻辑分析仪,尽管我认为我的包里还有一个与Netbook一起......

答案 1 :(得分:0)

我多年前写过一篇文章。 DDK(设备驱动程序工具包)包括用于并行端口驱动程序(即紧接在其上方)的过滤器驱动程序的示例源代码:我调整了此示例以使用串行端口驱动程序,然后添加了监视和拆分等功能。 p>

这是串口,不是 USB。

我还实现了另一个驱动程序,它是一个“虚拟”串行端口,即它实现了一个串行端口API,然后将数据I / O重定向到其他位置。

要实施这项工作(很多个月)。

答案 2 :(得分:0)

购买RS232 DB9 Serial Data Tap。这是一个连接在两个串行端口之间的硬件设备,可以被动地监听设备之间的“聊天”。我使用了以下设备两年半,它为我节省了大量的故障排除时间和精力。 (我每天晚上都把它带回家,让支持技术人员免于“借用”它。)制作这个设备很容易,但下面的数据点击是灵活的。

  

“点击串行数据流并透明地监控数据活动。输出可以输入监控打印机或其他设备。拨码开关允许编程单独或一起监控主发送和接收线路。无需外部电源,易于安装,透明连接理想的RS232 /串行软件开发辅助。“

或者,制作或购买串行点击监视器电缆。有关一种可能的配置,请参阅NST documentation

我强烈建议您不要使用软件解决方案,因为监控软件可能会受到物理情况的影响。

答案 3 :(得分:0)

一如既往,这取决于你要做什么。如果您需要弄清楚两个串行设备之间的线路是如何连接的,或者需要一些“良好”的时序信息,那么最好的就是安东尼已经告诉过的外部break-out box

如果您只是需要某种监控,可以使用PortMonSerial Port Monitor

也许您编写了两个将通过串行连接进行通信的应用程序。要在没有本地环回电缆的单台PC上完成此操作,您可以尝试Com0Com