2013-02-01 84 views
1

简单地说:我想知道它是否可能与LibUsbDotNet一起读取和写入HID功能报告。在C#中使用LibUsbDotNet与HID设备进行交互

在我试图用VID/PID与下面的示例代码

class Program 
    { 
     public static UsbDevice MyUsbDevice; 
     public static UsbDeviceFinder uFind = new UsbDeviceFinder(1234,4321); 

     static void Main(string[] args) 
     { 
      ErrorCode ec = ErrorCode.None; 

      try 
      { 
       // Find and open the usb device. 
       MyUsbDevice = UsbDevice.OpenUsbDevice(uFind); 

       // If the device is open and ready 
       if (MyUsbDevice == null) throw new Exception("Device Not Found."); 

找到我的设备,但我总是会得到未找到设备的首位。

我检查了“设备管理器>人机接口设备”下我的设备确实存在。

如果有人可以建议什么是正确的方法在c#中实现相同将是有帮助的。

以前我试图在Python中实现相同的功能(使用PyUsb),但缺乏示例和文档使我无望。

回答

0

在libUsbDotNet的安装文件夹中,有一个名为“inf-wizard.exe”的文件运行该应用程序,并安装libUsbDotNet用于查找驱动程序的“假驱动程序”。

如果你不能找到“INF-wizard.exe”试图从这里下载libUsbDotNet:http://sourceforge.net/projects/libusbdotnet/

您可能必须使用设备管理器,找到PID和VID为特定的驱动程序(即使没有司机发现它的VID和PID应显示)

安装转换PID和VID为整数后,这个网站可能是有益的http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html

使用转换的整数代码例如:

//Hex Values: Pid = 4D9; Vid = 1605; 

public static UsbDeviceFinder uFind = new UsbDeviceFinder(1241, 5637); 

Windows需要驱动程序与任何类型的硬件来commuticate,这个过程是在Linux简单多了,看到link (connect hack)关于如何USB通信工作良好的简化。 (这是基于Linux的,但核心保持不变)

+0

嘿那里。 'inf向导'_没有列出_ ** HID设备**。它适用于其他任何事情,但不适用于** HID **。 **您确定**'inf-wizard'可以为** HID **设备创建假驱动程序。 – vvy

+0

是的,正如我之前所做的那样,但您可能需要更改设置,因为LibUsbDotNet中的默认设置一次只能发送/接收64位数据,所以在尝试与键盘通信时尝试与其进行通信时遇到了问题8位间隔,如果我连续按下8个键,它会读取。有一个缓冲区设置可以解决这个问题,但我还没有测试过它。 – Oli4

+0

尝试使用LibUsbDotNet库中包含的示例。 – Oli4

相关问题