[BLE--HID]USB HID设备类定义

简述

HID设备,即人机交互设备,常见的有鼠标,键盘,游戏手柄,等等。一般有线方式都是通过USB连线连接到机器设备,作为用户输入设备。在蓝牙技术中,HID设备的接入就是无线的了。不过HID的相关定义当然还是一样的,不然设备驱动,兼容等问题都会有很多麻烦了。蓝牙中有HID, HOGP profile,但是只是在蓝牙数据通信上做的规范,HID具体含义相关,还是需要看USB相关的HID文档。

USB设备类?

USB设备可以在启动时,或者是在之后的连接状态下,都能够被主机进行配置。USB设备种类是非常多的,前面只列举了皮毛,而众多的USB设备之间差异化还是特别大的,这样的情况,就会增大开发的难度,因为几乎每类USB设备都得重新对其进行规范和定义了。于是,设备类被提出,就是将众多的USB设备进行大类的划分,这样,每个大类中的USB设备之间就可以抽离出许多共性的东西,那样就减少了许多的重复定义和开发工作了,那具体的HID设备到底都被划分成了哪些大类呢?请看如下:

定义HID设备类目的

之所以单独定义了HID设备类,除了上面的原因,还有如下:

- 尽量节省设备数据空间(应当是通过定义简单的字节流,来表示比较复杂的内涵……)

- 允许Application跳过无用信息(不遵循HID设备类定义设备,HID App当然没必要关注)

- 可扩展,且稳定

- 支持嵌套(nesting)和集合(collection)(用类的方式来定义,当然就具有了集合,分层等属性咯)

- 运行通用应用的自描述(这个应当就是指的descriptor的管理方式了)

设备管理

USB设备一般会同时有多个连接到一台机器,那每个设备应当有自己的自描述,因此主机就知道如何区分某个设备了。这些字描述信息,会存放在设备的掉电不失的存储区,称为descriptor,被翻译为描述符。这些descriptor有不止一种,如report,physical等:

Report descriptor描述的是该HID设备会产生的一些数据(格式,含义等等),Physical descriptor描述的是使用者人的一些信息:

对USB HID设备而言,Descriptor的框架如下:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-31 00:39:15

[BLE--HID]USB HID设备类定义的相关文章

Windows与自定义USB HID设备通信说明.

1 .   所使用的典型 Windows API CreateFile ReadFile WriteFile 以下函数是 DDK 的内容: HidD_SetFeature HidD_GetFeature HidD_SetOutputReport HidD_GetInputReport 其中, CreateFile 用于打开设备: ReadFile . HidD_GetFeature . HidD_GetInputReport 用于设备到主机方向的数据通信: WriteFile . HidD_Se

C# 访问USB(HID)设备

原文:C# 访问USB(HID)设备 二话不说,直接给代码,如果您真想做这方面的东西,还是稍微研究下,没有现成的好类用,就需要自己了解其原理 //引用空间 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using S

stm32 USB hid设备与PC进行双向数据传输时PC不识别USB设备

stm32 USB hid设备与PC进行双向数据传输时PC不识别USB设备,或者开始时识别,拔出后再插入就没有反应了,就连鼠标U盘也没有反应. 我的问题是,我安装了VMware虚拟机,并进行USB设备的分配,使得虚拟机系统也识别USB设备. 所以,解决问题的办法如下: 在<属性>中选择禁用. 然后把下面的VMware Workstation Server 也禁用了.重启电脑就OK了.

转 关于USB HID报告描述符

原文地址 USB HID报告及报告描述符简介 在USB中,USBHOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等.USB报 告描述符(ReportDescriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符.USBHID设备是通过报告来给传送数据的,报告 有输入报告和输出报告.输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据数据返回给电脑等:输出 报告是主机发送在

USB HID描述符【转】

本文转载自: USB是个通用的总线,端口都是统一的.但是USB设备却各种各样,例如USB鼠标,USB键盘,U盘等等,那么USB主机是如何识别出不同的设备的呢?这就要依赖于描述符了.USB的描述符主要有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,HID描述符,报告描述符等等.关于报告描述符,请看我以前写的:<USB HID报告及报告描述符简介 > http://group.ednchina.com/93/198.aspx.一个USB设备有一个设备描述符,设备描述符里面决定了该设

USB HID报告及报告描述符简介

在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等.USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符.        USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告.输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据数据返回给电脑等:输出报告是主机发送给USB设备的,例如键盘上的数字

C#与USB&nbsp;HID间的通信

原文:C#与USB HID间的通信 C#与USBHID接口的通讯相对于与串口间的通讯较为复杂,其中需要多次调用到Windows的一些API.其原理编者尚未全部理清,以下提供简单的USBHID通讯流程.(参考网友资料) 一.获取所有连接HID的设备信息. 1.通过一个空的GUID来获取HID的全局GUID. Guid HIDGuid = Guid.Empty; /// /// The HidD_GetHidGuid routine returns the device interface GUID

USB HID通讯流程

创建C# USB hid通讯类 1. 读取Hid设备全局id [DllImport("hid.dll")]   private static extern void HidD_GetHidGuid(ref Guid HidGuid);   2. 取得一个包含所有HID接口信息集合的句柄        [DllImport("setupapi.dll", SetLastError = true)] private static extern IntPtr SetupD

USB HID usage table

This usage table lets usbhidctl decode the HID data correctly for the APC RS/XS1000's. This work was obtained from [email protected] Sample output is available both with and without the table. Note that the default /usr/share/misc/usb_hid_usages alre