用于串口WIN32 Comm API的C#/.NET包装器

adr*_*rin 3 c# serial-port

我正在寻找一种在c#应用程序中通过串口实现尽可能多的控制的方法.问题是我需要与没有文档的设备通信,除了编写一个旧的c ++程序来控制它.我曾尝试使用SerialPort类与设备进行通信,但其行为非常奇怪(我必须重复一些命令,其他一些命令根本不起作用).我想复制那个非托管程序的行为,但是对于serialport类来说似乎是不可能的,因为它不提供对低级函数和结构的访问,例如DCB.

是否有可用于.net的串行通信的低级包装器?也许我可以使用反射来在运行时操纵serialport不可思议的成员?

Kri*_*ris 5

对于那些建议查看.NET SerialPort类的人; 关于串行相关问题的频繁Stack Overflow应答提供商Ben Voigt提供了一些很好的见解,为什么围绕WinAPI的包装器最终会比使用提供的SerialPort框架更好的想法:

.NET SerialPort上的Ben Voigt

必读.

他还提到了一个WinAPI封装器,他可能会在未来的博文中透露.如果发生这种情况,它将回答原始问题.

此外,似乎至少有一种商业解决方案在提供所请求的功能.

另一个编辑:

在.NET中没有Seri​​alPort类的时候,一些更多的在线搜索已经发布了这篇博文 ...提供了源代码,展示了如何为此目的包装Win32 API.

编辑

有些用户指出,上面提到的MSDN博客帖子链接已经死了.

链接文章的标题是:

" 使用P/Invoke开发用于串行设备通信的.NET基类库 ",John Hind撰写并于2002年10月发布,我可以从另一篇MSDN文章中了解到它:

在此输入图像描述

不幸的是,微软似乎只在2003年之前提供其杂志的版本:

https://msdn.microsoft.com/en-us/magazine/msdn-magazine-issues.aspx

FWIW,我在其他地方找到了半个在线版本 ......