探讨研华32位DLL驱动程序

时间:2012-05-14来源:网络

4.4RawData(原始数据)和voltage(电压值)

以PCL1800为例,它的转换芯片是12位的,所以它可以把采集的电压量程分为4096段,这种方式称为量化,而RawData就是将被采集量量化后的整数值。驱动程序将量化值用3位十六进制数表示,所以RawData的示数范围就是000-fff,在内部缓冲区中的数值就是这种量化的原始数据。用户缓冲区中存放Voltage(电压值),将RawData转化为电压值由CRVFAITransfer函数完成,当PTFAITransfer的DataType=0时,不进行RawData到电压值的转化,这时候在用户缓冲区中得到的就是量化的3位十六进制整数值。

5动态采集程序涉及到驱动程序中一些参数的分析

5.1PTFAICheck结构的HalfReady域

该域说明哪半个缓冲区已满。在使用FIFO缓冲区的情况下,FIFO缓冲区和内部数据缓冲区都有半满(halffull)的情况。容易混淆此处的HalfReady是指FIFO缓冲区中的半区还是内部数据缓冲区的半区。事实上,DRVFAICheck都是返回的内部缓冲区的状态,不反映FIFO缓冲区状态;所以此处是指的内部数据缓冲区的半区。

5.2ADSEVTBUFCHANGE事件的触发时机

第一:双缓冲区方式下,在A、B两个内部缓冲区之间切换时。

第二:单缓冲区方式下,在内部数据缓冲区的两个半缓冲区间切换时。

5.3增益列表起始地址

在编写数据采集程序时,都要考虑多通道同时采集,而且都要考虑开始通道的任意性,所以通常的做法是为增益列表开辟一块增益列表存储区,从0开始每个存储单元对应一个通道的增益值,但是要注意,在起始通道不为零时不能将这个存储区的起始地址直接赋给驱动函数的“增益列表起始地址”参数,如PTFAIIntScanStart结构的GainList域;因为驱动程序是直接从“增益列表起始地址”参数表示的起始地址去提取起始通道的增益值,而不会根据“起始通道”参数在增益列表中选取对应的增益值。

5.4CheckEvent的检查周期

CheckEvent函数是在一个周期中检查是否事件发生,如果有就立即返回事件的类型,如果没有就返回一个“checkeventerror!”错误。CheckEvent函数与DRV_FAICheck函数不同,程序需要不的调用DRV_FAICheck函数来检查硬件工作的最新情况。程序调用DRV_FAICheck函数要占用计算机CPU时间,但是使用CheckEvent,只需要占用CPU调用一次CheckEvent函数的时间,就可以监视一个监视周期内的事件发生情况。在这个周期内没有事件发生就不占用CPU时间,CheckEvent函数采用同步方式检查事件的发生。PTCheckEvent结构的Milliseconds域说明了CheckEvent函数的检查周期。

6结束语

本文着重分析了在使用研华32位dll驱动程序编写动态数据采集程序时所碰到的概念及参数。通过本文读者可能加深对32位dll驱动程序的认识,从而达到更加自由,灵活使用32位dll驱动程序的目的。

1 2

关键词: 驱动程序 DLL 32位 探讨

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版