国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
C#源碼 自動枚舉USB HID設備 發送數據 支持兼容windows 10系統
[打印本頁]
作者:
Jonsa
時間:
2022-4-24 03:02
標題:
C#源碼 自動枚舉USB HID設備 發送數據 支持兼容windows 10系統
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);
}
復制代碼
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0