用人机接口类型开发 U SB 设备 1 引言 USB 是目前发展应用非常广泛的一项技术。它是一种计算机系统连接外围设备的标准输入/输出接口。根据外围设备的不同的类型 USB 协议将其分类,每个设备类型都定义了类似功能设备的共同行为和协议。相同类型的设备都由一组标准定义的功能模块组成。这样主机与 USB 设备之间的通信就可以通过一些标准格式的数据包来完成。USB 开发者论坛发布了一系列 USB 设备的类型定义,并配以相应的使用说明。下面表格显示出 USB 的设备类型(DEVEICE CLASS): 表 1 USB 的设备类型 虽然 Window s 已经提供了底层总线操作的驱动程序,但与此类底层驱动程序接口的是 i/o 请求包的 IRPs 的结构,而Window s 为应用程序提供的接口是 API 函数。因此必须在其间建立一个驱动程序,在USB底层驱动与Window s应用程序之间传递消息。VB、 C/C++、Delphi 等通用编程语言编写的应用程序都可以在设备驱动程序的支持下,调用 Readfile、WriteFile、DeviceIoControl 等 API 函数。而编写底层总线的驱动程序是非常复杂的一项工程。为了消除编写设备驱动程序的问题,可对于一些具有相似功能的设备可以组成一类,分享共有的特性,便于使用 Window s 提供共同的类驱动程序。 2 HID 类型概述 第一个被w indow s 支持的usb 外围设备类是人机接口设备。hid 是human interface device 人机接口设备的英文缩写。是指直接和人进行互动的设备。如鼠标、键盘等。运行在 WINDOWS98 或其他更高的版本的操作系统的PC 机,系统除了提供通用的USB 设备的底层驱动以外,还单独提供了一些 HID 设备的完整驱动,应用程序可以很容易的与操作系统内部的hid 通讯。这样使得符合 hid 类的USB 设备很容易开发与运行。也就是说,我们如果想实现一个USB 的HID 类设备,是不需要在 Window s 下开发自己的驱动程序。HID 不一定要是标准的外设类型,唯一的要求是交换的数据存储在报文的结构内,设备固件必须支持报文的格式。任何工作在该限制之内的设备都可以成为一个hid,例如温度计,电压计,读卡机等。 hid 类设备只能使用控制传输与中断传输两种方式。HID 的交换的数据格式称为报文。报文形式灵活,能处理任何类型的数据。HID 特有的请求,Set_Report 和Get_Report 为主机和设备之间的任何类型数据块传输提供了一种方法。主机发出 Get_Report请求,设备响应向主机传送数据块;主机发出...