2013-02-01 86 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

相關問題