PCI2006数据采集卡 WIN2000/XP 驱动程序使用说明书
北京阿尔泰科技发展有限公司
产品研发部修订
北京阿尔泰科技发展有限公司
请您务必阅读《使用纲要》,他会使您事半功倍!
目录美文美段
目录 (1)
第一章版权信息与命名约定 (2)
第一节、版权信息 (2)
第二节、命名约定 (2)
第二章使用纲要 (2)
第一节、使用上层用户函数,高效、简单 (2)
第二节、如何管理PCI设备 (2)
第三节、如何用非空查询方式取得AD数据 (2)
第四节、如何用半满查询方式取得AD数据 (3)
第五节、如何用中断方式取得AD数据 (3)
第六节、如何实现开关量的简便操作 (7)
第七节、哪些函数对您不是必须的 (7)
第三章 PCI即插即用设备操作函数接口介绍 (7)
第一节、设备驱动接口函数总列表(每个函数省略了前缀“PCI2006_”) (8)
第二节、设备对象管理函数原型说明 (10)
第三节、AD程序查询方式采样操作函数原型说明 (12)
第四节、AD中断方式采样操作函数原型说明 (17)
第五节、AD硬件参数保存与读取函数原型说明 (20)
第六节、DA模拟量输出操作函数原型说明 (21)
第七节、DIO数字量输入输出开关量操作函数原型说明 (22)
第四章硬件参数结构 (23)
第一节、AD硬件参数结构(PCI2006_PARA_AD) (23)
第二节、数字量输入参数(PCI2006_PARA_DI) (26)
第三节、数字量输出参数(PCI2006_PARA_DO) (28)
第五章数据格式转换与排列规则 (30)
第一节、AD原码LSB数据转换成电压值的换算方法 (30)
第二节、AD采集函数的ADBuffer缓冲区中的数据排放规则 (30)
第三节、AD测试应用程序创建并形成的数据文件格式 (31)
第四节、DA电压值转换成LSB原码数据的换算方法 (31)
第六章上层用户函数接口应用实例 (32)
第一节、怎样使用ReadDeviceProAD_ NotEmpty函数直接取得AD数据 (32)
第二节、怎样使用ReadDeviceProAD_Half函数直接取得AD数据 (32)
第三节、怎样使用中断方式取得AD数据 (32)
第四节、怎样使用WriteDeviceDA函数取得DA数据 (32)
第五节、怎样使用GetDeviceDI函数进行更便捷的数字开关量输入操作 (32)
第六节、怎样使用SetDeviceDO函数进行更便捷的数字开关量输出操作 (32)
第七章高速大容量、连续不间断数据采集及存盘技术详解 (32)
第一节、使用程序查询方式实现该功能 (34)
做梦梦到牙齿掉了是什么意思第二节、使用中断方式实现该功能 (35)
怎么训练表达能力第八章共用函数介绍 (35)
第一节、公用接口函数总列表(每个函数省略了前缀“PCI2006_”) (35)
第二节、PCI内存映射寄存器操作函数原型说明 (36)
第三节、IO端口读写函数原型说明 (43)
第四节、线程操作函数原型说明 (46)
第五节、文件对象操作函数原型说明 (48)
1
PCI2006 WIN2000/XP 驱动程序使用说明书 版本:6.011
第一章 版权信息与命名约定
第一节、版权信息
本软件产品及相关套件均属北京阿尔泰科技发展有限公司所有,其产权受国家法律绝对保护,除非本公司书面允许,其他公司、单位、我公司授权的代理商及个人不得非法使用和拷贝,否则将受到国家法律的严厉制裁。您若需要我公司产品及相关信息请及时与当地代理商联系或直接与我们联系,我们将热情接待。
第二节、命名约定
一、为简化文字内容,突出重点,本文中提到的函数名通常为基本功能名部分,其前缀设备名如PCIxxxx_则被省略。如PCI2006_CreateDevice 则写为CreateDevice 。 二、函数名及参数中各种关键字缩写
缩写 全称 汉语意思 缩写 全称 汉语意思
魔皇加点Dev Device 设备 DI Digital Input 数字量输入
Pro Program 程序 DO Digital Output 数字量输出 Int Interrupt 中断 CNT Counter 计数器
Dma Direct Memory Access 直接内存存取 DA Digital convert to Analog
数模转换
AD Analog convert to Digital 模数转换 DI Differential (双端或差分) 注:
在常量选项中
Npt Not Empty 非空 SE Single end 单端
Para Parameter 参数 DIR Direction 方向
SRC Source 源 ATR Analog Trigger 模拟量触发
TRIG Trigger 触发 DTR Digital Trigger 数字量触发
CLK Clock 时钟
Cur Current 当前的 GND Ground 地 OPT Operate 操作
Lgc Logical 逻辑的
ID Identifier 标识 Phys Physical 物理的
第二章 使用纲要
第一节、使用上层用户函数,高效、简单
如果您只关心通道及频率等基本参数,而不必了解复杂的硬件知识和控制细节,那么我们强烈建议您使用上层用户函数,它们就是几个简单的形如Win32 API 的函数,具有相当的灵活性、可靠性和高效性。诸如InitDeviceProAD 、ReadDeviceProAD_ NotEmpty 、SetDeviceDO 等。而底层用户函数如WriteRegisterULong 、ReadRegisterULong 、WritePortByte 、ReadPortByte ……则是满足了解硬件知识和控制细节、且又需要特殊复杂控制的用户。但不管怎样,我们强烈建议您使用上层函数(在这些函数中,您见不到任何设备地址、寄存器端口、中断号等物理信息,其复杂的控制细节完全封装在上层用户函数中。)对于上层用户函数的使用,您基本上不必参考硬件说明书,除非您需要知道板上D 型插座等管脚分配情况。
第二节、如何管理PCI 设备
由于我们的驱动程序采用面向对象编程,所以要使用设备的一切功能,则必须首先用CreateDevice 函数创建一个设备对象句柄hDevice ,有了这个句柄,您就拥有了对该设备的绝对控制权。然后将此句
柄作为参数传递给相应的驱动函数,如InitDeviceProAD 可以使用hDevice 句柄以程序查询方式初始化设备的AD 部件,ReadDeviceProAD_ NotEmpty (或ReadDeviceProAD_Half )函数可以用hDevice 句柄实现对AD 数据的采样读取,SetDeviceDO 函数可用实现开关量的输出等。最后可以通过ReleaseDevice 将hDevice 释放掉。
第三节、如何用非空查询方式取得AD 数据
当您有了hDevice 设备对象句柄后,便可用InitDeviceProAD 函数初始化AD 部件,关于采样通道、频率等参数的设置是由这个函数的pADPara 参数结构体决定的。您只需要对这个pADPara 参数结构体的各个成员简单赋值即可实现所有硬件参数和设备状态的初始化。然后用StartDeviceProAD 即可启动AD 部件,开始AD 采样,然后便可用ReadDeviceProAD_ NotEmpty 反复读取AD 数据以实现连续不间断采样。当您需要暂停设备时,执行StopDeviceProAD ,当您需要关闭AD 设备时,ReleaseDeviceProAD 便可帮您实现(但设备对象hDevice 依然存在)。 2
北京阿尔泰科技发展有限公司要债的礼貌经典句子
(注:ReadDeviceProAD_ NotEmpty虽然主要面对批量读取、高速连续采集而设计,但亦可用它以
单点或几点的方式读取AD数据,以满足慢速、高实时性采集需要)。具体执行流程请看下面的图2.1.1。
第四节、如何用半满查询方式取得AD数据
当您有了hDevice设备对象句柄后,便可用InitDeviceProAD函数初始化AD部件,关于采样通道、频率等参数的设置是由这个函数的pADPara参数结构体决定的。您只需要对这个pADPara参数结构体的各个成员简单赋值即可实现所有硬件参数和设备状态的初始化。然后用StartDeviceProAD即可启动AD部件,开始AD采样,接着调用GetDevStatusProAD函数以查询AD的存储器FIFO的半满状态,如果达到半满状态,即可用ReadDeviceProAD_Half函数读取一批半满长度(或半满以下)的AD数据,然后接着再查询FIFO的半满状态,若有效再读取,就这样反复查询状态反复读取AD数据即可实现连续不间断采样。当您需要暂停设备时,执行StopDeviceProAD,当您需要关闭AD设备时,ReleaseDeviceProAD便可帮您实现(但设备对象hDevice依然存在)。(注:ReadDeviceProAD_Half函数在半满状态有效时也可以单点或几点的方式读取AD数据,只是到下一次半满信号到来时的时间间隔会变得非常短,而不再是半满间隔。)具体执行流程请看下面的图2.1.2。
第五节、如何用中断方式取得AD数据
当您有了hDevice设备对象句柄后,便可用InitDeviceIntAD函数初始化AD部件,关于采样通道、频率
等的参数的设置是由这个函数的pPara参数结构体决定的。您只需要对这个pPara参数结构体的各个成员简单赋值即可实现所有硬件参数和设备状态的初始化。同时应调用CreateSystemEvent函数创建一个内核事件对象句柄hEvent赋给InitDeviceIntAD的相应参数,它将作为接受AD半满中断事件的变量。然后用StartDeviceIntAD即可启动AD部件,开始AD采样,接着调用Win32 API函数WaitForSingleObject等待hEvent中断事件的发生,在中断未到时,自动使所在线程进入睡眠状态(不消耗CPU时间),反之,则立即唤醒所在线程,执行它下面的代码,此时您便可用ReadDeviceIntAD函数一批半满长度(或半满以下)的AD数据,然后再接着再等待FIFO的半满中断事件,若有效再读取,就这样反复读取AD数据即可实现连续不间断采样。当您需要暂停设备时,执行StopDeviceIntAD,当您需要关闭AD设备时,ReleaseDeviceIntAD便可帮您实现(但设备对象hDevice依然存在)。(注:ReadDeviceIntAD函数在半满中断事件发生时可以单点或几点的方式读取AD数据,只是到下一次半满中断事件到来时的时间间隔会变得非常短,而不再是半满间隔,但它不同于半满查询方式读取,由于半满中断属于硬件中断,其优先级别高于所有软件,所以您单点或几点读取AD数据时,千万不能让中断间隔太短,否则,有可能使您的整个系统被半满中断事件吞没,就象死机一样,不能动弹。 切忌、切忌!)具体执行流程请看图2.1.3。
注意:图中较粗的虚线表示对称关系。如红虚线表示CreateDevice和ReleaseDevice两个函数的关系是:最初执行一次CreateDevice,在结束是就须执行一次ReleaseDevice。
武庚纪第二季
3
PCI2006 WIN2000/XP 驱动程序使用说明书版本:6.011
图2.1.1 非空查询方式AD采集过程
4
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论