2010-02-19 150 views
1

是否有任何使用.NET的USB开发人员?使用.NET类与USB HID通信

我知道与USB HID设备进行通信的一种方式是创建Windows API的包装,如CreateFile,WriteFile和ReadFile。但我想知道是否有人知道你是否可以使用任何.NET类来做同样的事情。我确定我仍然需要使用一些API来执行操作,例如检测总线上的哪些设备以及请求解码器,但是我正在寻找.NET方法来发送/接收报告?我想,例如,我可以使用Stream类或StreamWriter和StreamReader,但我不知道。

+0

已经做了一些与Win32 API的USB和重叠的IO,但从来没有.NET。不过,我想如果你有设备的文件句柄,你可以使用它实例化一个流(SafeFileHandle和什么不)。 – 2010-02-19 18:02:59

+0

这就是我的想法,但我不确定...我希望有人试过它 – PICyourBrain 2010-02-19 18:06:55

回答

2

System.IO.FileStream类是非常合适的替代品。它的构造函数调用CreateFile(),其Read方法调用ReadFile(),其Write方法调用WriteFile()。将FileAcces,FileMode和FileShare枚举与相应的CreateFile()参数相匹配应该没有什么问题。然而,您将不得不P/Invoke SetupAPI函数。

+1

由SetupAPI函数返回的设备路径如下所示:\\\\?\\ hid#vid_0461&pid_4d15#6&3535d8ec&0&0000# {4d1e55b2-f16f-11cf-88cb-001111000030}“ 如果我尝试FileStream myStream = System.IO.File.OpenRead(上面的路径);我得到一个错误,说道路中有非法字符。 – PICyourBrain 2010-02-23 13:59:55

+0

哎唷,是的,这个?字符不会通过FileIOPermission类的路径检查。那里有一个bug,尽管否则很难做到。 P /调用CreateFile是你的很多,你仍然可以通过FileStream(SafeFileHandle,FileAccess)构造函数使用FileStream。 – 2010-02-23 14:08:11

+0

我试了一下,但没有多少运气。还有很多HID API,我需要为任何方面做封装,所以我只是咬紧牙关,放弃了FileStream ... – PICyourBrain 2010-02-25 12:59:07

1

使用一个为您包装所有P/Invoke调用的库可能会有更多的运气。我看过的一个是HidLibrary

+0

HidLibrary对我来说是工作奇迹。感谢指针! – abelenky 2013-07-25 21:14:38

0

FileStream对我来说工作的很好,虽然我的USB是一个非常简单的实现。

我使用CreateFile初始设置设备,但通过FileStream对象执行所有读写操作。