如何在C#中创建COM(和其他设备)模拟器?

时间:2010-01-06 11:46:10

标签: c# windows .net-3.5 emulation device-driver

我们有几个与COM端口,USB等交互的传统组件。

我想创建一个.NET程序,它可以模拟COM端口并记录流量,将其转发到某处的WCF服务端点或直接转发到数据库中。也许包装真正的COM端口就像装饰模式。

我环顾四周,我找到了Sourceforge项目Com0Com,但它是相当古老的API和c ++。

我意识到我可以通过创建行式打印机驱动程序来解决这个特定问题,而且从不真正与系统中注册的COM端口进行交互。一些链接也将受到高度赞赏。

有人这样做过吗?如何在.NET中创建系统资源?

2 个答案:

答案 0 :(得分:1)

你必须写一个驱动程序,这就是Com0Com的工作方式。如果这些组件在进程中运行,您可以劫持Windows API函数,例如Microsoft的Detours。

任何一种解决方案都需要C / C ++,您无法用托管语言编写此代码。虽然绕道技术可能在技术上可行,但非常很难做到正确。您可以购买解决方案,但您的要求并不少见,尽管它已经过时了。用了足够的时间找到一个可能有点棘手。

答案 1 :(得分:1)

  

有人这样做过吗?

添加到nobugz所说的内容:

  • 当我编写COM端口仿真器时,我是从DDK(serial.sys)中的示例串口驱动程序开始的。

  • 当我编写COM端口包装器/记录器时,我是从DDK(parport.sys)中的示例并行端口过滤器驱动程序开始的。