串行端口重定向或拆分[关闭]
Posted
技术标签:
【中文标题】串行端口重定向或拆分[关闭]【英文标题】:Serial Port Redirection or Splitting [closed] 【发布时间】:2009-08-27 18:40:42 【问题描述】:我正在寻找有关如何进行串行端口重定向或端口拆分的书籍和/或代码示例。我写了很多 com 端口应用程序,并想编写一个监视器应用程序,它可以让我监视应用程序和设备之间的串行端口。
所以我希望能够将串行端口重定向到另一个端口,这样我就可以监控端口之间的数据流动。
我了解在某些情况下,这必须在内核级别完成。 (在 USB 情况下)
我使用 C# 中的 system.IO.Ports 编写了监控应用程序。如果我必须调用一个 C++/C 程序集,那很好。
谢谢
乔
【问题讨论】:
【参考方案1】:您可能会发现 Mark Russinovich 的 PortMon 对您的工作很有帮助,尽管它没有提供源代码。它将记录与端口相关的所有系统调用,并具有广泛的过滤功能以将该日志保持在可管理的大小。
编辑: PortMon 通过在运行时将内核模式设备驱动程序注入系统来工作。该驱动程序通过将过滤器驱动程序插入堆栈来挂钩它想要监视的端口。该过滤器驱动程序将所有通过它的 IRP 报告给应用程序。无论如何,这都不是一件容易实现的野兽,而且在用户模式下确实无法完成。
Windows DDK 确实有用于端口过滤器驱动程序的示例代码,但是从示例到有用的东西需要做很多工作。
一个可能可行的纯用户模式解决方案是使用两个额外的串行端口来窃听线路。一对 USB 到串行适配器和一些接线将满足您的需求。那么监视和关联发送和接收线路只是“编程的小事”。单芯片解决方案可以基于FT2232H device from FTDI,它有一个可用的evaluation module。添加几个 RS232 电平转换器和一些 D 连接器,您就拥有了一个 USB 串行窃听器,它看起来像 Windows 的两个 COM 端口。
另一种开箱即用的方法是,许多逻辑分析仪和混合信号示波器可以进行串行协议解码,通常作为可选组件。廉价 USB+ 软件解决方案的来源之一是 Saelig。我自己从他们那里购买了芯片和模块,但对他们销售的任何基于 USB 的逻辑分析仪都没有任何直接经验,尽管我认为我应该在我的包里放一个和上网本......
【讨论】:
感谢 RB,我目前正在使用 XPort 但想在应用程序中嵌入端口拆分。 我已经用今天下午发生的一些其他想法更新了我的答案... 试试 VSPE。刚开始用,32 位机器好像没问题。也有 64 位的版本。使用任一应用程序来配置虚拟端口,或者您可以使用 API。创建内核模式虚拟串行设备...eterlogic.com/Products.VSPE.html【参考方案2】:我在很多年前写过一篇。 DDK(设备驱动工具包)包括一个过滤器驱动程序的示例源代码(即紧接在上面)并行端口驱动程序:我修改了这个示例以与串行端口驱动程序一起使用,然后添加了监控和拆分等功能。
这是串行端口,不是 USB。
我还实现了另一个驱动程序,它是一个“虚拟”串行端口,即它实现了一个串行端口 API,但随后将数据 I/O 重定向到其他地方。
要实施很多工作(好几个月)。
【讨论】:
【参考方案3】:一如既往,这取决于您要做什么。如果您需要弄乱两个串行设备之间的线路连接方式或需要一些“好的”时序信息,那么您可以得到的最好的方法是像 Anthony 已经告诉过的那样,使用外部 break-out box。
如果您只需要某种监控,可以使用 PortMon 或 Serial Port Monitor。
也许您编写了两个将通过串行连接进行通信的应用程序。要在没有本地环回电缆的单台 PC 上完成此操作,您可以尝试 Com0Com。
【讨论】:
感谢 Oliver,我过去使用过 Com0com,但由于一台设备是 USB 转 COM 端口,com0com 似乎无法正常工作。我试过 PortMon,但它捕获的数据不完整。 Xport 可以工作,但我可能不得不把它放到我们的生产线上,我不希望技术人员一次加载两个程序。【参考方案4】:购买RS232 DB9 Serial Data Tap。这是一个硬件设备,连接在两个串口之间,被动地监听设备之间的“喋喋不休”。我使用以下设备两年半,它为我节省了大量的故障排除时间和精力。 (我以前每晚都会把它带回家,以免技术支持人员“借用”它。)这个设备制作起来很容易,但下面的数据挖掘很灵活。
“利用串行数据流并透明地监控数据活动。输出可以馈送到监控打印机或其他设备。拨码开关允许编程以单独或一起监控主要的发送和接收线路。无需外部电源、易于安装、透明连接 理想的 RS232/Serial 软件开发辅助工具。”
或者,制作或购买串行分接头监视器电缆。请参阅NST documentation 了解一种可能的配置。
我强烈建议您不要使用软件解决方案,因为监控软件可能会受到物理情况的影响。
【讨论】:
感谢 RB 和安东尼。我也一直在考虑这个解决方案。我们确实有一个串行陷阱设备,但我们的一个设备使用 USB 到 COM 映射。但我可能会尝试为 USB 制作陷阱监视器电缆。以上是关于串行端口重定向或拆分[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
text BrickstorOS上的示例grub条目,启用了串行端口重定向
Android 逆向Android 逆向通用工具开发 ( adb forward 网络端口重定向命令 | PC 端逆向程序主函数分析 )