HID协议规定了两种条目:短条目和长条目(这儿没有用到长条目,不管它).其中短条目的结构如下图所示:
要判断一个短条目具体是哪种类型,先查看bType确定出主条目、全局条目、局部条目的一种,然后再跟据bTag确定具体的类型。

1. 关于第三章USB鼠标的ReportDescriptor,

从条目前缀结构中可以发现,这一节的条目类型只有这三种(0xC0,唉,对不起你啊):

0x1 --> 00 01 --> 后面跟一字节的(main)主条目
0x5 --> 01 01 --> 后面跟一字节的(Global)全局条目
0x9 --> 10 01 --> 后面跟一字节的(Local)局部条目

2. 然后从条目前缀的结构(高字节),可以看到具体的类型 
以0x05,0x01为例(0x05要拆开来看--0x0与0x5):
0x5: 后面跟一字节的(Global)全局条目
0x0: UsePage
0x01: Generic Desktop Controls (这个需要参考:Hut1_12v2.pdf 【HID Usage Tables】)
3. 关于HID描述符中main global local 三者之间的关系
我感觉是这样的: HID中最关键的是main条目,而global local条目是用来描述main条目的。

点击(此处)折叠或打开

  1. Usage Page (Generic Desktop),                             05 01
  2. Usage (Mouse),                                            09 02
  3. Collection (Application),                                 A1 01
  4. Usage (Pointer),                                           09 01
  5. Collection (Physical),                                     A1 00
  6. Usage Page (Buttons),                                    05 09
  7. Usage Minimum (01),                                      19 01
  8. Usage Maximun (03),                                      29 03
  9. Logical Minimum (0),                                     15 00
  10. Logical Maximum (1),                                     25 01
  11. Report Count (3),                                        95 03
  12. Report Size (1),                                         75 01
  13. Input (Data, Variable, Absolute),                        81 02
  14. Report Count (1),                                        95 01
  15. Report Size (5),                                         75 05
  16. Input (Constant),                                        81 01
  17. Usage Page (Generic Desktop),                            05 01
  18. Usage (X),                                               09 30
  19. Usage (Y),                                               09 31
  20. Logical Minimum (-127),                                  15 81
  21. Logical Maximum (127),                                   25 7F
  22. Report Size (8),                                         75 08
  23. Report Count (2),                                        95 02
  24. Input (Data, Variable, Relative),                        81 06
  25. End Collection,                                             C0
  26. End Collection                                             C0

3.1 上面是 《Device Class Definition for Human Interface Devices (HID) 》中的一个实例,是usb鼠标的Report Descriptor,按意义表述一下就是:

a. 先定义了一个普通桌面鼠标的应用(大)开集合
b. 再定义用途为指针的(小)开集合
c. 输入button
d. 填充位无实际意义
e. 输入的范围
f. 关闭小集合
g. 关闭大集合

圈圈USB学习笔记5--关于HID协议相关推荐

  1. USB学习笔记(3)HID应用分析

    USB学习笔记(3)HID应用分析 本文根据前面对USB系统的了解,和USB协议的学习,列出鼠标,键盘,多媒体控制器,自定义HID设备等HID设备的各种描述符. 前景提要:每个设备有且仅有一个设备描述 ...

  2. USB学习笔记(2)USB协议

    USB学习笔记(2)USB协议 本文对前面提到的USB枚举过程中的标准请求以及各种描述符做出大致解释,方便后面的实操. 1. USB标准请求 USB协议定义了一个8字节的标准设备请求,主要用在设备的枚 ...

  3. USB学习笔记(4)STM32关于USB库的解读

    USB学习笔记(4)STM32关于USB库的解读 为了方便在STM32上实现USB功能,本文对USB库的文件进行解读. USB-FS_Device peripheral interface(外围接口) ...

  4. USB学习笔记(5)STM32 USB库移植步骤

    USB学习笔记(5)STM32 USB库移植步骤 本文是将官网的USB驱动库文件移植到自己的工程里面,实现USB功能的具体移植步骤说明,实现Custom_HID功能. 1.先准备一个工程模板 获取工程 ...

  5. Python学习笔记28:从协议到抽象基类

    Python学习笔记28:从协议到抽象基类 今后本系列笔记的示例代码都将存放在Github项目:https://github.com/icexmoon/python-learning-notes 在P ...

  6. 【计算机网络学习笔记07】PPP协议、IP编址、NAT技术

    [计算机网络学习笔记07]PPP协议.IP编址.NAT技术 一.PPP协议 是TCP/IP网络中最重要的点到点的数据链路层协议. 1 PPP协议的组成 1)链路控制协议:建立并维护数据链路连接(身份验 ...

  7. CoAP协议学习笔记 3.1 CoAP协议翻译 加密基础介绍

    CoAP协议学习笔记可点此查看. 1 前言 在之前的学习中,没有过多关注加密.但实际部分厂家的IoT平台(阿里云.OneNET)已经启用了相关安全处理,有必要深入学习下. 在 CoAP 协议 RFC7 ...

  8. Android usb学习笔记:Android AOA协议Android端 流程总结

    背景 上篇文章中我们了解了嵌入式设备端将Android手机设置为accessory模式的流程以及嵌入式设备端接收和发送数据的流程,本文将对应介绍Android端accessory模式被激活的过程,以及 ...

  9. LTE学习笔记三:接口协议

    上一笔记说明了LTE网络的网元组成,网元之间的联系是通过标准化的接口.接下来学习LTE终端和网络的空中接口Uu.基站之间的X2接口.基站与核心网之间的S1接口,以及LTE接口协议栈和以往无线制式相比的 ...

  10. ESP32学习笔记之蓝牙HID

    The Human Interface Device(HID)定义了蓝牙在人机接口设备中的协议.特征和使用规程. 典型的应用包括:蓝牙鼠标.蓝牙键盘.蓝牙游戏手柄等:该协议改编自USB HID Pro ...

最新文章

  1. python3 raise 抛出异常
  2. 牛客题霸 NC5 二叉树根节点到叶子节点的所有路径和
  3. 未发现数据源名称_在Power BI中管理数据源Analysis Services
  4. 【Python学习】 - 手写数字识别 - python读入mnist数据集的多种方法
  5. Pytest标记用例失败之xfail
  6. 分数加减乘除混合运算带答案_分数分数加减乘除混合运算练习题及答案_0.doc
  7. isdigit函数python_Python判断字符串是否为数字的方法isdecimal 、isdigit、isnumeric及坑...
  8. sklearn 决策树例子_Sklearn库例子——决策树分类
  9. Trie图和Fail树
  10. 02-body标签中相关标签
  11. CF1042F Leaf Sets
  12. 2020山东大学计算机组成原理课程设计报告
  13. javaweb--请求转发
  14. 机器学习在各个领域的实际应用
  15. 获取6050原始数据
  16. 房地产开发商崩盘样本:楼盘捂了两年,欠40亿巨债
  17. LeetCode 1240. Tiling a Rectangle with the Fewest Squares
  18. ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-2-02:资源包详解
  19. 独立性检验(卡方检验)
  20. AlignedReID: Surpassing Human-Level Performance in Person Re-Identification

热门文章

  1. wpe手机中文汉化版下载_wpe中文版
  2. U盘安装Ubuntu 14.04
  3. java二级考试怎么考_2018年全国计算机二级Java考试考什么内容
  4. hasLayout与Block Formatting Context(块格式化上下文)
  5. 计算机远程桌面连接命令行,远程桌面连接命令,小编教你win7远程桌面连接命令的使用教程...
  6. SQL 格式化输出 千分位 ¥货币格式
  7. LINUX系统使用锐捷客户端认证校园网(华中科技大学)
  8. 台达plc编程支持c语言吗,台达plc编程软件有哪些
  9. 通达信公式系统 入门 LTS
  10. 计算机桌面工具栏出现闪烁,电脑任务栏一直闪怎么办