新聞中心

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

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

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

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

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

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

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

        該域說明哪半個(gè)緩沖區(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ū)。事實(shí)上,DRVFAICheck都是返回的內(nèi)部緩沖區(qū)的狀態(tài),不反映FIFO緩沖區(qū)狀態(tài);所以此處是指的內(nèi)部數(shù)據(jù)緩沖區(qū)的半?yún)^(qū)。

        5.2ADSEVTBUFCHANGE事件的觸發(fā)時(shí)機(jī)

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

        第二:?jiǎn)尉彌_區(qū)方式下,在內(nèi)部數(shù)據(jù)緩沖區(qū)的兩個(gè)半緩沖區(qū)間切換時(shí)。

        5.3增益列表起始地址

        在編寫數(shù)據(jù)采集程序時(shí),都要考慮多通道同時(shí)采集,而且都要考慮開始通道的任意性,所以通常的做法是為增益列表開辟一塊增益列表存儲(chǔ)區(qū),從0開始每個(gè)存儲(chǔ)單元對(duì)應(yīng)一個(gè)通道的增益值,但是要注意,在起始通道不為零時(shí)不能將這個(gè)存儲(chǔ)區(qū)的起始地址直接賦給驅(qū)動(dòng)函數(shù)的“增益列表起始地址”參數(shù),如PTFAIIntScanStart結(jié)構(gòu)的GainList域;因?yàn)?a class="contentlabel" href="http://www.104case.com/news/listbylabel/label/驅(qū)動(dòng)程序">驅(qū)動(dòng)程序是直接從“增益列表起始地址”參數(shù)表示的起始地址去提取起始通道的增益值,而不會(huì)根據(jù)“起始通道”參數(shù)在增益列表中選取對(duì)應(yīng)的增益值。

        5.4CheckEvent的檢查周期

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

        6結(jié)束語

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

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



        上一頁 1 2 下一頁

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 鄂伦春自治旗| 商河县| 云浮市| 社会| 大余县| 凤凰县| 宣城市| 错那县| 昌邑市| 科尔| 曲周县| 河东区| 土默特右旗| 永平县| 涪陵区| 黄陵县| 溆浦县| 屏南县| 广昌县| 长岭县| 汽车| 边坝县| 南丰县| 井陉县| 凤翔县| 桂东县| 闸北区| 横山县| 玉环县| 丹凤县| 黎川县| 石河子市| 铜鼓县| 云林县| 嘉兴市| 福泉市| 广河县| 潞城市| 南昌县| 凤台县| 阿拉善左旗|