自定义HID设备
自定义HID设备和键盘鼠标这些标准HID设备有什么不同?
前者,操作系统不会自发访问,可以通过写应用程序访问,有可以直接使用的驱动接口。
后者,操作系统独占,会自发访问。
以USB键盘的工程进行修改:
1、产品ID修改成6。
2、配置描述符不需要子类和子类协议,设置成为0。
3、修改报告描述符,用usage(0)开集合,系统会识别出非标准的设备。同时自定义用途和结构。
4、报告的实现:输入报告共8个字节,按键状态放第一个字节,将发送的报告数count(4字节)依次存放到后四个字节当中,多余的3个字节预留;输出报告共8个字节,LED驱动放置在一个字节,第二个字节若不为0,则清零count。
修改结果:
识别出来是HID-compliant-device,这就是自定义的HID设备识别出来的效果,这是下层过滤驱动决定的。
上位机对用户自定义HID设备的访问:
Windows要打开设备,必须要找到设备的路径,通过GUID来查找,先用API函数查找HID设备的GUID,检查VID、PID、设备版本号,若是要访问的设备就继续执行操作。
访问HID设备使用的函数:
1、使用VCC++ 6.0。
2、获得HID设备接口类的GUID。
3、获得指定类所有设备信息集合。
4、从设备信息集合中获取一个设备的接口信息。
5、获取指定设备接口详细信息。
6、打开设备。
7、获取设备属性。
8、从设备读取数据。
9、从设备发送数据。
10、端点0发送数据。
11、端点0接收数据。
12、关闭句柄。
13、需要包含的库文件。
访问HID设备的软件设计:
编写思路:获取GUID——获取指定类所有的设备信息集合——获取一个设备的信息——获取某个设备的详细信息——打开设备——查找设备属性(PID/VID/版本号,若和指定一致,则退出查找,否则继续查找)——读写数据(端点0、非端点0)——界面设计(两排LED,一排用来控制设备的led显示,一排用来显示按键情况)