探討研華32位DLL驅動(dòng)程序
4.4RawData(原始數據)和voltage(電壓值)
以PCL1800為例,它的轉換芯片是12位的,所以它可以把采集的電壓量程分為4096段,這種方式稱(chēng)為量化,而RawData就是將被采集量量化后的整數值。驅動(dòng)程序將量化值用3位十六進(jìn)制數表示,所以RawData的示數范圍就是000-fff,在內部緩沖區中的數值就是這種量化的原始數據。用戶(hù)緩沖區中存放Voltage(電壓值),將RawData轉化為電壓值由CRVFAITransfer函數完成,當PTFAITransfer的DataType=0時(shí),不進(jìn)行RawData到電壓值的轉化,這時(shí)候在用戶(hù)緩沖區中得到的就是量化的3位十六進(jìn)制整數值。
5動(dòng)態(tài)采集程序涉及到驅動(dòng)程序中一些參數的分析
5.1PTFAICheck結構的HalfReady域
該域說(shuō)明哪半個(gè)緩沖區已滿(mǎn)。在使用FIFO緩沖區的情況下,FIFO緩沖區和內部數據緩沖區都有半滿(mǎn)(halffull)的情況。容易混淆此處的HalfReady是指FIFO緩沖區中的半區還是內部數據緩沖區的半區。事實(shí)上,DRVFAICheck都是返回的內部緩沖區的狀態(tài),不反映FIFO緩沖區狀態(tài);所以此處是指的內部數據緩沖區的半區。
5.2ADSEVTBUFCHANGE事件的觸發(fā)時(shí)機
第一:雙緩沖區方式下,在A(yíng)、B兩個(gè)內部緩沖區之間切換時(shí)。
第二:?jiǎn)尉彌_區方式下,在內部數據緩沖區的兩個(gè)半緩沖區間切換時(shí)。
5.3增益列表起始地址
在編寫(xiě)數據采集程序時(shí),都要考慮多通道同時(shí)采集,而且都要考慮開(kāi)始通道的任意性,所以通常的做法是為增益列表開(kāi)辟一塊增益列表存儲區,從0開(kāi)始每個(gè)存儲單元對應一個(gè)通道的增益值,但是要注意,在起始通道不為零時(shí)不能將這個(gè)存儲區的起始地址直接賦給驅動(dòng)函數的“增益列表起始地址”參數,如PTFAIIntScanStart結構的GainList域;因為驅動(dòng)程序是直接從“增益列表起始地址”參數表示的起始地址去提取起始通道的增益值,而不會(huì )根據“起始通道”參數在增益列表中選取對應的增益值。
5.4CheckEvent的檢查周期
CheckEvent函數是在一個(gè)周期中檢查是否事件發(fā)生,如果有就立即返回事件的類(lèi)型,如果沒(méi)有就返回一個(gè)“checkeventerror!”錯誤。CheckEvent函數與DRV_FAICheck函數不同,程序需要不的調用DRV_FAICheck函數來(lái)檢查硬件工作的最新情況。程序調用DRV_FAICheck函數要占用計算機CPU時(shí)間,但是使用CheckEvent,只需要占用CPU調用一次CheckEvent函數的時(shí)間,就可以監視一個(gè)監視周期內的事件發(fā)生情況。在這個(gè)周期內沒(méi)有事件發(fā)生就不占用CPU時(shí)間,CheckEvent函數采用同步方式檢查事件的發(fā)生。PTCheckEvent結構的Milliseconds域說(shuō)明了CheckEvent函數的檢查周期。
6結束語(yǔ)
本文著(zhù)重分析了在使用研華32位dll驅動(dòng)程序編寫(xiě)動(dòng)態(tài)數據采集程序時(shí)所碰到的概念及參數。通過(guò)本文讀者可能加深對32位dll驅動(dòng)程序的認識,從而達到更加自由,靈活使用32位dll驅動(dòng)程序的目的。
c++相關(guān)文章:c++教程
評論