串口重定向或拆分

我正在寻找一本关于如何进行串口重定向或端口拆分的书籍或代码示例。 我编写了很多com端口应用程序,并希望编写一个监视器应用程序,以便我可以看到应用程序和设备之间的串行端口。

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

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

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

谢谢

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

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

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

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

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

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

这是串口, 而不是 USB。

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

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

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

如果您只需要某种监控,可以使用PortMon或Serial Port Monitor 。

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

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

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

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

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