编辑: cyhzg | 2016-03-13 |
第二章 使用纲要
第一节、如何管理 USB 设备 由于我们的驱动程序采用面向对象编程,所以要使用设备的一切功能,则必须首先用CreateDevice函数创建一个 设备对象句柄hDevice,有了这个句柄,您就拥有了对该设备的绝对控制权.然后将此句柄作为参数传递给相应的驱 动函数,如InitDeviceAD可以使用hDevice句柄以程序查询方式初始化设备的AD部件,ReadDeviceProAD函数可以用 hDevice句柄实现对AD数据的采样读取等.最后可以通过ReleaseDevice将hDevice释放掉.
第二节、如何批量取得 AD 数据 当您有了hDevice设备对象句柄后,便可用InitDeviceAD函数初始化AD部件,关于采样通道、频率等参数的设置 是由这个函数的pADPara参数结构体决定的.您只需要对这个pADPara参数结构体的各个成员简单赋值即可实现所有 硬件参数和设备状态的初始化.然后这个函数启动AD设备,接着便可用ReadDeviceAD反复读取AD数据以实现连续 不间断采样.当您需要关闭AD设备时,ReleaseDeviceAD便可帮您实现(但设备对象hDevice依然存在) . (注: ReadDeviceAD虽然主要面对批量读取、高速连续采集而设计,但亦可用它以单点或几点的方式读取AD数据,以满足 慢速、高实时性采集需要) .具体执行流程请看下面的图 2.1.1. 注意:图中较粗的虚线表示对称关系.如红色虚线表示CreateDevice和ReleaseDevice两个函数的关系是:最初执 行一次CreateDevice,在结束时就须执行一次ReleaseDevice. 阿尔泰科技发展有限公司 图2.1.1 AD 采样实现过程
3 USB2851 WIN2000/XP 驱动程序使用说明书 版本:V6.001
4
第三节、如何实现开关量的简便操作 当您有了hDevice设备对象句柄后,便可用SetDeviceDO函数实现开关量的输出操作, 其各路开关量的输出状态由 其bDOSts[8]中的相应元素决定. 由GetDeviceDI函数实现开关量的输入操作, 其各路开关量的输入状态由其bDOSts[8] 中的相应元素决定.
第四节、哪些函数对您不是必须的 公共函数如CreateFileObject,WriteFile,ReadFile等一般来说都是辅助性函数,除非您要使用存盘功能.它们只 是对我公司驱动程序的一种功能补充,对用户额外提供的,它们可以帮助您在NT、Win2000 等操作系统中实现对您 原有传统设备如ISA卡、串口卡、并口卡的访问,而没有这些函数,您可能在基于Windows NT架构的操作系统中无法 继续使用您原有的老设备.
第三章 USB 设备操作函数接口介绍 由于我公司的设备应用于各种不同的领域,有些用户可能根本不关心硬件设备的控制细节,只关心AD的首末通 道、采样频率等,然后就能通过一两个简易的采集函数便能轻松得到所需要的AD数据.这方面的用户我们称之为上 层用户.那么还有一部分用户不仅对硬件控制熟悉,而且由于应用对象的特殊要求,则要直接控制设备的每一个端 口,这是一种复杂的工作,但又是必须的工作,我们则把这一群用户称之为底层用户.因此总的看来,上层用户要 求简单、快捷,他们最希望在软件操作上所要面对的全是他们最关心的问题,比如在正式采集数据之前,只须用户 调用一个简易的初始化函数(如InitDeviceAD)告诉设备我要使用多少个通道,采样频率是多少赫兹等,然后便可以 用ReadDeviceAD)函数指定每次采集的点数,即可实现数据连续不间断采样.而关于设备的物理地址、端口分配及 功能定义等复杂的硬件信息则与上层用户无任何关系.那么对于底层用户则不然.他们不仅要关心设备的物理地址, 还要关心虚拟地址、端口寄存器的功能分配,甚至每个端口的Bit位都要了如指掌,看起来这是一项相当复杂、繁琐 的工作.但是这些底层用户一旦使用我们提供的技术支持,则不仅可以让您不必熟悉USB总线复杂的控制协议,同是 还可以省掉您许多繁琐的工作, 比如您不用去了解USB的资源配置空间、 PNP即插即用管理, 而只须用GetDeviceAddr 函数便可以同时取得指定设备的物理基地址和虚拟线性基地址.这个时候您便可以用这个虚拟线性基地址,再根据 硬件使用说明书中的各端口寄存器的功能说明,然后使用ReadRegisterULong和WriteRegisterULong对这些端口寄存器 进行