C#編寫的自動查找USB HID設備并傳輸數據,運行自動枚舉全部USB HID 設備,從列表中選擇并點擊連接即可接收數據到PC端,支持win10系統,已測試
完整源碼:
USBHIDControl.zip
(247.65 KB, 售價: 5 E幣)
2022-4-24 03:00 上傳
點擊文件名下載附件
售價: 5 E幣 [記錄]
[ 購買]
1.png (13.55 KB)
下載附件
2022-4-24 02:59 上傳
2.png (76.4 KB)
下載附件
2022-4-24 02:59 上傳
部分源碼:
- /// <summary>
- /// 獲取所有連接HID的設備
- /// </summary>
- /// <param name="deviceList">返回所有連接HID的設備</param>
- private void GetDeviceList(ref List<string> deviceList)
- {
- Guid HIDGuid = Guid.Empty;
- windowsApi.GetDeviceGuid(ref HIDGuid);//獲取HID的全局GUID
- IntPtr HIDInfoSet = windowsApi.GetClassDevOfHandle(HIDGuid);//獲取包含所有HID接口信息集合的句柄
- if (HIDInfoSet != IntPtr.Zero)
- {
- SP_DEVICE_INTERFACE_DATA interfaceInfo = new SP_DEVICE_INTERFACE_DATA();
- interfaceInfo.cbSize = Marshal.SizeOf(interfaceInfo);
- //檢測集合的每個接口
- for (uint index = 0; index < MAX_USB_DEVICES; index++) {
- //獲取接口信息
- if (!windowsApi.GetEnumDeviceInterfaces(HIDInfoSet, ref HIDGuid, index, ref interfaceInfo))
- continue;
-
- int buffsize=0;
- //獲取接口詳細信息;第一次讀取錯誤,但可取得信息緩沖區的大小
- windowsApi.GetDeviceInterfaceDetail(HIDInfoSet,ref interfaceInfo,IntPtr.Zero, ref buffsize);
-
- //接受緩沖
- IntPtr pDetail = Marshal.AllocHGlobal(buffsize);
- SP_DEVICE_INTERFACE_DETAIL_DATA detail = new WindowsAPI.SP_DEVICE_INTERFACE_DETAIL_DATA();
- detail.cbSize = Marshal.SizeOf(typeof(USBHIDControl.WindowsAPI.SP_DEVICE_INTERFACE_DETAIL_DATA));
- Marshal.StructureToPtr(detail, pDetail, false);
- if (windowsApi.GetDeviceInterfaceDetail(HIDInfoSet, ref interfaceInfo, pDetail, ref buffsize))//第二次讀取接口詳細信息
- deviceList.Add(Marshal.PtrToStringAuto((IntPtr)((int)pDetail + 4)));
- Marshal.FreeHGlobal(pDetail);
- }
- }
- //刪除設備信息并釋放內存
- windowsApi.DestroyDeviceInfoList(HIDInfoSet);
- }
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|