USB HID学习手册

USB HID学习手册

ID:37897994

大小:199.50 KB

页数:7页

时间:2019-06-02

USB HID学习手册_第1页
USB HID学习手册_第2页
USB HID学习手册_第3页
USB HID学习手册_第4页
USB HID学习手册_第5页
资源描述:

《USB HID学习手册》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、USBHID学习笔记一、PC程序部分:USB开发者论坛发布了一系列USB设备的类型定义,并配以相应的使用说明。下面表格显示出USB的设备类型(DEVEICECLASS):HID类型概述第一个被windows支持的usb外围设备类是人机接口设备。hid是humaninterfacedevice人机接口设备的英文缩写。是指直接和人进行互动的设备。如鼠标、键盘等。运行在WINDOWS98或其他更高的版本的操作系统的PC机,系统除了提供通用的USB设备的底层驱动以外,还单独提供了一些HID设备的完整驱动,应用程序可以很

2、容易的与操作系统内部的hid通讯。这样使得符合hid类的USB设备很容易开发与运行。也就是说,我们如果想实现一个USB的HID类设备,是不需要在Windows下开发自己的驱动程序。HID不一定要是标准的外设类型,唯一的要求是交换的数据存储在报文的结构内,设备固件必须支持报文的格式。任何工作在该限制之内的设备都可以成为一个hid,例如温度计,电压计,读卡机等。hid类设备只能使用控制传输与中断传输两种方式。HID的交换的数据格式称为报文。报文形式灵活,能处理任何类型的数据。HID特有的请求,Set_Report和

3、Get_Report为主机和设备之间的任何类型数据块传输提供了一种方法。主机发出Get_Report请求,设备响应向主机传送数据块;主机发出Set_Report请求,设备响应准备接收主机发出的数据块。对于一个全速设备,中断传输方式下每笔事务能够传送的最大数据量是64字节,全速设备每毫秒不能有超过一笔事务,所以每秒最多传送64000字节。高速设备,每笔事务能够传送的最大数据量是1024字节。对于不能一次传输完毕的数据,接收和发送报文可以采用多笔事务。下表列举出了与HID类设备通信过程中使用到的大量函数,这些函数的

4、用法在DDK的帮助文档中均有详细地解释。这些函数包含在Hid.dll、Setupapi.dll、Kernel32.dll三个动态链接库中,分别起到与HID设备通讯,寻找与识别设备,交换数据的作用。什么是GUID?全球唯一标识符(GUID)是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如Web浏览器和媒体播放器)中,都使用GUID。GUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个x是0-9或a-f范围内的一个十六进制的数字。例如:6

5、F9619FF-8B86-D011-B42D-00C04FC964FF即为有效的GUID值。为什么要使用GUID?世界上的任何两台计算机都不会生成重复的GUID值。GUID主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在Windows平台上,GUID应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。/*在win2000DDK:C:NTDDKinchidsdi.h头文件中。*/第一步:需要获得GUID(globaluniqueidentifier),

6、需要调用函数HidD_GetHidGuid.GUIDguidHID;HidD_GetHidGuid(&guidHID);通过调用它可以得到HID类设备的GUID,应用程序在与HID设备通讯之前,必须获取HID类的独特标志符GUID,它是一个128位值,每一位唯一表示了一个对象。通过这个API函数就可以从系统中读取该值,得到HID设备句柄.第二步:应检测符合设定参数的HID,使用函数SetupDiGetClassDevs。HDEVINFOhDevInfo;hDevInfo=SetupDiGetClassDevs(

7、&guidHID,NULL,0,DIGCF_PRESENT

8、DIGCF_DEVICEINTERFACE);当调用该函数成功,他返回一个包含所有的与设定参数匹配如:已连接和列举,的设备信息的结构体数组地址,该值在下一个将要调用的函数SetupDiEnumDeviceInterfaces中将使用到。typedefvoid*PVOID;//(winnt.h)typedefPVOIDHDEVINFO;//(setupapi.h)跟HANDLE是一样的:typedefvoid*HANDLE;//(winnt.h)第三步:

9、SetupDiEnumDeviceInterfacesBOOLbSuccessbSuccess=SetupDiEnumDeviceInterfaces(hDevInfo,NULL,&guidHID,index,&strtInterfaceData);第四步:通过上面函数SetupDiGetClassDevs(二)给出的设备信息得到的设备的一个接口的地址,每一次调用必需传递一个数组的索引

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。