导航

自定义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显示,一排用来显示按键情况)

 

posted on 2017-09-22 11:49  刘梢  阅读(982)  评论(0编辑  收藏  举报