<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 探討研華32位DLL驅動(dòng)程序

探討研華32位DLL驅動(dòng)程序

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

摘要:本文概述了研華的構成,并對利用開(kāi)發(fā)動(dòng)態(tài)數據采集程序所涉及的部分概念和一些重要參數進(jìn)行了詳細的分析,對利用有實(shí)用價(jià)值。

本文引用地址:http://dyxdggzs.com/article/149070.htm

關(guān)鍵詞:DDL驅動(dòng)程序動(dòng)態(tài)數據采集

1引言

研華公司是臺灣和中國大陸工業(yè)電腦產(chǎn)品最大的供應廠(chǎng)商,其PCWeb-based數據采集和控制產(chǎn)品更是以?xún)?yōu)良的性?xún)r(jià)比獲得了眾多的客戶(hù)的青睞。32位驅動(dòng)程序是研華為諸如VC,VB,DELPHI,BorlandC++,C++Builder等高級語(yǔ)言提供的接口,通過(guò)這個(gè)驅動(dòng)程序,編程人員可以方便的對硬件進(jìn)行編程控制。該驅動(dòng)程序覆蓋了每一款研華的數據采集卡以及MIC-2000、ADAM-4000和ADAM-5000系列模塊,應用極為廣泛,是編制數據采集程序的基礎。雖然該驅動(dòng)程序的功能強大,但是研華公司為其提供的產(chǎn)品手冊對該驅動(dòng)程序的講解卻不夠詳盡,讓使用者,有只能修改例子來(lái)達到目的的感覺(jué),一些重要函數的參數設置缺乏相應說(shuō)明。對其使用的概念有些解釋不夠清楚……。本文是在實(shí)際編寫(xiě)動(dòng)態(tài)數據采集程序中經(jīng)驗的積累,對利用32位驅動(dòng)程序有實(shí)用價(jià)值。

232位驅動(dòng)程序概覽

32位驅動(dòng)程序主要包括10類(lèi)函數及其相應的數據結構,這些函數和數據結構在A(yíng)dsapi32.lib中實(shí)現。這10類(lèi)函數分別是:

DeviceFunctions設備函數

AnalogInputFunctionGroup模擬輸入函數組

AnalogOutputFunctionGroup模擬輸出函數組

DigitalInput/OutputFunctionGroup數字輸入/輸出函數組

CounterFunctionGroup計數器函數組

TemperatureMeasurementFunctionGroup溫度測量函數組

AlarmFunctionGroup報警函數組

PortFunctionGroup端口函數組

CommunicationFunctionGroup通信函數組

EventFunctionGroup事件函數組

可以把這10類(lèi)函數分為兩個(gè)部分:設備函數部分(只包括第一類(lèi)函數)和操作函數部分(包括第一類(lèi)函數外的所有函數),設備函數部分負責獲取硬件特征和開(kāi)關(guān)硬件。而操作函數部分則在硬件設備就緒以后,進(jìn)行具體的采集、通信、輸出、報警等工作。具體工作結束后,調用設備函數關(guān)閉設備。這些函數的調用過(guò)程如圖1所示。

3動(dòng)態(tài)數據采集程序的實(shí)現

用32位驅動(dòng)程序實(shí)現動(dòng)態(tài)數據采集程序時(shí),按觸發(fā)方式可以有中斷觸發(fā),DMA觸發(fā)和看門(mén)狗觸發(fā)三種方式可選。DMA觸發(fā)方式下的編程難度較大,而看門(mén)狗觸發(fā)方式是PCL1800特有的觸發(fā)方式,所以中斷觸發(fā)方式是最常用的觸發(fā)方式。

在各種高級語(yǔ)言下,驅動(dòng)程序提供的函數形式相同,所以此處只給出驅動(dòng)程序函數的調用流程,在具體的某種高級語(yǔ)言下,只要按照流程圖就能實(shí)現動(dòng)態(tài)數據采集。流程圖如下:

ADS_EVT_BUFCHANGE事件,該事件表示內部緩沖區已經(jīng)半滿(mǎn)??梢詫⑦@部分數據傳輸到用戶(hù)緩沖區中。

DRV_FAIIntScanStart:開(kāi)始中斷觸發(fā)方式的A/D轉換。

DRV_CheckEvent:檢查是否有設定的事件發(fā)生。

DRV_FAICheck:檢查A/D轉換的狀態(tài)。在本例中用于檢查究竟是內部緩沖區的前半部分滿(mǎn)了,還是后半部分滿(mǎn)了。

DRV_FAITransfer:將采集的數據從內部緩沖區傳輸到用戶(hù)緩沖區。

DRV_FAIStop:結束A/D轉換。

DRV_DeviceClse:關(guān)閉指定的數據采集板。

4動(dòng)態(tài)采集程序涉及到驅動(dòng)程序中部分概念的分析

4.1使用的緩沖區

在驅動(dòng)程序進(jìn)行A/D或D/A轉換時(shí),最多可使用三種緩沖區:采集板上的FIFO緩沖區,計算機內存中的內部緩沖區和用戶(hù)緩沖區。

使用FIFO緩沖區可以達到更高的采集頻率,如PCL1800使用1K的FIFO緩沖區后,最高采樣頻率可達到330KHZ。但是有些型號的采集板不帶FIFO緩沖區。

內部緩沖區和用戶(hù)緩沖區是數據采集程序動(dòng)態(tài)分配給驅動(dòng)程序使用的兩塊內存區域。這二者的區別在于,內部緩沖區中存放的是RawData(原始數據),用戶(hù)緩沖區中存放的是電壓值。關(guān)于原始數據和電壓值的區別后面會(huì )有介紹。

中斷觸發(fā)方式的A/D轉換中這三種緩沖區的使用如圖3所示。

在使用DRV_FAIIntScanStart函數將采樣值放到內部緩沖區有兩種方式:有FIFO和無(wú)FIFO。沒(méi)有FIFO時(shí),每完成一次A/D轉換就產(chǎn)生一個(gè)中斷,驅動(dòng)程序響應中斷將這個(gè)采樣值傳到內部緩沖區中。有FIFO時(shí),采樣值先放在FIFO中,當FIFO半滿(mǎn)或全滿(mǎn)時(shí),才產(chǎn)生一個(gè)中斷,驅動(dòng)程序響應中斷將FIFO中的數據傳送到內部緩沖區中,這是使用FIFO能提高采樣頻率的原因。

4.2雙緩沖區

在不了解數據采集的DMA觸發(fā)方式時(shí),很容易把中斷觸發(fā)方式下,調用DRV_FAIIntScanStart函數時(shí)同時(shí)使用FIFO和內部緩沖區的方式認為是雙緩沖區工作方式,進(jìn)而對PTFAICheck結構的ActiveBuf域產(chǎn)生誤解。實(shí)際上,雙緩沖區是指同時(shí)使用A、B兩個(gè)內部緩沖區。這是在DMA觸發(fā)方式下的特殊工作方式,由DRV_FAIDualDmaStart函數啟動(dòng)。在中斷觸發(fā)方式下不能同時(shí)使用雙緩沖區的工作方式。

4.3循環(huán)(cycle0和非循環(huán)(no_cycle)

循環(huán)和非循環(huán)是指內部緩沖區的使用方式。

非循環(huán)方式下,內部緩沖區作為一個(gè)整體使用。在非循環(huán)方式下執行一次DRV_FAIIntScanStart函數只能進(jìn)行有限次(1-65536)的A/D轉換,DRV_FAIIntScanStart函數執行過(guò)程中將所有數據都放到內部緩沖區;A/D轉換結束后,再用DRV_FAITransfer函數將數據傳送到用戶(hù)緩沖區中。

循環(huán)方式下,內部緩沖區分為兩個(gè)半區使用。執行一次DRV_FAI_IntScanStart函數可以進(jìn)行無(wú)限次的A/D轉換,直到調用DRV_FAI_Stop函數。這種方式下有限的內部緩沖區不可能容納無(wú)限多的采集數據。因此,將內部緩沖區分成前后對等的兩個(gè)半區。當前半區填滿(mǎn)后產(chǎn)生一個(gè)ADS_EVT_BUFCHANGE事件,采集程序中的事件檢查循環(huán)捕獲這個(gè)事件,調用DRV_FAI_Transfer函數把數據傳送到用戶(hù)緩沖區;與此同時(shí)DRV_FAI_IntScanStart函數將新轉換的數據放到內部緩沖區的后半部分。當后半區填滿(mǎn)后再產(chǎn)生一個(gè)ADS_EVT_BUFCHANGE事件,并用DRVFAIIntScanStart函數將新轉換的數據放到數據傳輸完畢的前半緩沖區,如此循環(huán)。

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



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 驅動(dòng)程序 DLL 32位 探討

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>