<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          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.ex-cimer.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)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();