编辑: 会说话的鱼 | 2019-07-05 |
第二章 使用纲要
第一节、使用上层用户函数,高效、简单 如果您只关心通道及频率等基本参数,而不必了解复杂的硬件知识和控制细节,那么我们强烈建议您使用上层 用户函数,它们就是几个简单的形如Win32 API的函数,具有相当的灵活性、可靠性和高效性.诸如InitDeviceAD、 InitDeviceProAD 、 InitDeviceDmaAD 、 ReadDeviceProAD-Npt 等.而底层用户函数如WriteRegisterULong 、 ReadRegisterULong、WritePortByte、ReadPortByte……则是满足了解硬件知识和控制细节、且又需要特殊复杂控制的 用户.但不管怎样,我们强烈建议您使用上层函数(在这些函数中,您见不到任何设备地址、寄存器端口、中断号 等物理信息,其复杂的控制细节完全封装在上层用户函数中. )对于上层用户函数的使用,您基本上不必参考硬件说 明书,除非您需要知道板上插座等管脚分配情况.
第二节、如何管理设备 由于我们的驱动程序采用面向对象编程,所以要使用设备的一切功能,则必须首先用CreateDevice函数创建一个 设备对象句柄hDevice,有了这个句柄,您就拥有了对该设备的绝对控制权.然后将此句柄作为参数传递给相应的驱 动函数,如InitDeviceProAD可以使用hDevice句柄以程序查询方式初始化设备的AD部件,ReadDeviceProAD Npt 函数可以用hDevice句柄实现对AD数据的采样读取等.最后可以通过ReleaseDevice将hDevice释放掉. 阿尔泰科技发展有限公司
3
第三节、如何实现数字量的简便操作 当您有了hDevice设备对象句柄后,便可用SetDeviceDO函数实现数字量的输出操作, 其各路数字量的输出状态由 其bDOSts[16]中的相应元素决定.由GetDeviceDI函数实现数字量的输入操作,其各路数字量的输入状态由其 bDOSts[16]中的相应元素决定.
第四节、哪些函数对您不是必须的 公共函数如CreateFileObject,WriteFile,ReadFile等一般来说都是辅助性函数,除非您要使用存盘功能.如果您 使用上层用户函数访问设备,那么GetDeviceAddr,WriteRegisterByte,WriteRegisterWord,WriteRegisterULong, ReadRegisterByte,ReadRegisterWord,ReadRegisterULong等函数您可完全不必理会,除非您是作为底层用户管理设 备.而WritePortByte,WritePortWord,WritePortULong,ReadPortByte, ReadPortWord,ReadPortULong则对RTU用户 来讲,可以说完全是辅助性,它们只是对我公司驱动程序的一种功能补充,对用户额外提供的,它们可以帮助您在 NT、Win2000 等操作系统中实现对您原有传统设备如ISA卡、串口卡、并口卡的访问,而没有这些函数,您可能在基 于Windows NT架构的操作系统中无法继续使用您原有的老设备.
第三章 RTU 设备操作函数接口介绍 由于我公司的设备应用于各种不同的领域,有些用户可能根本不关心硬件设备的控制细节,只关心AD的首末通 道、采样频率等,然后就能通过一两个简易的采集函数便能轻松得到所需要的AD数据.这方面的用户我们称之为上 层用户.那么还有一部分用户不仅对硬件控制熟悉,而且由于应用对象的特殊要求,则要直接控制设备的每一个端 口,这是一种复杂的工作,但又是必须的工作,我们则把这一群用户称之为底层用户.因此总的看来,上层用户要 求简单、快捷,他们最希望在软件操作上所要面对的全是他们最关心的问题,比如在正式采集数据之前,只须用户 调用一个简易的初始化函数(如InitDeviceProAD)告诉设备我要使用多少个通道,采样频率是多少赫兹等,然后便 可以用ReadDeviceProAD Npt(或ReadDeviceProAD Half)函数指定每次采集的点数,即可实现数据连续不间断采样. 而关于设备的物理地址、端口分配及功能定义等复杂的硬件信息则与上层用户无任何关系.那么对于底层用户则不 然.他们不仅要关心设备的物理地址,还要关心虚拟地址、端口寄存器的功能分配,甚至每个端口的Bit位都要了如 指掌,看起来这是一项相当复杂、繁琐的工作.但是这些底层用户一旦使用我们提供的技术支持,则不仅可以让您 不必熟悉RTU总线复杂的控制协议, 同是还可以省掉您许多繁琐的工作, 比如您不用去了解RTU的资源配置空间、 PNP 即插即用管理,而只须用GetDeviceAddr函数便可以同时取得指定设备的物理基地址和虚拟线性基地址.这个时候您 便可以用这个虚拟线性基地址, 再根据硬件使用说明书中的各端口寄存器的功能说明, 然后使用ReadRegisterULong和WriteRegisterULong对这些端口寄存器进行