c# - 串行端口重定向或拆分

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

<分区>

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

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

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

我在 C# 中使用 system.IO.Ports 编写了监控应用程序。如果我必须调用 C++/C 程序集,那没问题。

谢谢

最佳答案

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

编辑:PortMon 的工作原理是在系统运行时将内核模式设备驱动程序注入(inject)系统。该驱动程序通过将过滤器驱动程序插入堆栈来 Hook 它想要监视的端口。该筛选器驱动程序将通过它传递给应用程序的所有 IRP 报告。无论如何,这都不是一件容易实现的野兽,而且它确实无法在用户模式下完成。

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

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

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

关于c# - 串行端口重定向或拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343033/

相关文章:

javascript - 从未指定的 anchor 标记获取 HREF

C# - QueuedTaskScheduler - threadCount 与 maxConcurrencyLevel

c++ - 我可以在 C++ 函数 getline 中使用 2 个或更多分隔符吗?

c - 是否有可用的 JSR 257 ("Contactless Communication API") C API?

c++ - 使用 Atmel Studio 作为通用 C 编译器

c# - 我应该在接线员的右边写什么?

c# - 超越(转换)

c++ - 您如何使用运算符 | 创建与现有 View 交互的自己的 View ?

c++ - Json-cpp - 如何从字符串初始化并获取字符串值?

c - 验证 scanf 的输入