新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 探討研華32位DLL驅(qū)動程序

探討研華32位DLL驅(qū)動程序

作者: 時間:2012-05-14 來源:網(wǎng)絡(luò) 收藏

4.4RawData(原始數(shù)據(jù))和voltage(電壓值)

以PCL1800為例,它的轉(zhuǎn)換芯片是12位的,所以它可以把采集的電壓量程分為4096段,這種方式稱為量化,而RawData就是將被采集量量化后的整數(shù)值。將量化值用3位十六進制數(shù)表示,所以RawData的示數(shù)范圍就是000-fff,在內(nèi)部緩沖區(qū)中的數(shù)值就是這種量化的原始數(shù)據(jù)。用戶緩沖區(qū)中存放Voltage(電壓值),將RawData轉(zhuǎn)化為電壓值由CRVFAITransfer函數(shù)完成,當(dāng)PTFAITransfer的DataType=0時,不進行RawData到電壓值的轉(zhuǎn)化,這時候在用戶緩沖區(qū)中得到的就是量化的3位十六進制整數(shù)值。

5動態(tài)采集程序涉及到中一些參數(shù)的分析

5.1PTFAICheck結(jié)構(gòu)的HalfReady域

該域說明哪半個緩沖區(qū)已滿。在使用FIFO緩沖區(qū)的情況下,F(xiàn)IFO緩沖區(qū)和內(nèi)部數(shù)據(jù)緩沖區(qū)都有半滿(halffull)的情況。容易混淆此處的HalfReady是指FIFO緩沖區(qū)中的半?yún)^(qū)還是內(nèi)部數(shù)據(jù)緩沖區(qū)的半?yún)^(qū)。事實上,DRVFAICheck都是返回的內(nèi)部緩沖區(qū)的狀態(tài),不反映FIFO緩沖區(qū)狀態(tài);所以此處是指的內(nèi)部數(shù)據(jù)緩沖區(qū)的半?yún)^(qū)。

5.2ADSEVTBUFCHANGE事件的觸發(fā)時機

第一:雙緩沖區(qū)方式下,在A、B兩個內(nèi)部緩沖區(qū)之間切換時。

第二:單緩沖區(qū)方式下,在內(nèi)部數(shù)據(jù)緩沖區(qū)的兩個半緩沖區(qū)間切換時。

5.3增益列表起始地址

在編寫數(shù)據(jù)采集程序時,都要考慮多通道同時采集,而且都要考慮開始通道的任意性,所以通常的做法是為增益列表開辟一塊增益列表存儲區(qū),從0開始每個存儲單元對應(yīng)一個通道的增益值,但是要注意,在起始通道不為零時不能將這個存儲區(qū)的起始地址直接賦給驅(qū)動函數(shù)的“增益列表起始地址”參數(shù),如PTFAIIntScanStart結(jié)構(gòu)的GainList域;因為是直接從“增益列表起始地址”參數(shù)表示的起始地址去提取起始通道的增益值,而不會根據(jù)“起始通道”參數(shù)在增益列表中選取對應(yīng)的增益值。

5.4CheckEvent的檢查周期

CheckEvent函數(shù)是在一個周期中檢查是否事件發(fā)生,如果有就立即返回事件的類型,如果沒有就返回一個“checkeventerror!”錯誤。CheckEvent函數(shù)與DRV_FAICheck函數(shù)不同,程序需要不的調(diào)用DRV_FAICheck函數(shù)來檢查硬件工作的最新情況。程序調(diào)用DRV_FAICheck函數(shù)要占用計算機CPU時間,但是使用CheckEvent,只需要占用CPU調(diào)用一次CheckEvent函數(shù)的時間,就可以監(jiān)視一個監(jiān)視周期內(nèi)的事件發(fā)生情況。在這個周期內(nèi)沒有事件發(fā)生就不占用CPU時間,CheckEvent函數(shù)采用同步方式檢查事件的發(fā)生。PTCheckEvent結(jié)構(gòu)的Milliseconds域說明了CheckEvent函數(shù)的檢查周期。

6結(jié)束語

本文著重分析了在使用研華dll驅(qū)動程序編寫動態(tài)數(shù)據(jù)采集程序時所碰到的概念及參數(shù)。通過本文讀者可能加深對dll驅(qū)動程序的認(rèn)識,從而達到更加自由,靈活使用dll驅(qū)動程序的目的。

c++相關(guān)文章:c++教程



上一頁 1 2 下一頁

關(guān)鍵詞: 驅(qū)動程序 DLL 32位 探討

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉