HID设备接口开发说明

合集下载

hid标准

hid标准

hid标准HID标准是一种设备类别,代表着“人类接口设备”,它是指计算机接口与用户之间的所有输入设备,如鼠标、键盘以及游戏控制器等。

HID标准的应用非常广泛,它通过USB、蓝牙、RF以及IR接口与计算机进行连接,并在各类操作系统和硬件平台上进行操作。

一、HID标准的背景HID标准最早出现在USB-IF的1.1版本规范中,它是为了解决USB接口在硬件交互层面上的缺陷而出现的。

在之前的标准中,USB只支持若干设备类型,如打印机、外部存储器等。

但是这些类型的设备并不能完整的支持多种输入设备,例如,鼠标和键盘。

而人们对于HID 设备的需求性非常强烈,由于无法满足其需求,所以HID标准就应运而生了。

二、HID属性HID具有下列属性:1. Plug and play属性,它使得设备需要时即可自动实现省略安装过程的性能;2. 高速的数据传输:能够在1.1兼容的主机上使用全速传输,或者在兼容标准的硬件上采用高速传输;3. 兼容USB接口,能够在各种操作系统及硬件平台上进行应用。

三、HID接口在HID设备的链路层面,它使用一些标准的传输方式与USB主机进行连接。

例如,在USB接口上,HID设备使用USB传输类型中的Interrupt传输方式,用于每次向主机传输一个数据包,以达到实时交互的作用。

四、HID设备的应用HID设备具有非常广泛的应用领域,其中最重要的是计算机外设市场,如键盘、鼠标、游戏控制器、条码扫描器、指纹识别设备、智能手表等。

除此之外,它在智能家居领域、汽车电子、医疗器械等领域都有着广泛的应用。

总之,HID标准已经逐渐成为了跨越多个硬件厂商、计算机操作系统平台的通用设备,这使得生产商变得更为便利,用户的体验更为优良。

世界各国将HID标准作为一项国际标准,这将进一步推动HID 技术的发展,让它变得更加实用、先进。

HID报告描述符

HID报告描述符

基于HID 类的USB 人机接口设计作者:北京交通大学 涂晓强 周洪利 来源:本站原创 点击数:235 更新时间:2007-11-27您可以添加到网摘 让更多人关注此文章:目前市场上USB 设备的种类繁多,但是这些设备会有一些共同的特性,根据这些特性可以把USB 设备划分为不同的类,如显示设备、通信设备、音频设备、大容量存储设备、人机接口设备(HID )。

这里介绍如何实现HID 类设备,以及如何在应用程序中对HID 类设备进行访问。

从Windows98操作系统开始,为HID 类设备提供了通用的驱动程序,所以只要按照HID 设备类的规范编写设备的固件程序,就能够让Windows 系统自动识别设备,省去了复杂的驱动程序编写过程。

1 HID 协议简介人机接口设备(HID )主要是指一些人与计算机进行交互的设备,如键盘、鼠标、游戏杆等;但是HID 设备不一定非要是这些人机交互设备,只要符合HID 设备级定义规范要求的都可以认为是HID 设备。

HID 设备有以下主要特点:① 交换的数据存储在报告的结构内,设备必须支持HID 报告格式。

② 每笔事务可以携带小量或中量的数据。

低速设备每笔事务最大为8字节,全速设备每笔最大为64字节,高速设备最大为1 024字节;③ 有最大传输速度的限制。

低速设备最快10 ms 一笔事务,最高速度为800 B/s ;全速设备最快1 ms 一笔事务,最高速度为64 KB/s ;高速设备最快125 μs 一笔事务,最高速度为24.576 MB/s 。

④ 没有传输速度的保证。

当插入USB 设备后,主机会向设备请求各种描述符来识别设备。

为了把一个设备识别为HID 类别,设备在定义描述符的时候必须遵守HID 规范。

图1显示了HID 各种描述符之间的关系。

事实上,每个设备可以有多个接口描述符来实现多接口设备,而且每个接口描述符下应该有多个端点描述符。

图1 HID各种描述符之间的关系从图1中可以看出,除了USB标准定义的一些描述符外,HID设备还必须定义HID描述符。

USB-HID协议中文版

USB-HID协议中文版

第8章USB接口HID设备HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备,例如键盘、鼠标与游戏杆等。

在USB设备中,HID设备的成本较低.另外,HID设备并不一定要有人机交互功能,只要符合HID类别规范的设备都是HID设备。

Wndows操作系统最先支持的HID设备。

在windows 98以及后来的版本中内置有HID 设备的驱动程序,应用程序可以直接使用这些驱动程序来与设备通信。

在设计一个USB接口的计算机外部设备时,如果HID类型的设备可以满足需要,可以将其设计为HID类型设备,这样可以省去比较复杂的USB驱动程序的编写,直接利用Windows操作系统对标准的HID类型USB设备的支持。

8.1 HID设备简介8.1.1 HID设备的特点•交换的数据储存在称为报表(Report)的结构内,设备的固件必须支持HlD报表的格式。

主机通过控制和中断传输中的传送和请求报表来传送和接收数据。

报表的格式非常灵活。

•每一笔事务可以携带小量或中量的数据.低速设备每一笔事务最大是8B,全速设备每一笔事务最大是64B,高速设备每一笔事务最大是1024B.一个报表可以使用多笔事务。

•设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动。

所以主机会定时轮询设备,以取得最新的数据。

•HID设备的最大传输速度有限制.主机可以保证低速的中断端点每10ms内最多1笔事务,每一秒最多是800B。

保证全速端点每lms一笔事务,每一秒最多是64000B。

保证高速端点每125 us三笔事务,每一秒最多是24。

576MB。

•HID设备没有保证的传输速率。

如果设备是设置在10ms的时距,事务之间的时间可能等于或小于10ms。

除非设备是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据.这是最快的轮询速率,所以端点可以保证有正确的带宽可供使用.HID设备除了传送数据给主机外,它也会从主机接收数据.只要能够符合HlD类别规范的设备都可以是HID设备.设备除了HlD接口之外,它可能同时还包含有其他的USB接口。

USBHID协议中文版__USB接口HID设备

USBHID协议中文版__USB接口HID设备

USBHID协议中文版__USB接口HID设备##USBHID协议
USBHID协议(Universal Serial Bus Human Interface Device)是
USB设备的一种常用协议,它主要用于连接和控制人与计算机的交互设备,如键盘、鼠标、游戏手柄、虚拟摇杆、扫描仪和图形表格等设备。

它主要
用于USB设备的连接和控制,以及电脑上支持的操作系统,如Windows、Mac OS、Linux。

USBHID协议使用HID类设备来提高人机交互的效率,有效地减少计
算机程序的数据处理时间。

使用HID类设备的程序可以实时地进行输入,
计算机也可以实时地反馈反应。

通过使用HID类设备,可以有效地提高用
户体验。

USBHID协议具有许多优点,如:支持所有兼容USB的操作系统,不
需要额外的驱动程序,可以支持各种类型的HID设备,延长设备的稳定性,减少传输延迟,减少接口占用,支持许多不同的传输速率,可以支持许多
不同的设备和设备类型,支持多种接口,支持大量的数据通信,以及减少
计算机程序数据处理时间等优点。

另外,USBHID协议也给使用这些设备带来了极大的便利,如:可以
将设备连接到计算机,让设备能够立即响应输入;可以使用设备时装载更
多的功能;可以在多个设备之间进行快速传输;可以有意识地管理电源;
可以支持多种设备,如跳线选择器。

USBHID协议中文版——USB接口HID设备

USBHID协议中文版——USB接口HID设备

第8章USB接口HID设备HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备,例如键盘、鼠标与游戏杆等。

在USB设备中,HID设备的成本较低。

另外,HID设备并不一定要有人机交互功能,只要符合HID类别规范的设备都是HID设备。

Wndows操作系统最先支持的HID设备。

在windows 98以及后来的版本中内置有HID 设备的驱动程序,应用程序可以直接使用这些驱动程序来与设备通信。

在设计一个USB接口的计算机外部设备时,如果HID类型的设备可以满足需要,可以将其设计为HID类型设备,这样可以省去比较复杂的USB驱动程序的编写,直接利用Windows操作系统对标准的HID类型USB设备的支持。

8.1 HID设备简介8.1.1 HID设备的特点•交换的数据储存在称为报表(Report)的结构内,设备的固件必须支持HlD报表的格式。

主机通过控制和中断传输中的传送和请求报表来传送和接收数据。

报表的格式非常灵活。

•每一笔事务可以携带小量或中量的数据。

低速设备每一笔事务最大是8B,全速设备每一笔事务最大是64B,高速设备每一笔事务最大是1024B。

一个报表可以使用多笔事务。

•设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动。

所以主机会定时轮询设备,以取得最新的数据。

•HID设备的最大传输速度有限制。

主机可以保证低速的中断端点每10ms内最多1笔事务,每一秒最多是800B。

保证全速端点每lms一笔事务,每一秒最多是64000B。

保证高速端点每125 us三笔事务,每一秒最多是24.576MB。

•HID设备没有保证的传输速率。

如果设备是设置在10ms的时距,事务之间的时间可能等于或小于10ms。

除非设备是设置在全速时在每个帧传输数据,或是在高速时在每个微帧传输数据。

这是最快的轮询速率,所以端点可以保证有正确的带宽可供使用。

HID iCLASS 13.56 MHz 读 写非接触式智能卡和读卡器 应用说明

HID iCLASS 13.56 MHz 读 写非接触式智能卡和读卡器 应用说明

应用说明 # 28HID iCLASS 13.56 MHz 读/写非接触式智能卡和读卡器HID iCLASS 13.56 MHz 读卡器、读卡器/写卡器和非接触式智能卡与现有的门禁系统兼容,并且通过与不同应用系统提供商的整合,可以在更多领域应用,如生物识别、考勤系统、电子货币及自动售买、HVAC 自动控制和记帐、IT 安全认证、警卫巡逻、停车管理和医疗或服务记录储存。

HID iCLASS读卡器可以将 13.56MHz RF 能量转换成电能,与无源iCLASS非接触式智能卡进行通讯。

ISO 15693 标准可以实现更长的读取范围,同时又符合FCC 能量输出限制。

由于认证密钥更大,加密功能更强,iCLASS提供的安全性比同类的 13.56MHz 技术,如 MIFARE 1要高。

与 MIFARE 的 48 位密钥相对,iCLASS使用 64 位密钥,而且iCLASS使用多种不同的密钥,并且可以使用DES 或 Triple DES 在卡上加密储存的数据,而 MIFARE 是随意存储其密钥和数据。

本文档将做概括介绍,可以让你熟悉应用系统提供商、咨询商、经销商和最终用户是如何使用iCLASS功能的。

要实现一项新的应用,需要“软件开发套件”以及厂家培训和认证。

iCLASS读卡器iCLASS读卡器备有三种颜色:黑色、灰色和白色。

它们还备有以下三种不同的规格用于各种不同的用途,见下所述。

除不同的 LED 和蜂鸣器操作模式之外,这些读卡器还有许多其它配置选项,可以在工厂进行预设置,或使用 HID 技术支持部门提供的专用配置卡在现场进行修改。

iCLASS读卡器产品可以分为三类:只读型、读/写型和 OEM 型。

只读型(韦根输出)R10 – 用在门框、竖框和其它受限制的空间上R30 – 用在 80mm 正方形欧洲或亚洲背盒上R40 – 用在美国 J-box 上,另外还配有欧洲/亚洲安装孔这些读卡器都配有标准韦根接口,可以配合多数门禁系统使用。

hidd_getinputreport过程 -回复

hidd_getinputreport过程-回复hid_getinputreport是一种用于从HID设备读取输入报告的过程。

HID 是Human Interface Device的缩写,指的是各种输入设备,如键盘、鼠标和游戏手柄等。

hid_getinputreport函数允许应用程序从HID设备中获取输入报告的数据,并根据需要进行分析和处理。

本文将详细介绍hid_getinputreport过程的实现原理和步骤,并探讨其在实际开发中的应用。

第一步:了解HID设备和报告格式在深入研究hid_getinputreport过程之前,我们首先需要了解HID设备和报告格式。

HID设备是指通过USB或蓝牙等接口与计算机通信,用于输入人机交互数据的设备。

每个HID设备都有一个或多个报告描述符,用于定义数据的格式和意义。

报告格式可以是固定的,也可以是可变的,取决于设备的特性和功能。

因此,在编写hid_getinputreport函数之前,我们需要了解目标HID设备的报告描述符,以正确解析输入报告。

第二步:打开HID设备在开始读取输入报告之前,我们需要使用相关的API函数打开目标HID 设备。

具体的API函数根据操作系统和编程语言的不同而有所差异。

一般而言,我们需要使用设备的唯一标识符来打开HID设备。

在成功打开设备之后,我们就可以通过设备句柄访问设备的属性和数据。

第三步:确定输入报告IDHID设备可以通过多个输入报告传输数据。

每个输入报告都有一个唯一的ID,用于标识不同的报告类型。

我们需要确定需要读取的输入报告ID,并在之后的读取过程中使用该ID。

一般情况下,设备的报告描述符会提供相关信息,以帮助我们确定所需的报告ID。

第四步:设置读取缓冲区在读取输入报告之前,我们需要准备用于接收数据的缓冲区。

根据报告描述符中的定义,输入报告可以具有不同的长度和数据类型。

我们需要根据实际的报告格式设置合适的缓冲区大小。

在设置缓冲区之后,我们可以通过hid_getinputreport函数将数据读取到缓冲区中。

c++ hid 中断传输的写法

很高兴能为您撰写关于C++ HID中断传输的文章。

在我们深入讨论这个主题之前,让我们先了解一下HID和中断传输的概念。

HID(Human Interface Device)是一种通用的输入输出设备接口,它使得主机设备(如PC)可以直接与各种外围设备(如键盘、鼠标、游戏手柄等)进行通讯交互。

而中断传输则是一种数据传输方式,它允许外围设备在没有事先请求的情况下向主机设备发送数据,从而确保及时响应和处理外围设备的输入。

现在让我们来深入探讨C++中如何进行HID中断传输的写法。

在C++中,我们可以使用libusb这样的库来实现对HID设备的访问和数据传输。

我们需要在代码中引入libusb库,并初始化libusb环境。

我们可以通过libusb提供的接口函数来打开指定的HID设备,并设置其参数,包括端点位置区域、中断传输方向等。

在进行中断传输时,我们需要使用libusb提供的异步传输函数来发起数据传输请求。

在发起传输请求之前,我们需要准备好传输的数据缓冲区,并指定传输的长度。

一旦数据传输完成,我们可以通过回调函数来处理接收到的数据,并进行相应的处理和响应。

在C++中进行HID中断传输的写法需要考虑到一些细节和注意事项。

我们需要保证设备端和主机端代码的一致性,确保数据的正确解析和处理;我们还需要处理传输过程中出现的各种错误和异常情况,保证程序的稳定性和健壮性;我们还需要考虑设备的插拔和状态变化对传输的影响,以及如何动态调整传输参数和策略。

C++中进行HID中断传输的写法需要我们熟悉HID设备的工作原理和通讯协议,了解libusb等相关库的使用方法,以及具备良好的编程习惯和调试能力。

通过不断的实践和探索,我们可以更好地掌握C++中进行HID中断传输的写法,并应用于实际的项目和应用场景中。

总结回顾:通过本文的讨论,我们深入探讨了C++中进行HID中断传输的写法。

我们了解了HID和中断传输的基本概念,介绍了使用libusb库进行HID设备访问和数据传输的方法,还讨论了在实际应用中需要考虑的细节和注意事项。

hid的用法

hid的用法HID(Human Interface Device)是指人机接口设备,通常用于描述一类设备,例如键盘、鼠标、游戏手柄等。

HID是一种通用的设备接口标准,用于连接各种输入设备到计算机或其他数字设备上。

在实际应用中,HID的用法非常广泛,下面将介绍几种常见的HID的用法。

1. 键盘和鼠标键盘和鼠标是最常见的HID设备,用于输入文本和控制光标。

通过连接键盘和鼠标到计算机,用户可以进行各种操作,如打字、浏览网页、玩游戏等。

HID的用法使得键盘和鼠标可以被识别并与计算机进行通信,实现输入和控制功能。

2. 游戏手柄游戏手柄也是常见的HID设备,用于在电脑或游戏机上进行游戏操作。

通过连接游戏手柄到设备上,玩家可以通过按键和摇杆控制游戏角色的移动和动作,提升游戏体验。

HID的用法使得游戏手柄可以被游戏软件识别并进行相应的操作,实现游戏控制功能。

3. 扫描仪和摄像头扫描仪和摄像头也属于HID设备的范畴,用于将纸质文档和图像转换成数字格式。

通过连接扫描仪和摄像头到计算机,用户可以将纸质文件和照片进行数字化处理,如扫描文档、拍摄照片等。

HID的用法使得扫描仪和摄像头可以被计算机识别并进行数据传输,实现文档和图像的数字化处理功能。

4. 打印机和扫描仪一体机打印机和扫描仪一体机是同时具备打印和扫描功能的设备,也属于HID设备。

通过连接打印机和扫描仪一体机到计算机,用户可以进行打印和扫描操作,如打印文件、扫描照片等。

HID的用法使得打印机和扫描仪一体机可以被计算机识别并进行数据传输,实现打印和扫描功能。

总的来说,HID的用法涵盖了各种输入设备和接口设备,通过连接HID设备到计算机或其他数字设备,可以实现各种功能和操作。

无论是键盘、鼠标、游戏手柄,还是扫描仪、摄像头、打印机,HID的用法使得这些设备可以被识别和控制,为用户提供更加便利和高效的操作体验。

希望以上介绍能够帮助您更好地理解HID的用法和功能。

hidsharp范例

hidsharp范例hidsharp范例是一个用于在C#中操作HID设备的开源库。

HID是Human Interface Device的缩写,指的是人机接口设备,主要用于人与电脑之间的交互。

hidsharp库提供了一种简单、易用的方式来访问和控制HID设备。

本文将介绍hidsharp库的使用方法和一些示例。

我们需要在项目中引入hidsharp库。

可以通过NuGet包管理器来安装该库,也可以直接从官方网站上下载源代码并引入到项目中。

安装完成后,我们就可以在代码中使用hidsharp库提供的功能了。

在使用hidsharp库之前,我们需要先了解一些基本概念。

HID设备通常具有一个或多个输入和输出报告。

输入报告是设备从主机接收数据的报告,而输出报告是设备向主机发送数据的报告。

hidsharp库提供了一些方法来读取和写入这些报告。

让我们看一个简单的示例。

假设我们有一个HID设备,它有一个按钮和一个LED灯。

我们可以使用hidsharp库来控制这个LED灯的开关状态。

使用hidsharp库的示例代码如下:```using HidSharp;public class HidController{private HidDevice _device;public void Initialize(){var loader = new HidDeviceLoader();var devices = loader.GetDevices();foreach (var device in devices){if (device.VendorID == 0x1234 && device.ProductID == 0x5678){_device = device;break;}}if (_device == null){throw new Exception("HID device not found.");}}public void TurnOnLed(){byte[] outputReport = new byte[65];outputReport[0] = 0x00;outputReport[1] = 0x01;_device.Write(outputReport);}public void TurnOffLed(){byte[] outputReport = new byte[65];outputReport[0] = 0x00;outputReport[1] = 0x00;_device.Write(outputReport);}}```上述代码中,我们首先实例化了一个HidDeviceLoader对象,然后调用其GetDevices方法来获取所有已连接的HID设备。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

>2004年第21期总噩 璺墨 HID设备接口通讯程序开发研究 贺无名 (湖州师范学院信息工程学院浙江湖州 313000) 

摘 要:详细介绍了HID设备的特点和他的接口通信过程,并研究了用VB程序通过调用Windows API函数实现与mD 设备的接口通信的方法。 关键词:HID;VB;Windows API;接口通信 中圈分类号:TN918 文献标识码:A 文章编号:1004—373X(2004)21—039—03 

Study and Development of HID Interface Communication Program HE Wuming (College Information Engineering·Huzhou University·Huzhuo·313000·China) 

Abstract:This paper describes the communication process of HID in details,and analyzes the implementation of HID interface Communications using Windows API by Visual Basic. Keywords:HID;VB;Windows API;Interface Communication 

随着计算机技术的发展,各种信息被引入计算机,促 进了众多外设的出现和发展,如鼠标、键盘等已成为计算 机的标准配置,像这种与人直接打交道的外设就是HID设 备(Human Interface Device),长期以来,多数外设均由专 用接口或串/并口连接计算机。随着更多外设连入计算机, 这种设置格局远不能适应发展的需要,这时通用串行总 线(USB,Universal Serial Bus)应运而生。USB具有低 廉的价格、较高的数据传输速率;支持即插即用,实现智 能化的接口,易于使用。HID设备成为Windows最早支持 USB的类型,给人们的使用带来很大的方便。 1 HID设备 HID设备就是与人直接打交道的外设,例如键盘和鼠 标,但是HID设备不一定要有人机接口,只要符合HID类 别规范《Device Class Definition for Human Interface Devices》的设备,如条形码笔等都可以当成HID设备,使 用HID类完成对该USB设备的驱动。HID设备的特点:与 主机交换数据使用“报表”结构,报表格式富有弹性,可 以处理任何类型的数据;一个报表可以使用多个事务,每 笔事务可以携带小量和中量的数据,高速设备每笔事务最 大是1 024 B;主机定时轮询设备,设备可以为预期的时间 传送信息给主机,HID设备除了传送数据给主机外,也会 从主机接收数据。缺点:最大的传输速度有限制;没有保 证的传输速率。由于HID接口比传统的接口价格便宜,开 收稿日期:2004—05—18 发容易、支持即插即用.从而得到广泛的应用。 2 HID的驱动模型及通信过程 HID接口属于USB接口的一种,一般对于USB而言, 在Windows系统下,主机与设备之间的USB通信必须通 过设备驱动程序来传输。在Windows下,USB使用分层的 驱动程序模型,符合WDM规格,可在内核模式和用户模 式下执行,结构如图1所示。 

图1 USB使用分层的驱动程序模型 客户应用程序在函数驱动程序的作用下通过API函 数与USB设备沟通。函数驱动程序可以是Windows系统 自带的类别驱动程序,也可以是客户自己定义的一个特定 的设备驱动程序。驱动程序彼此之间通过IRP(I/0 Request Packet)来通信。Windows定义了一群驱动程序可 以使用的IRP,每个IRP执行一个输入或输出的要求。总 线驱动程序包含在Windows系统内,不需要另外编写。这 39 贺无名:HID设备接旦通迅猩垦丑蕉盟 种分层结构,使通用驱动程序成为可能。每一层封装自己 的功能并且提供接口供相邻层访问,上层没有必要了解下 层如何工作及内部体系结构。通常情况下,应用程序不 需要知道USB协议的细节,就可以与USB设备通信,类 驱动程序无需担心或考虑物理接I:I,甚至不需要了解USB 端I:I,这个物理接口被USB主机总线驱动程序管理形成 抽象层。 对于HID设备来说,他的函数驱动程序是Windows系 统自带的HID类别驱动程序,总线驱动程序包含在 Windows系统内,不需要另外编写。应用程序只要通过简 单的WinAPI函数与HID设备打交道。 应用程序与USB设备进行通信时,主机软件打开一 系列的管道来传输数据。不同的管道对应于USB的不同 端口。USB有4种传输方式:控制、批量、同步、中断。每 种方式对应各自的管道。如图2所示。数据管道是单向的, 用于批量或同步传输方式时使用。HID设备通常仅用控制 和中断两个管道。控制管道为缺省,也可被HID设备用来 接收、响应特殊的请求或命令。中断管道向主机异步发送 数据,其实HID不支持真正的中断,而是用来传输无时序 特征的信号变化。比如按键、鼠标移动、操纵杆运动,不 用特殊的请求就可实时地传输数据。 Pc机 管道 USB设备 数据缓冲 ==[蔓]= 端口 数据缓冲 ==[ ]=::) 端口 数据缓冲 <=={ 端口 数据缓冲 <= 端口 图2 USB管通通信 应用程序要求进行数据传输时,将发送输入/输出请 求包(IRPs,I/O Request Packets)给串行总线驱动程序, 串行总线驱动程序将启动与所需应用端点相联系的管道 来交换数据。而一个IRP可能包含对不同类型的传递服务 的需求;串行总线驱动程序(USBD)根据IRP包含的不 同传输类型把IRPs分解开来,相应地调用主机控制器驱 动程序(Host Controller Driver,HCD)参考外设描述信 息来处理IRPs,外设描述信息包含了对应用端点、其适用 的传递服务类型、数据量的描述(这些信息由配置程序在 外设连接总线时获得)。USBD依据此时总线的带宽和所 需传输类型来决定接受或拒绝配置请求,若接受了配置请 求,USBD将启动相应的管道;主机控制驱动程序 (HCD)负责跟踪监视IRP的处理过程,并防止要传送事务 所耗总线带宽之和、帧时间不超界限。他将IRP转化为传 输事务,当IRPs仅需一条通道,HCD直接把他们加入传 输事务队列。调用处理完毕,主机控制器驱动程序将完成 信息通知给相应客户应用程序。若是从外设向主机传送数 40 据,数据将存至指定缓冲区。这样串行总线驱动程序将调 用其下各层来完成数据的传输。 3通讯程序的开发 Windows用来与HID设备通信的API函数,包含在3 个DLL文档中,HID.DLL包含的是HID通信类的API函 数,SETUPAPI.DLL包含的是寻找和识别设备, KERNEL32.DLL包含的是交换数据和其他通讯函数,其 中HID.DLL与SETUPAPI.DLL文挡内的API函数,可以 在DDK说明文件中找到,KERNEL32.DLL包含的函数在 MSDN library内找到,HID.DLL与SETUPAPI.DLL,各 有一个附属的函数库文档:HID.LIB与SETUPAPI.LIB, 以及头文件:HIDPI.H,HIDUSAGE.H与SETUPAPI.H。 这些DLL通常是存在Windows系统文件夹以内,而函数库 和头文件则是存在Windows DDK内。Visual Basic使用. bas模块文档来引入DLL的函数与结构声明,不需要函数 库文档,Visual Basic只需要DLL的名称即可,如果在 Visual Basic的Win32api.text文档内找不到函数申明,可 以将DDK中的相关的c申明转换成Basic申明。 应用程序要与HID设备通讯前,首先要得到HID类别 的GUID,调用API函数:HidD—GetHidGuid来取得,将 HiD一一GetHidGuid函数Visual Basic类型声明如下: Public Declare Function HidD—GetHidGuid Lib”hid.dll" (ByRef HidGuid As GUID)As Long 

调用SetupDiGetClassDevs函数来获得所有已经连接 并检测过的HID的信息数组地址。SetupDiGetClassDevs 函数VB声明如下: 

Public Declare Function SetupDiGetClassDevs Lib ”setupapi.dl1”Alias SetupDigetClassDevsA” (ByRef ClassGuid As GUID,ByVal Enumerator As string, ByVal hwndparent As long,ByVal Flags As Long)As Long 

调用的例子如下: hDevlnfo=SetupDiGetClassDevs(HidGuid,vbNullString, 0,(DIGCF—PRESENT or DIGCF—INTERFACEDEVICE)) 

传回值hDevlnfo是所有连接并且检测过的HID信息 数组地址,不用时调用SetupDiDestroyDeviceInfoList函数 来释放。 调用SetupDiEnumDeviceInterfaces函数来读取识别 个设备接口信息,SetupDiEnumDeviceInteHaces函数 VB类型声明如下: 

public Declare Function SetupDiEnumDevicelnterfaces Lib" setupapi、dll”(ByVal DevicelnfoSet As Long.ByVal DevicelnfoData As Long,ByRef InterfaceClassGuid As GUID, ByVal MemberIndex As Long,ByRef DeviceIntefaceData As SP——DEVICE——INTERFACE——DATA)As Long

相关文档
最新文档