C#源码 自动枚举USB HID设备 发送数据 支持兼容windows 10系统
C#编写的自动查找USB HID设备并传输数据,运行自动枚举全部USB HID 设备,从列表中选择并点击连接即可接收数据到PC端,支持win10系统,已测试。
部分源码:
/// <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,本站资源部分需要积分只是赞助,仅用于本站服务器和日常运营所需,不提供任何技术支持。
快捷联系方式 Email:admin@lzbk.com QQ:361113272