为了保证AC6115板卡能够进行高速不间断采样我们提供了一套新的驱动.doc_第1页
为了保证AC6115板卡能够进行高速不间断采样我们提供了一套新的驱动.doc_第2页
为了保证AC6115板卡能够进行高速不间断采样我们提供了一套新的驱动.doc_第3页
为了保证AC6115板卡能够进行高速不间断采样我们提供了一套新的驱动.doc_第4页
为了保证AC6115板卡能够进行高速不间断采样我们提供了一套新的驱动.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AC6112PCI采集卡SDK 2.0说明自AC6112板卡上市以来,满足了许多用户多通道无相差连续采样的需求。但其中有一些高端用户希望在进行采样的同时能够灵活进行其他任务,如显示、数据存盘等,但以前提供的SDK在这方面的性能较低,对用户编程的要求过高。为了保证AC6112板卡能够进行高速不间断采样的同时仍能进行其他操作,我们提供了一套新的驱动和开发包SDK 2.0。该驱动使用了中断及虚拟软件采集方式,采样任务的优先级高于其他用户层(ring3)上运行的应用软件,用户的应用层操作将不能影响内核层(ring 0)的任务,保证了采集程序不间断的运行;在内核中提供了了约2M WORD的缓冲空间,对于AC6112最高400K的采样速率可提供约5秒的缓冲时间,用户的应用程序只要在5秒内能够及时读取内核缓冲数据,就可以保证采样的连续性;在采样的同时用户仍可进行其他IO操作,如DA、IO、计数器等。内核与应用层数据流向的原理框图如下:图1:软硬件结构框图ADDA数字IO计数器2M WORD缓冲池4K FIFO用户缓冲DA数字IO,计数器用 户图形界面AC6112 PCI采集卡用户应用程序ring3内核驱动ring0AD采样数据流程如图1所示。当启动采样后,AC6112采集卡即按用户设定的采样方式、速率等参数进行采样,数据按时间和通道顺序进入板载FIFO中;当板载FIFO半满时,产生中断;驱动程序响应中断,将2048个采样点写入缓冲池。用户应用程序方面随时可以查询采样状态,查看缓冲池中的数据情况,按需要读取缓冲池中的数据。由于在内核中使用了中断方式,其优先级别高于其他操作,因此可保证采集卡的采样数据完整的进入ring0层的数据缓冲;用户主要应该注意的是要在内核缓冲池溢出之前,及时读走数据,也就是上文所说的400K采样速率有5秒的缓冲时间(400K X 5 s=2M)。具体的编程方式提供了1普通的查询方式、2定时器中断采集方式共两种方式。当用户需要类似普通查询AD板的采样方式时,可以选取方式1;若用户要求在连续采集的同时,可以进行显示、存盘、计算处理等其他操作时,可以选择方式2。对两种编程方式的具体描述见下:0、无论用户采取哪种方式编程,在程序的开始处都要执行AC6112_CreateDevice()以获得驱动句柄;在整个程序体内AC6112 API函数对设备的识别都要依靠该句柄,如AC6112_DA()等等;一旦需要结束程序的时刻,请用户先调用AC6112_CloseDeivce()释放设备句柄,然后再进行退出应用程序。1、 查询方式:最为普通的采集方式,基本流程如下:a.AC6112_INI设定相关参数;b.AC6112_RUN启动AD采样;c.AC6112_STATE检查采样状态,FIFO非空、半满、溢出等;d.若得到了需要的状态,可根据具体状态读取需要的数据AC6112_READ_HARD_FIFO;若状态为达到要求,可循环执行c,直至得到符合要求的状态。e.AC6112_STOP;停止采样2、 定时器中断采集方式:a.AC6112_INI设定相关参数,启动中断方式;b.启动定时器c.AC6112_RUN启动AD采样;下面是在定时器中的代码。注意:在内核缓冲区溢出之前一定要将数据读走!a.AC6112_STATE检查采样状态,缓冲池中的数据数量、是否溢出等;b.当达到需要读取的数据调用AC6112_READ_KFIFO按方式2编程,采集过程不影响PC其他操作,使用户在进行不间断采样的过程中可以进行其他操作(如:图形显示、数据存盘、数学运算、IO控制、DA输出、记数等其他操作)。该驱动使用了WDM方式,可以安装在Windows 98/Windows 2000/xp上。随驱动提供了相关的API接口(API函数位于AC6112.DLL动态链接库中)。提供Visual C+ 6.0 / Visual Basic 6.0 / C+ Builder 5.0 / Delphi 6.0四种语言的详细例程。相关接口函数如下:AC6112_CreateDevice获得AC6112操作句柄AC6112_CloseDevice关闭设备AC6112_Version检查驱动程序和DLL的版本(厂家保留)AC6112_INIAC6112采集板的初始化,包括AD采样模式、采样速度、起止通道、输入电压范围、触发方式、边沿选择、中断使用、事件使用、事件通知门限等等AC6112_STATE查询AC6112采集板硬件FIFO状态,查询AC6112驱动中软件FIFO的状态:FIFO容量,可读数量,可写数量AC6112_CHN设置通道和输入电压范围(厂家保留)AC6112_AD_MODE设置采样模式,触发方式,边沿选择(厂家保留)AC6112_RUN启动采样过程AC6112_STOP停止AC6112采样,关闭中断AC6112_REW停止AC6112采样(厂家保留)AC6112_READ_HARD_FIFO读AC6112板上FIFO数据,读2048个字AC6112_READ_KFIFO读驱动中的软件FIFO,可设定读取的长度,最大长度小于2000000AC6112_AD_TIMERAD采样定时器设定 16位定时器,时基为4MHz osc(厂家保留)AC6112_DA_MODE设定DA模式字AC6112_DA0DA 0通道输出AC6112_DA1DA 1通道输出AC6112_IO_MODE设置IO模式字AC6112_DI数字输入AC6112_DO数字输出AC6112_RCOUNTER读计数器数值AC6112_WCOUNTER设置计数器数值AC6112_RTIMER读定时器数值AC6112_TEST_HARDWARE硬件检测(厂家保留)AC6112_PROGRAM_TEST程序测试(厂家保留)AD采样使用方法如下:1、查询-比较适合采集少量数据,数据采集不容易连续,易受机器中运行的相关程序干扰最基本的方法,参照说明书中的说明,分别设置好各个数据控制字(AC6112_INI,设置为不使用中断,不使用事件通知),启动AD采样(AC6112_RUN),检查AC6112 FIFO状态(AC6112_State)直至FIFO半满,若FIFO半满则读取AC6112 FIFO中的2048个采样数据(AC6112_READ_HARD_FIFO)2、中断+查询-适合大量数据采集,由用户查询驱动程序中软FIFO的状态,选择合适的时机读取可以连续采集,参照说明书中的说明,分别设置好各个数据控制字(AC6112_INI,设置为使用中断,不使用事件通知),启动AD采样(AC6112_RUN),检查AC6112 软件FIFO状态(AC6112_State)直至KFIFO中的数据满足用户的要求,读取KFIFO中的N个采样数据(AC6112_READ_KFIFO),N由用户自行控制。API函数使用说明: O、数据结构定义:以下的AC6112_INI_BYTE和AC6112_STATE两个结构体包含了AD采样初始化的重要参数以及采样状态的信息。structAC6112_INI_BYTEunsigned longad_mode;AD采样模式字;(请参考说明书74页)unsigned longstart_end_chn;采样起至通道、极性选择控制字;(请参考说明书73-74页)unsigned longad_timer;采样时钟控制字;(请参考说明书74页)unsigned longda_mode;DA输出模式控制字;(请参考说明书75页)unsigned longkFifo_Notify_Length;内核缓冲门限通知控制字;(小于内核缓冲的容量,缓冲的容量2000000)(保留为今后扩展使用)unsigned longIrq_Enable;中断允许控制字;(0-禁止/1-允许)unsigned longEvent_Enable;事件通知允许控制字;(0-禁止,为今后扩展使用)HANDLEEvent;缓冲门限事件句柄;(保留为今后扩展使用)HANDLEEventFifoFull;缓冲溢出事件句柄;(保留为今后扩展使用)ac6112inibyte;struct AC6112_STATEunsigned long HardwareState;板卡硬件状态字;(请参考说明书73页)unsigned long Irq_Enable;中断允许状态字;(0-禁止/1-允许)unsigned long Event_Enable;事件通知状态字;(0-禁止/1-允许)unsigned long SoftFifoCapacity;缓冲区容量;(按采样字长)unsigned long SoftFifoItemForRead;缓冲区中已经存在的数据长度;(按采样字长)unsigned long SoftFifoItemForWrite;缓冲区中的剩余空间。(按采样字长)ac6112state; I、驱动操作函数:AC6112_CreateDevice函数功能:获得AC6112采集卡驱动句柄。函数原型:HANDLE AC6112_CreateDevice (DWORD instance, PDWORD pError)参数:instance:AC6112板卡的序号,如0、1、2;pError:错误代码;返回值:成功后返回AC6112板卡驱动句柄。备注:一般在用户程序启动后,可获取板卡句柄;其他API的使用都根据句柄来识别AC6112。AC6112_CloseDevice 函数功能:关闭AC6112驱动句柄。函数原型:int AC6112_CloseDevice (HANDLE hDevice)参数:hDevice:驱动句柄;返回值:如果函数执行成功,则返回0;否则,返回错误代码。备注:当用户程序退出之前,请关闭驱动句柄。AC6112_Version 函数功能:读取驱动程序软件版本信息。函数原型:int AC6112_Version (HANDLE hDevice, char *pversion)参数:hDevice:驱动句柄;pversion:指向版本字符串的指针。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:该函数为厂家保留使用。II、模数转换函数(AD)AC6112_INI 函数功能:初始化板卡,如设置相关参数,设置中断允许、事件通知等等。函数原型:int AC6112_INI (HANDLE hDevice, AC6112_INI_BYTE *IniByte)参数:hDevice:驱动句柄*IniByte:初始化信息,结构内容请参考数据结构定义。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:所有的参数都是由本函数设定的。AC6112_STATE 函数功能:查询硬件状态、缓冲状态。函数原型:int AC6112_STATE (HANDLE hDevice, struct AC6112_STATE *state_ac6112)参数:hDevice:驱动句柄*state_ac6112:板卡硬件状态和缓冲信息,结构内容请参考数据结构定义。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_CHN 函数功能:设置AD采样极性选择、起至通道。函数原型:int AC6112_CHN (HANDLE hDevice, unsigned long ChnByte)参数:hDevice:驱动句柄ChnByte:通道控制字。(请参考说明书73-74页)返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:该函数为厂家保留使用。AC6112_AD_MODE 函数功能:设置AD采样模式控制字。函数原型:int AC6112_AD_MODE (HANDLE hDevice, unsigned long ADMode)参数:hDevice:驱动句柄;ADMode:AD模式字。(请参考说明书74页)返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:该函数为厂家保留使用。AC6112_RUN 函数功能:启动AD采样。函数原型:int AC6112_RUN (HANDLE hDevice)参数:hDevice:驱动句柄。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_STOP 函数功能:停止AD采样,停止中断。函数原型:int AC6112_STOP (HANDLE hDevice)参数:hDevice:驱动句柄。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_REW 函数功能:停止AD采样。函数原型:int AC6112_REW (HANDLE hDevice)参数:hDevice:驱动句柄。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:该函数为厂家保留使用。AC6112_READ_HARD_FIFO 函数功能:从板载FIFO中读取数据。函数原型:int AC6112_READ_HARD_FIFO (HANDLE hDevice, unsigned long *uspData, unsigned long length)参数:hDevice:驱动句柄;*uspData:指向采样数据的指针;length:读取的长度。长度应小于4096。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_READ_KFIFO 函数功能:从中内核缓冲中读取数据。函数原型:int AC6112_READ_KFIFO (HANDLE hDevice, unsigned long *uspData, int length)参数:hDevice:驱动句柄*uspData:指向采样数据的指针;length:读取的长度。长度应小于缓冲中可以读取的数据长度(该长度由AC6112_STATE函数获得)。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_AD_TIMER 函数功能:函数原型:int AC6112_AD_TIMER (HANDLE hDevice, unsigned long ADTimer)参数:hDevice:驱动句柄;ADTimer:AD采样时钟。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:该函数为厂家保留使用。III、数模转换函数(DA)AC6112_DA_MODE 函数功能:设置DA电压输出模式字。函数原型:int AC6112_DA_MODE (HANDLE hDevice, ULONG mode)参数:hDevice:驱动句柄;mode:DA模式字。(模式字的含义请参考说明书相关内容,75页)返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_DA0 函数功能:DA 0通道电压输出。函数原型:int AC6112_DA0 (HANDLE hDevice, ULONG da_data)参数:hDevice:驱动句柄;da_data:DA输出数据;32位数据对应d31.d0;其中d15.d14.d4公12位数据表示0-4095。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_DA1 函数功能:DA 1通道电压输出。函数原型:int AC6112_DA1 (HANDLE hDevice, ULONG da_data)参数:hDevice:驱动句柄;da_data:DA输出数据;32位数据对应d31.d0;其中d15.d14.d4公12位数据表示0-4095。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:IV、数字量输入、输出函数(DIO)AC6112_IO_MODE 函数功能:设置数字量模式控制字。函数原型:int AC6112_IO_MODE (HANDLE hDevice, unsigned long iomode)参数:hDevice:驱动句柄;iomode:模式字(模式字的含义请参考说明书相关内容)。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_DI 函数功能:数字量输入;函数原型:int AC6112_DI (HANDLE hDevice, unsigned long *DIData)参数:hDevice:驱动句柄;*DIData:指向数字量输入数据的指针。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:AC6112_DO 函数功能:数字量输出。函数原型:int AC6112_DO (HANDLE hDevice, unsigned short do_data)参数:hDevice:驱动句柄;do_data:数字量输出数据。返回值:如果函数执行成功,返回0;否则,返回错误代码。备注:V、定时器、计数器函数(Ti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论