2009-08-27 57 views
4

我正在寻找一本书和或如何做串行端口重定向或端口分割的代码示例。我编写了很多com端口应用程序,并且希望编写一个监视器应用程序,使我能够观看应用程序和设备之间的串行端口。串行端口重定向或分割

所以我想能够将串口重定向到另一个端口,以便我可以监视端口之间的数据流动。

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

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

感谢

回答

3

你可能会发现,通过PortMon马克Russinovich的是你的工作有帮助的,虽然它不提供源代码。它将记录与端口有关的所有系统调用,并具有广泛的过滤功能,可以将日志保持在可管理的大小。

编辑: PortMon在运行时通过向系统中注入内核模式设备驱动程序来工作。该驱动程序通过将过滤器驱动程序插入堆栈来挂接要监视的端口。该过滤器驱动程序将所有通过它的IRP报告给应用程序。这不是一个简单的野兽来实现任何延伸,它真的不能在用户模式下完成。

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

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

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

+0

感谢RB,我目前正在使用XPort,但想要在应用程序中嵌入端口拆分。 – 2009-08-27 19:05:41

+0

我已经更新了我的答案以及今天下午发生在我身上的其他一些想法...... – RBerteig 2009-08-28 02:15:26

+0

尝试使用VSPE。刚开始使用它,对于32位机器似乎工作正常。也有64位的版本。使用任一应用程序来配置虚拟端口,或者您可以使用API​​。创建内核模式虚拟串行设备... http://www.eterlogic.com/Products.VSPE.html – ryyker 2011-11-15 01:58:07

0

我写了很多年前的一篇。 DDK(设备驱动程序工具包)包含用于并行端口驱动程序的过滤器驱动程序的示例源代码:我调整了此示例以便与串行端口驱动程序一起工作,然后添加了监视和分离等功能。

这是串口,不是 USB。

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

这是一个很多工作(许多个月)的实施。

0

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

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

或者,制作或购买串行分接头监视器电缆。有关可能的配置,请参见NST documentation

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

+0

感谢RB和Anthony。我一直在考虑这个解决方案。我们有一个串行陷阱设备,但我们的一个设备使用USB到COM映射。但我可能会尝试为USB制作陷阱监视器电缆。 – 2009-08-28 16:51:43

0

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

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

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

+0

感谢Oliver,我过去曾经使用Com0com,但是因为一个设备是USB到COM端口,com0com似乎不工作。我尝试过PortMon,但它捕获的数据不完整。 Xport的工作原理,但我可能不得不把这个放在我们的生产线上,我不希望技术人员一次不得不加载两个程序。 – 2009-08-28 16:47:34