添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
踏实的茄子  ·  清除adb ...·  3 月前    · 
威武的香瓜  ·  postman 400 bad ...·  8 月前    · 
酒量大的煎鸡蛋  ·  linux - Why is the ...·  1 年前    · 
豪情万千的围巾  ·  Unity Console 窗口 ...·  1 年前    · 

c# 下收发usb消息,usb通信程序,大概流程和这篇博客写的差不多( https://www.cnblogs.com/xidongs/archive/2011/11/28/2266100.html )。

这个github上的库也很好,个人觉得用库更方便,地址( https://github.com/mikeobrien/HidLibrary )这个库的支持只要framework即可。

下面是碰到的坑:

1   .两者底层都是调用setupapi.dll,hid.dll等,个人遇到个坑就是 HidHandle = CreateFile(
DeviceName,
GENERIC_READ,// | GENERIC_WRITE,//读写,或者一起
FILE_SHARE_READ,// | FILE_SHARE_WRITE,//共享读写,或者一起
0,
OPEN_EXISTING,
0,
0);

创建时没有共享,结果几个usb读写时出现冲突。

这个打开usb时outlength为0,usb收不到消息

https://blog.csdn.net/yanhuatangtang/article/details/80703010

设备在我的电脑上outputReportLength读取到的值为64,在win10电脑上读取的为0.无法发送数据到设备,什么原因呢

因为设备管理器中同一个PID vid的设备有多个,但是并不是所有的都支持out传输,到outlength为0时,应该继续查找其他设备,还有这个坑。

c# 下收发usb消息,usb通信程序,大概流程和这篇博客写的差不多(https://www.cnblogs.com/xidongs/archive/2011/11/28/2266100.html)。这个github上的库也很好,个人觉得用库更方便,地址(https://github.com/mikeobrien/HidLibrary)。两者底层都是调用setupapi.dll,hid.d...
Hid Library - 强大的 HID 设备访问库 Hid Library 是一个开源的 C# 库,用于在 Windows、Linux 和 macOS 上访问硬件设备,尤其是那些遵循 HID (人类接口设备)协议的设备。通过这个库,开发者可以轻松地与 USB 控制器、游戏手柄、键盘等 HID 设备进行交互。 为什么选择 Hid Library ? 跨平台: Hid Library 支持 Windows、...
原文:C#与 USB HID 间的 通信 C#与 USB HID 接口的通讯相对于与串口间的通讯较为复杂,其中需要多次调用到Windows的一些API。其原理编者尚未全部理清,以下提供简单的 USB HID 通讯流程。(参考网友资料) 一、获取所有连接 HID 的设备信息。 1.通过一个空的GUID来获取 HID 的全局GUID。 HID Guid = Guid.Empty; ...
赋所有源代码,开发工具vs2010 framework3.5 baidu搜索c# Hid Usb 都是大同小异案例,而且拿下来基本不能用。大都是围绕public static extern int CreateFile(省略众多参数..);发现没有,copy下来测试基本都是用不了的。 原因很简单:windows不允许你用程序随便就去访问硬件设备。所以在此把之前做过的基于C#开发读写 Hid Usb 设备的项目整理成一个简单的小案例,分享给大家,开发环境VS2010。 该案例重点在public static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, IntPtr lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile); 看着貌似也是用到CreateFile这个函数,其实并不然,注意到没有"SafeFileHandle",这就是重点! 这样windows是允许程序访问外接 hid usb 设备的。 当然具体如何运用这个函数现在已经不是您应该 关心的了,因为我已经为您把它封装成一个类,您只要调用相应的方法就OK. //第一步:获取 Hid Usb 设备信息 List slist = new List(); Usb Hid Device usb hid = new Usb Hid Device(); usb hid .GetDeviceList(ref slist); // Hid Usb 设备信息包含在List数据集中 注:当获取到 Hid Usb 设备信息为:\\?\ hid #vid_0e2c&pid;_0112#6&1b44c403;&0&0000;#{4d1e55b2-f16f-11cf-88cb-001111000030}, 注意该字符串里的“vid_0e2c”和“pid_0112”部分,那么: vid为0e2c, pid为:0112 //第二步:创建一个 Hid Usb 设备访问实例 Usb Hid Device Device = new Usb Hid Device(vid, pid); //第三步:连接 Hid Usb 设备 Boolean connBool = Device.Connect(); //第四步:实现数据接收事件 Device.DataReceived += new Usb Hid Device.DataReceivedDelegate(Device_DataReceived); //当 Hid Usb 设备返回信息时触发此事件 void Device_DataReceived(byte[] data) //处理接收到的数据逻辑 //第五步:向 Hid 设备发送数据"0xa0 00 0x12 0x9 0x22" string txt = "0xa0 00 0x12 0x9 0x22"; //把数据转换为字节数组 byte[] data = ConvertHelper.StringToByte(txt2); byte bt = 0; CommandMessage cmdMsg = new CommandMessage(bt, data); Boolean sbool = Device.SendMessage(cmdMsg); //发送数据 //第六步:释放所有资源 Device.Dispose();
安卓 USB HID 通信 Demo是一种在Android设备上实现的用于与支持 HID 协议的 USB 设备进行 通信 的演示程序。 HID (Human Interface Device)是一种用于人机交互设备的 通信 协议,如键盘、鼠标、游戏手柄等。在安卓设备中,实现 HID 通信 可以让我们通过 USB 接口控制其他支持 HID 协议的设备。 在这个Demo中,我们首先需要准备一个支持 HID 协议的 USB 设备,例如一个 USB 键盘。接下来,我们需要在安卓设备上安装并运行这个Demo应用程序,并通过OTG(On-The-Go)线缆将安卓设备连接到 USB 键盘。 一旦连接建立,我们可以通过Demo应用程序读取键盘的按键信息,并在安卓设备上进行相应的处理。例如,如果我们按下键盘上的某个按键,应用程序可以识别到该按键的键码,然后可以根据键码触发相应的事件,如显示按键字符、控制安卓设备的音量、切换输入法等。 此外,Demo应用程序还可以实现向 USB 设备发送命令的功能。例如,我们可以通过应用程序向 USB 设备发送指令来控制设备的灯光、颜色等。 通过这个Demo,我们可以了解和学习如何在安卓设备上实现 USB HID 通信 。同时,我们也可以根据自己的需要,修改和扩展Demo程序,以适应更具体的应用场景。