新書推薦:
《
深度学习详解
》
售價:NT$
519.0
《
李白传(20世纪文史学家李长之经典传记)
》
售價:NT$
207.0
《
津轻:日本无赖派文学代表太宰治自传性随笔集
》
售價:NT$
302.0
《
河流之齿
》
售價:NT$
270.0
《
新经济史革命:计量学派与新制度学派
》
售價:NT$
406.0
《
盗墓笔记之秦岭神树4
》
售價:NT$
259.0
《
战胜人格障碍
》
售價:NT$
302.0
《
逃不开的科技创新战争
》
售價:NT$
467.0
|
內容簡介: |
本书是首本以HID 为中心的中文技术书籍,针对HID 技术规范,讲述的详细程度远超现有的USB、蓝牙、Linux内核等方面的相关书籍和文档。本书以HID 概念为中心,详细介绍了USB HID、BLE HID等实现方式,并横向串通了其中的HID概念;同时以HID实现为中心,详细介绍了在多个开发环境、多个硬件平台上实现复合HID设备的方法。理解HID概念和使用方法,有助于开发人员绕过驱动程序开发,减少各操作系统的开发差异,实现免驱动的设备。
|
目錄:
|
第1章 HID 概述 1
1.1 HID是什么 1
1.2 为什么使用HID … 2
1.3 规范版本 … 2
1.4 工作模式 … 3
1.5 理想的模型 4
1.6 引导协议 … 6
1.7 小 结 …… 6
第2章 USB HID 7
2.1 USB简介 … 7
2.2 数据传输 … 7
2.3 状态与地址 9
2.4 描述符 …… 9
2.5 请 求 …… 15
2.6 基于USB的HID 19
2.7 USB实践 20
第3章 BLE HID 24
3.1 BLE简介 24
3.2 UTF 8格式字符串 …… 24
3.3 通用访问规范 …… 25
3.4 通用属性规范 …… 27
3.5 设备信息服务 …… 32
3.6 电池服务 … 34
3.7 HID服务 34
3.8 扫描参数服务 …… 37
3.9 数据包长度扩展 … 38
3.10 基于BLE的HID …… 39
第4章 用于Linux、Android的uhid …41
4.1 uhid
4.2 存在/dev/uhid … 41
4.3 打开/dev/uhid … 42
4.4 使用/dev/uhid … 42
4.5 基于uhid的HID 46
4.6 事务流程 … 47
4.7 其他特性 … 49
第5章 用于Windows的VirtualHid … 53
5.1 VirtualHid简介 … 53
5.2 使用VirtualHid 54
5.3 打开节点 … 55
5.4 使用节点 … 56
5.5 基于VirtualHid的HID 60
5.6 事务流程 … 60
5.7 其他调用方式 …… 60
5.8 与用于Linux的uhid的差异 … 62
5.9 小 结 …… 63
第6章 I2C HID 64
6.1 I2C简介 … 64
6.2 描述符 …… 66
6.3 请 求 …… 67
6.4 报 告 …… 70
6.5 设备状态 … 70
6.6 使用I2C的ACPI HID 71
第7章 SPI HID 72
7.1 SPI简介 … 72
7.2 数据传输 … 73
7.3 描述符 …… 77
7.4 使用SPI的ACPI HID 78
第8章 下层协议与主机驱动 … ‘380
8.1 厂商ID和产品ID …… 80
8.2 报告ID … 80
8.3 报告数据包内的报告ID 80
8.4 虚拟HID用途 … 82
8.5 引导协议 … 83
第9章 报告描述符 …… 84
9.1 样 例 …… 84
9.2 条 目 …… 85
9.3 解析方式 … 93
9.4 顶层集合 … 96
9.5 构造报告描述符 … 96
第10章 设计和实现 … 102
10.1 用途类型 102
10.2 引导协议 106
10.3 厂商定义用途 … 107
第11章 主机驱动差异 109
11.1 部分版本的Linux递增用途ID …… 109
11.2 Linux中多个顶层集合共享标记位 … 111
11.3 Linux中用途的声明顺序影响 112
11.4 Linux解析将用途页用作用途的修饰符 …… 112
11.5 Linux对多点触摸报告的无效数值判断出错 113
11.6 Android下的BLE HID仅支持首个HID服务 …… 114
11.7 Android中External stylus功能与键盘冲突 115
11.8 Android的BLE连接间隔最小值限定 …… 116
11.9 OS X对坐标设备的逻辑范围仅支持到0x7fff …… 117
11.10 Windows 7可能不轮询自定义数据的USB输入端点 … 117
第12章 跨平台的HID 实例 … 118
12.1 跨平台定义 …… 118
12.2 独立的HID类型 …… 121
12.3 多HID实例复合设备 129
12.4 模拟用户行为 … 133
12.5 跨平台HID实现样例 136
第13章 Linux uhid (Code blocks) … 137
13.1 开发环境 137
13.2 基本配置 137
13.3 逻辑引用和类型定义 … 138
13.4 AutoFd类 …… 138
13.5 UhidInstance类 139
13.6 实现单个HID实例 … 140
13.7 实现复合HID设备 … 141
13.8 平台调用 142
13.9 模拟用户行为 … 142
第14章 Android uhid (Android Studio) …… 143
14.1 开发环境 143
14.2 基本配置 143
14.3 C 配置 …… 145
第15章 Windows VirtualHid (Visual Studio) 148
15.1 开发环境 148
15.2 基本配置 148
15.3 逻辑引用和类型定义 … 149
15.4 实现单个HID实例 … 149
15.5 实现复合HID设备 … 150
15.6 平台调用 151
15.7 模拟用户行为 … 152
第16章 Stm32F072 USB (Keil MDK) …… 153
16.1 开发环境 153
16.2 基本组件和配置 ’3154
16.3 基本框架 155
16.4 逻辑引用和类型定义 … 156
16.5 实现单个HID实例 … 156
16.6 实现复合HID设备 … 168
16.7 平台调用 171
16.8 模拟用户行为 … 173
第17章 Stm32F207 USB (Stm32CubeIDE) … 174
17.1 开发环境 174
17.2 基本组件和配置 174
17.3 基本框架 176
17.4 逻辑引用和类型定义 … 176
17.5 实现单个HID实例 … 177
17.6 实现复合HID设备 … 189
17.7 平台调用 192
17.8 模拟用户行为 … 193
第18章 Microchip Sam4S USB(Microchip Studio) 195
18.1 开发环境 195
18.2 基本组件和配置 195
18.3 基本框架 197
18.4 逻辑引用和类型定义 … 198
18.5 实现单个HID实例 … 198
18.6 实现复合HID设备 … 204
18.7 平台调用 206
18.8 模拟用户行为 … 207
第19章 Freescale K22F USB(MCUXpresso IDE) 209
19.1 开发环境 209
19.2 基本组件和配置 209
19.3 基本框架 211
19.4 逻辑引用和类型定义… 211
19.5 实现单个HID实例 … 211
19.6 实现复合HID设备 … 223
19.7 平台调用 232
19.8 模拟用户行为 … 233
第20章 Nordic nRF52840 BLE(Segger Embedded Studio) 234
20.1 开发环境 234
20.2 基本组件和配置 234
20.3 基本框架 236
20.4 逻辑引用和类型定义 … 237
20.5 实现单个HID实例 … 237
20.6 实现复合HID设备 … 246
20.7 平台调用 249
20.8 模拟用户行为 … 250
20.9 框架实现方式 … 251
20.10 低级别构建 … 252
参考文献 … 255
|
|