报告描述符
- 格式:doc
- 大小:33.00 KB
- 文档页数:3
power device hid报告描述
HID (Human Interface Device) 报告格式通常用于描述那些通过 USB 接口与计算机通信的设备,例如键盘、鼠标、游戏控制器等。
这些报告包含描述设备属性和功能的详细信息,以便操作系统能够正确地识别和处理来自设备的输入。
一个HID 报告通常包含以下几个部分:
1. 描述符(Descriptor): 描述符是一个字节序列,它提供了有关设备的类型、子类和其他信息。
例如,它可能包括设备的供应商 ID、产品 ID、版本信息等。
2. 全局属性 (Global Properties): 这些属性描述了设备的一些全局设置,例如它是否支持数据报告、是否支持中断传输等。
3. 局部属性 (Local Properties): 这些属性提供了关于设备的功能和行为的
详细信息。
例如,如果设备是一个键盘,那么局部属性可能包括键盘布局、按键的数量和功能等。
4. 输入/输出元素 (Input/Output Elements): 这些元素描述了设备的数据元素,例如按钮、轴、开关等。
每个元素都有一个描述符,描述该元素的功能和行为。
在创建 HID 报告时,必须遵循特定的语法和格式规则,以确保操作系统能够正确地解析和处理报告。
这些规则是由 HID 规范定义的,任何想要创建HID 设备的制造商或开发者都必须遵守这些规范。
USB的HID通信协议USB HID(Human Interface Device)通信协议是一种用于实现USB设备与计算机之间人机交互的通信标准。
它定义了如何将输入和输出的信息在USB总线上进行传输并进行解释。
在该协议中,设备被称为USB HID设备,计算机被称为主机。
以下是USB HID通信协议的详细介绍。
1.通信协议层次结构USBHID通信协议定义了四个层次的模型。
最底层是物理层,负责USB总线的电气特性和通信速率。
上一层是USB传输层,负责数据包传输的同步和差错检测。
再上一层是USB配置层,负责设备枚举和配置。
最顶层是HID层,负责定义设备的输入输出报告格式和解析。
2.报告描述符HID通信协议通过报告描述符定义设备的输入和输出报告格式。
输入报告描述设备向主机传输输入数据,输出报告描述主机向设备传输输出数据。
报告描述符包含了报告ID、报告大小和报告类型等信息,主机通过解析报告描述符来理解设备传输的数据。
3.报告传输设备通过中断传输和控制传输与主机进行通信。
中断传输是指设备周期性地传输输入报告给主机,主机可以根据需要设置中断传输的频率。
控制传输是指主机向设备发送控制命令或获取设备属性信息。
4.事件推送和轮询设备可以通过事件推送和轮询两种方式向主机传输数据。
事件推送是指设备主动向主机发送输入报告。
轮询是指主机定期向设备发送轮询请求,设备在收到请求后返回输入报告。
事件推送和轮询可以结合使用,以满足不同的应用需求。
5.输入报告解析主机通过解析输入报告来获取设备传输的数据。
输入报告由报告ID和报告数据组成。
主机可以根据报告描述符的信息来解析报告数据,获取具体的输入信息。
解析后的数据可以用于触发软件事件或更新设备状态。
6.输出报告处理主机通过发送输出报告向设备传输数据。
输出报告也由报告ID和报告数据组成。
设备可以根据报告描述符的信息解析报告数据,并根据需要进行相应的处理。
7.随机访问HID通信协议支持主机以随机方式访问设备的输入输出报告。
一、应用场合USB HID类是比较大的一个类,HID类设备属于人机交互操作的设备。
用于控制计算机操作的一些方面,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球、电话拨号设备、VCR遥控等等设备。
另外,使用HID设备的一个好处就是,操作系统自带了HID类的驱动程序,而用户无需去开发很麻烦的驱动程序,只要直接使用API调用即可完成通信。
所以很多简单的USB设备,喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。
二、USB HID类可采用的通信管道所有的HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。
控制管道主要用于以下3个方面:•接收/响应USB主机的控制请示及相关的类数据•在USB主机查询时传输数据(如响应Get_Report请求等)•接收USB主机的数据中断管道主要用于以下两个方面:•USB主机接收USB设备的异步传输数据•USB主机发送有实时性要求的数据给USB设备从USB主机到USB设备的中断输出数据传输是可选的,当不支持中断输出数据传输时,USB主机通过控制管道将数据传输给USB设备。
三、与USB HID设备有关的描述符HID设备的描述符除了5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,见百合电子工作室的另一篇文章:USB开发基础--USB命令(请求)和USB描述符)外,还包括3个HID设备类特定描述符:HID描述符、报告描述符、实体描述符。
除了HID的三个特定描述符组成对HID设备的解释外,5个标准描述符中与HID设备有关的部分有:•设备描述符中bDeviceClass、bDeviceSubClass和bDeviceProtocol 三个字段的值必须为零。
•接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备符是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。
HID报告描述1报告描述简介Report Description,即上报事件的描述,描述所支持事件的格式及取值意义,比如鼠标按键上报格式、左键右键中间键分别对应的值等;报告描述跟JSON有些类似,都是结构数据,格式类似{usage:1,{id:0,usage:1.1,size:1,count:1,min:0,max:5,format:xx}}2描述符结构几个主要的名词解释一下:Collection,集合,相当于{},用来包含一组描述;Collection有Application和Physical之分,Application表示大项,里有可以有很多Physical子项Report,报告,在上图中只是一个ID号,来区分不同report。
Main Item,主项,例出来哪些项Report Size,每一项有多少位。
Report Count,总共有多少项Logical Minimum,每个项的取值范围中的最小值,即最小只能取的值。
Logical Maximum,每个项的取值范围中的最大值,即最大只能取的值。
Usage,用途,表示有哪些功能,一个Usage代表一个功能。
一项描述基本上是由两个字节构成,第一个字节表示名称,第二个字节表示值,如Report Size,8Report Size是名称,8是它的值。
Report Size对应的16制数据是0x75,在代码里上面的表现是0x75,0x08。
有些名称不需要带值,如Collection的结束符())为0xC0,就没有第二个字节。
3名称名称有分长字和短字,这里只介绍短字,短字是由一个字节构成,结构如下:第3~2位表示类型,有如下几种:0=Main1=Global2=Local3=Reserved第1~0位表示名称的值由多少个字节构成,具体意义如下:0=0bytes,名称后面不带值1=1bytes,名称后面带1个值2=2bytes,名称后面带2个值3=4bytes,名称后面带4个值第7~4位表示Tag,Tag与类型对应,每种类型有很多不同的Tag。
usb描述符含义
USB(Universal Serial Bus)描述符是在USB设备和主机之间进行通信时使用的数据结构。
USB 描述符包含有关USB设备或设备的某个接口的信息,例如设备的厂商ID、产品ID、设备类别、端点信息等。
USB描述符通常由设备在被连接到主机时发送给主机。
以下是常见的USB描述符及其含义:
1. 设备描述符(Device Descriptor):
-包含设备的基本信息,如USB规范版本、设备类别、厂商ID、产品ID、设备版本号等。
2. 配置描述符(Configuration Descriptor):
-描述设备的一个或多个配置,每个配置可能包含一个或多个接口。
3. 接口描述符(Interface Descriptor):
-描述一个配置中的一个接口,包括接口的数量、接口的类别、子类别和协议。
4. 端点描述符(Endpoint Descriptor):
-描述接口上的每个端点(endpoint),包括端点的地址、传输类型(控制、批量、等等)、最大数据包大小等信息。
5. 字符串描述符(String Descriptor):
-包含设备的可读字符串信息,例如制造商名称、产品名称等。
这些描述符是通过设备的控制端点(Control Endpoint)进行交互的,控制端点使用标准的USB控制请求(Control Requests)来获取有关设备和接口的信息。
USB描述符是为了让主机能够正确地配置和与USB设备进行通信而设计的,它们提供了有关设备和接口的重要信息,以确保设备与主机之间的兼容性。
HID协议HID(Human Interface Device)协议是一种用于计算机与人机交互设备之间通信的协议。
它定义了计算机如何与键盘、鼠标、游戏手柄等输入设备进行通信,以及如何接收和处理来自这些设备的输入信息。
HID协议被广泛应用于各种操作系统和硬件平台中,为用户提供了良好的输入设备兼容性和可靠性。
HID协议的基本原理HID协议使用了一种称为报告(Report)的数据结构进行通信。
报告是一种特定格式的数据包,用于携带输入设备发送的信息。
在HID协议中,输入设备被称为HID设备,输出设备被称为HID主机。
HID主机通过发送请求来从HID设备获取报告,而HID设备则通过发送报告来向HID主机发送输入信息。
HID协议中定义了两种类型的报告:输入报告和输出报告。
输入报告用于向HID主机发送输入数据,比如按键信息、鼠标移动等。
而输出报告用于向HID设备发送控制命令,比如控制LED灯的亮度、设置鼠标灵敏度等。
HID协议的具体实现HID协议的具体实现方式因不同的操作系统和硬件平台而异。
以下以Windows 操作系统为例,介绍HID协议的具体实现过程。
在Windows操作系统中,HID协议的实现主要涉及到以下几个方面:1.设备识别:当插入一个HID设备时,Windows会自动识别设备并加载相应的驱动程序。
驱动程序是用来将HID设备的输入信息转换为操作系统能够理解的格式。
2.报告描述:HID设备需要提供一个报告描述符,用于描述设备支持的报告类型和报告格式。
报告描述符通常以二进制格式存储在设备的固件中,并在设备插入时由操作系统读取。
3.报告传输:HID设备和HID主机之间的报告传输通常使用USB接口进行。
HID设备通过USB接口将报告发送给HID主机,而HID主机则通过USB接口向HID设备发送请求并接收报告。
4.数据处理:HID主机接收到报告后,需要对报告进行解析和处理,以获取其中的输入数据。
操作系统提供了HID API供开发者使用,开发者可以使用这些API来访问和处理HID设备的输入信息。
USB HID介绍HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB 协议的相关内容。
USB设备描述符-概述当插入USB设备后,主机会向设备请求各种描述符来识别设备。
那什么是设备描述符呢?Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB 设备中,用于描述一个USB设备的所有属性,USB主机是通过一系列命令来要求设备发送这些信息的。
描述符的作用就是通过命令操作来给主机传递信息,从而让主机知道设备具有什么功能、属于哪一类设备、要占用多少带宽、使用哪类传输方式及数据量的大小,只有主机确定了这些信息之后,设备才能真正开始工作。
USB有那些标准描述符?USB有5种标准描述符:设备描述符、配置描述符、字符描述符、接口描述符、端点描述符。
描述符之间有一定的关系,一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。
由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。
在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描述符中的配置集合长度,一次将配置描述符、接口描述符、端点描述符一起一次读回。
其中可能还会有获取设备序列号,厂商字符串,产品字符串等。
设备描述符struct _DEVICE_DEscriptOR_STRUCT{BYTE bLength; //设备描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x01WORD bcdUSB; //USB版本号BYTE bDeviceClass; //USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型,0x00不是在设备描述符中定义的,如HIDBYTE bDeviceSubClass; //usb分配的子类代码,同上,值由USB规定和分配的,HID 设备此值为0BYTE bDeviceProtocl; //USB分配的设备协议代码,同上HID设备此值为0BYTE bMaxPacketSize0; //端点0的最大包的大小WORD idVendor; //厂商编号WORD idProduct; //产品编号WORD bcdDevice; //设备出厂编号BYTE iManufacturer; //描述厂商字符串的索引BYTE iProduct; //描述产品字符串的索引BYTE iSerialNumber; //描述设备序列号字符串的索引BYTE bNumConfiguration; //可能的配置数量}配置描述符struct _CONFIGURATION_DEscriptOR_STRUCT{BYTE bLength; //配置描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x02WORD wTotalLength; //配置所返回的所有数量的大小BYTE bNumInterface; //此配置所支持的接口数量BYTE bConfigurationVale; //Set_Configuration命令需要的参数值BYTE iConfiguration; //描述该配置的字符串的索引值BYTE bmAttribute; //供电模式的选择BYTE MaxPower; //设备从总线提取的最大电流}字符描述符struct _STRING_DEscriptOR_STRUCT{BYTE bLength; //字符串描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x03BYTE SomeDescriptor[36]; //UNICODE编码的字符串}接口描述符struct _INTERFACE_DEscriptOR_STRUCT{BYTE bLength; //接口描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x04BYTE bInterfaceNunber; //接口的编号BYTE bAlternateSetting;//备用的接口描述符编号BYTE bNumEndpoints; //该接口使用端点数,不包括端点0BYTE bInterfaceClass; //接口类型 HID设备此值为0x03BYTE bInterfaceSubClass;//接口子类型 HID设备此值为0或者1BYTE bInterfaceProtocol;//接口所遵循的协议BYTE iInterface; //描述该接口的字符串索引值}端点描述符struct _ENDPOIN_DEscriptOR_STRUCT{BYTE bLength; //端点描述符的字节数大小BYTE bDescriptorType; //描述符类型编号,为0x05BYTE bEndpointAddress; //端点地址及输入输出属性BYTE bmAttribute; //端点的传输类型属性WORD wMaxPacketSize; //端点收、发的最大包的大小BYTE bInterval; //主机查询端点的时间间隔}HID设备描述符温习了以上内容,我们再来看看HID协议与这些描述符之间的关系。
描述符是什么意思
描述符是什么意思?就是程序员用来解释某些代码的,当然这也可以作为其他领域专家理解的描述,例如:说人话、举例子等。
所有用户都有相同的描述符。
当你对这段代码做任何改动时,都会被所有的用户所看到并且能看懂。
描述符是解释的对象,描述符有两种表示形式:变量名和变量值;而变量名则由字母数字及下划线组成。
您所选的项目,是您在使用 Visual Studio 中创建的一系列产品集合。
每个产品都包含多个描述符。
每个描述符均可用于创建对象、方法或类。
Visual Studio 将描述符视为类的属性。
因此,创建的对象的属性将与其所包含的描述符有关。
例如,“文档”类可具有“新建文档”、“打开文档”、“保存文档”、“删除文档”、“打印文档”、“搜索文档”、“发送邮件”等属性。
描述符是一个特殊的标识符,可以帮助程序员编写和维护更好的代码,提高代码可读性。
程序员只需知道变量名称及它们之间的关联,就可以实现编程语言的基本功能。
如果需要编译的源程序长度过大,那么仅用描述符很难清楚地描述所有信息。
另外,多个产品中的某个部分可能是多重复杂性的。
例如,一个产品可能包括不同的方法和属性,因此需要描述符来协调它们之间的关系。
这样做不但可以节省时间,还能减少重复的工作,因为当进行修改时,必须首先修改相应的描述符。
此外,某个产品中可能存在不止一种技术方案。
- 1 -。
竭诚为您提供优质文档/双击可除usb键盘鼠标协议篇一:usb鼠标键盘报告描述符介绍在usb中,usbhost是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。
usb报告描述符(Reportdescriptor)是hid设备中的一个描述符,它是比较复杂的一个描述符。
usbhid设备是通过报告来给传送数据的,报告有输入报告和输出报告。
输入报告是usb设备发送给主机的,例如usb鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据数据返回给电脑等;输出报告是主机发送给usb设备的,例如键盘上的数字键盘锁定灯和大写字母锁定灯等。
报告是一个数据包,里面包含的是所要传送的数据。
输入报告是通过中断输入端点输入的,而输出报告有点区别,当没有中断输出端点时,可以通过控制输出端点0发送,当有中断输出端点时,通过中断输出端点发出。
而报告描述符,是描述一个报告以及报告里面的数据是用来干什么用的。
通过它,usbhost可以分析出报告里面的数据所表示的意思。
它通过控制输入端点0返回,主(usb键盘鼠标协议)机使用获取报告描述符命令来获取报告描述符,注重这个哀求是发送到接口的,而不是到设备。
一个报告描述符可以描述多个报告,不同的报告通过报告id来识别,报告id在报告最前面,即第一个字节。
当报告描述符中没有规定报告id时,报告中就没有id字段,开始就是数据。
更详细的说明请参看usbhid 协议,该协议可从下载。
usb报告描述符可以通过使用hiddescriptortool来生成,这个工具可以到下载,为了方便大家,我顺便上传了一份。
/upload/blog/20xx/4/2/af7c3443-ad61-4465-adc7-a74d2 8bbc322.zipuploadfile-/20xx-4/42672233.zip下面通过由hiddescriptortool生成的usb鼠标和usb键盘来说明一下报告描述符和报告。
USB的描述符与命令请求详解一、描述符1.什么是描述符所谓描述符,就是用于描述设备特性的具有特定格式排列的一种数据组织结构。
2.描述符的作用描述符的作用在于设备向主机汇报自己的信息、特征,主机根据这些信息从而加载相应的驱动程序。
3.描述符的分类描述符分为三大类:标准描述符、设备类描述符、厂商描述符。
除字符串描述符可选外,任何设备都必须包含剩下的几种标准描述符。
在USB1.0中规定了5种标准的描述符:设备描述符配置描述符接口描述符端点描述符字符串描述符规定的设备类描述符有:集线器类描述符、人机接口类描述符。
下表是三种描述符的类型值:4.使用的几种类设备类DeviceClass下表是设备类值的含义。
接口类InterfaceClass下表是接口类值的含义。
类的交叉与独享在描述符中,只有设备描述符和接口描述符中会有类别之分,即只有设备和接口会分类使用,不过有些类别的使用只需经过设备或接口的区分就可彻底清楚明白,这说明在设备类别和接口类别的定义上会有共同的类别名称。
而有些类别则是设备或接口独享的,下表是与使用设备相关的类别划分交叉或共享情况:(此表也适用于标准命令Get_Descriptor中wValue域高字节的取值含义)【说明:】在设备或接口分类上均可彻底分清使用的(Usage = Both),即在任一处描述符中定义即可的分清楚使用的类(Usage = Both)的基本类有:02h ------------- 通信及CDC控制类;DCh ------------ 诊断设备类;EFh ------------- 混杂设备类;FFh ------------- 厂商定义的设备类。
5.标准描述符设备描述符【说明1:】当设备类型bDeviceClass = 0时,说明类型将由接口描述符中定义的为准。
【说明2:】从设备描述符表格中可知,有3个索引值:厂商信息索引、产品信息索引、设备序列号索引,这意味着,将有3个字符串描述符为其准备。