簡體   English   中英

如何找到 USB HID DevicePath?

[英]How to find USB HID DevicePath?

我一直在研究嵌入式系統中的 USB HID 設備和 C# 一段時間。 我決定在 C# 中使用 USBHid 庫。我用這個庫得到了理想的結果。 但我有一個問題。 在USBHid庫中定義USB時,在我在inte.net上找到的庫的項目中,下面的代碼就足夠了。

public UsbHidDevice Device;
Device = new UsbHidDevice(vvvv,pppp);

但是,當我使用同一個庫時,它會要求我提供以下格式的表達式。

public UsbHidDevice Device; string vidandpid = 
"\\hid#vid_0000&pid_0000&mi_00#a&0&000000000&1&0000#{eeof37d0-1963-47k4-aa41-74476db7uf49}";
Device = new UsbHidDevice(vidandpid);

我為我自己的 HID 設備改編了這種格式,但沒有成功。 這個字符串表達式應該如何? 我對你的觀點持開放態度。 從現在開始謝謝你。

如何找到 USB HID DevicePath?

我放棄了 USBHID 庫並找到了 HidLibrary 庫的解決方案。 據我了解,HidLibrary 在某些問題上存在不足。

在這里,我分享了我與 HidLibrary 鏈接的 C# 代碼。 謝謝大家的回復。

device = HidDevices.Enumerate(VendorID, ProductID).FirstOrDefault();
   if (device != null)
   {
       device.OpenDevice();
       device.Inserted += DeviceAttachedHandler; 
       device.Removed += DeviceRemovedHandler;
       device.MonitorDeviceEvents = true;
       device.ReadReport(myfunction);
   }
   else { RtBox_Feedback.AppendText("NOT DEVICE!"); }

\\hid#vid_0000&pid_0000&mi_00#a&0&000000000&1&0000#{eeof37d0-1963-47k4-aa41-74476db7uf49} - 是{eeof37d0-1963-47k4-aa41-74476db7uf49}接口的設備接口。 對於每個設備,它幾乎總是唯一的和半隨機的。 如果您將設備放在另一個 USB 插槽中,它也可能會發生變化。 此字符串可用作使用CreateFile Win32 API 打開此“文件”的路徑,並通過特定於接口的 IOCTL 與設備對話。 更多信息在這里

對於 HID 設備 Windows 有另一個設備接口 GUID - GUID_DEVINTERFACE_HID - {4D1E55B2-F16F-11CF-88CB-001111000030}

您可以使用CM_Get_Device_Interface_ListWSetupDiGetClassDevs / SetupDiEnumDeviceInterfaces / SetupDiGetDeviceInterfaceDetail API 通過接口 GUID或設備實例 ID枚舉設備接口。

提到的“C# 中的 USBHid 庫”可能已經有通過 HID 設備 VID/PID 進行此類枚舉和過濾的代碼,但我不能肯定地說,因為您還沒有添加指向該庫代碼的鏈接。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM