HID类报表描述符深入理解(需要完善)

news2024/9/20 9:39:46

参考资料

一篇博文,
USB中文网,
USB中文网1,
HID有关资源,

HID报告描述符的基本组成(短)item

长的item几乎没使用过,和短的item使用方法类似,可根据HID协议查看,使用方式可以参考item介绍

三大类items

详细介绍可参考一篇博文,
在这里插入图片描述

一个HID报告描述符的整体框架

keyboad的hid实例,参考

05 01          //Usage Page (Generic Desktop),
09 06          //Usage (Keyboard),
A1 01          //Collection (Application),
05 07          //Usage Page (Key Codes);
19 E0          //Usage Minimum (224),
29 E7          //Usage Maximum (231),
15 00          //Logical Minimum (0),
25 01          //Logical Maximum (1),
75 01          //Report Size (1),
95 08          //Report Count (8),
81 02          //Input (Data, Variable, Absolute), ;Modifier byte
95 01          //Report Count (1),
75 08          //Report Size (8),
81 01          //Input (Constant), ;Reserved byte
95 05          //Report Count (5),
75 01          //Report Size (1),
05 08          //Usage Page (Page# for LEDs),
19 01          //Usage Minimum (1),
29 05          //Usage Maximum (5),
91 02          //Output (Data, Variable, Absolute),  ;LED report
95 01          //Report Count (1),
75 03          //Report Size (3),
91 01          //Output (Constant),  ;LED report padding
95 06          //Report Count (6),
75 08          //Report Size (8),
15 00          //Logical Minimum (0),
25 65          //Logical Maximum(101),
05 07          //Usage Page (Key Codes),
19 00          //Usage Minimum (0),
29 65          //Usage Maximum (101),
81 00          //Input (Data, Array), ;Key arrays (6 bytes)
C0             //End Collection

在这里插入图片描述

HID报表描述符中常见命令和代表的含义

在这里插入图片描述

报表描述符的item中参数含义

下面是控制类型的usage type,一般用于,可以看出数据的类型和触发方式等
在这里插入图片描述
音量调节的控制方式,满足条件触发一次
在这里插入图片描述
在这里插入图片描述
数据类型一般用于INPUT, OUTPUT,Feature的item中
在这里插入图片描述

bit位作用或含义
Bit0:Data(0):数据表示该项目正在定义包含可修改设备数据的报告字段。 Constant(1)常量表示该项目是报表中的静态只读字段,一般保留字符使用
Bit1Array(0): 将每个数据占用8bit位 Variable(1): 每个字节占1bit
Bit 2Absolute (0) 指示数据是绝对数据(基于固定原点)还是相对数据(指示上次报告的值变化)。 Relative (1) 鼠标设备通常提供相对数据,而平板电脑通常提供绝对数据。
Bit3Wrap(1):数值过最大循环到最小(例如音量键到100后) Wrap(0): 不循环
Bit 4Linear (0) :来自设备的原始数据和报告数据存在线性关系,一般是灵敏度修改; Non Linear (1):对原始数据非线性处理
Bit 5Preferred State(0):主项目对应的操作再不被触发时会自动恢复到初始状态,例如键盘的按键; Preferred State(1):不会恢复原状
Bit 6No Null position (0):任何状态都发送有效数据,; Null state(1):控件某一种空状态,处于不发送有意义数据的状态
Bit 8Bit Field (0) :控件发出固定大小的字节流 Buffered Bytes (1):主项目的数据格式要以字节为单位,不足构成字节时自动填充成字节

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自修室预约小程序的设计

管理员账户功能包括:系统首页,个人中心,学生管理,公告通知管理,自修室管理,座位预约管理,预约取消管理,管理员管理,系统管理 微信端账号功能包括:系统首页&a…

代码随想录训练营 Day17打卡 二叉树 part05 654. 最大二叉树 617. 合并二叉树 700. 二叉搜索树中的搜索 98. 验证二叉搜索树

代码随想录训练营 Day17打卡 二叉树 part05 一、 力扣654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归…

基于Raft算法的分布式KV数据库:一、开篇

项目描述:本项目是基于Raft算法的分布式KV数据库,保证了分布式系统的数据一致性和分区容错性,在少于半数节点发生故障时仍可对外提供服务。使用个人实现的分布式通信框架mpRPC和跳表数据库skipList提供RPC服务和KV存储服务。 github地址&…

如何在数据埋点中发现和修复数据上报逻辑错误

如何发现和处理数据埋点中的逻辑错误 在大数据分析中,数据埋点是至关重要的一环。然而,当我们遇到数据上报逻辑错误时,该如何应对呢?本文将为你揭示解决这一棘手问题的有效方法。 目录 如何发现和处理数据埋点中的逻辑错误什么是数据上报逻辑错误?如何发现数据上报逻辑错误…

Python酷库之旅-第三方库Pandas(060)

目录 一、用法精讲 231、pandas.Series.reorder_levels方法 231-1、语法 231-2、参数 231-3、功能 231-4、返回值 231-5、说明 231-6、用法 231-6-1、数据准备 231-6-2、代码示例 231-6-3、结果输出 232、pandas.Series.sort_values方法 232-1、语法 232-2、参数…

Flink-StarRocks详解:第三部分StarRocks分区分桶(第53天)

文章目录 前言2.3 数据分布2.3.1 数据分布概览2.3.1.1 常见的数据分布方式2.3.1.2 StarRocks的数据分布方式2.3.1.3 分区2.3.1.4 分桶 2.3.2 创建分区2.3.2.1 表达式分区2.3.2.1.1 时间函数表达式分区(自v3.1)2.3.2.1.2 列表达式分区(自v3.1&…

EAK水冷电阻60kW负载制动电阻器

描述 EAK制动电阻器 液冷电阻器将多余的制动能量转化为有用的热量,因此非常适合电动或混合动力驱动。与传统的风冷制动电阻器相比,水冷可节省高达 88% 的额外空间。作为一个额外的功能,电阻器可以很容易地与无滴漏的快速紧固件连接。由于即使…

注意力特征融合

摘要 https://arxiv.org/pdf/2009.14082 特征融合,即来自不同层或分支的特征的组合,是现代网络架构中无处不在的一部分。它通常通过简单的操作来实现,如求和或拼接,但这可能不是最佳选择。在这项工作中,我们提出了一种…

【Mybatis】浅谈Mybatis的缓存机制,一级缓存和二级缓存

目录 1. 缓存机制介绍 2. 一级缓存 3. 二级缓存 4. mybatis缓存执行流程 1. 缓存机制介绍 MyBatis 的缓存机制是为了提高应用程序的性能而设计的,通过缓存策略来减少数据库的查询次数。MyBatis 提供了两种类型的缓存:一级缓存和二级缓存。 默认情况下…

web框架:Django进阶(二)

文章目录 Django进阶(二)1.orm1.1 基本操作1.2 连接数据库1.3 连接池1.4 多数据库1.4.1 读写分离1.4.2 分库(多个app ->多数据库)1.4.3 分库(单app)1.4.4 注意事项 1.5 表关系1.6 数据操作单表一对多正向…

IIS解析漏洞~ IIS7.漏洞分析

IIS解析漏洞 文件解析漏洞是由于中间件错误的将特殊格式的文件解析成可执行网页文件(脚本),配合文件上传漏洞进行GetShell的漏洞! 1.2:IIS7.X 在IIS7.0和IIS7.5版本下也存在解析漏洞,在默认Fast-CGI开启状况下,在一个文…

Modbus通讯协议

Modbus通讯协议 Modbus协议是一种用于电子控制器之间的通信协议,‌它允许不同类型的设备之间进行通信,‌以便进行数据交换和控制。‌Modbus协议最初为可编程逻辑控制器(‌PLC)‌通信开发,‌现已广泛应用于工业自动化领…

Error: No module factory available for dependency type: CssDependency

本篇主要用来记录VUE打包的问题点,今天使用npm run build:prod 打包VUE出现如下问题: Error: No module factory available for dependency type: CssDependency 因为测试和预发布都挺正常的,正式环境竟然出问题,废话不多说&…

用 Python 编写的井字游戏

一.介绍 在本文中,我将向您展示如何使用 Python 创建一个非常简单的井字游戏。 井字游戏是一种非常简单的双人游戏。因此每次只能有两个玩家玩。该游戏也称为井字游戏或 Xs 和 Os 游戏。一个玩家玩 X,另一个玩家玩 O。在这个游戏中,我们有一…

java+springboot+mysql疾病查询网站01548-计算机毕业设计项目选题推荐(附源码)

摘 要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的疾病查询网站,会使疾病查询工作系统化、规范化,也会提高医院形象,提高管理效率。 本疾病查…

最强开源模型 Llama 3.1 部署推理微调实战大全

目录 引言一、Llama 3.1简介二、Llama 3.1性能评估三、Llama 3.1模型推理实战1、环境准备2、安装依赖3、模型下载4、模型推理 四、Llama 3.1模型微调实战1、数据集准备2、导入依赖包3、读取数据集4、处理数据集5、定义模型6、Lora配置7、配置训练参数8、开始Trainer训练9、合并…

Effective Java 学习笔记--第18、19条继承与复合

目录 继承的设计 对用于继承的类可覆盖方法的说明 被继承类还需要遵循的约束 如何对继承类进行测试 如何禁止继承 复合的设计 什么是复合 复合的缺点 这两条的关系较强,核心都是继承,但是更强调继承的脆弱性,而且给出了继承的一个更优…

【云原生】Helm来管理Kubernetes集群的详细使用方法与综合应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

香港电讯亮相2024算网融合产业发展大会,荣获“SD-WAN优秀产品奖”

秉承“开放、创新、融合、共赢”的发展战略,中国通信标准化协会算网融合产业及标准推进委员会(CCSATC621)联合中国信息通信研究院,于2024年7月10日共同召开“2024年算网融合产业发展大会”。本次大会发布了多项算网融合领域最新研…

SpringBoot 日志:从基础到高级的全面指南

📚 SpringBoot 日志:从基础到高级的全面指南 🔍 📚 SpringBoot 日志:从基础到高级的全面指南 🔍摘要引言正文内容一、日志概述 📜二、日志使用 📝2.1 打印日志 📣2.2 日志…