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

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > LabVIEW應(yīng)用于實(shí)時(shí)圖像采集及處理系統(tǒng)

          LabVIEW應(yīng)用于實(shí)時(shí)圖像采集及處理系統(tǒng)

          作者: 時(shí)間:2010-09-26 來源:網(wǎng)絡(luò) 收藏

            4.圖像采集及圖像處理

            4.1調(diào)用動(dòng)態(tài)鏈接庫(kù)驅(qū)動(dòng)圖像采集卡

            NI公司針對(duì)自己生產(chǎn)的圖像采集卡附帶有卡的驅(qū)動(dòng)和管理程序,對(duì)于普通的I/O卡,還不能直接被所應(yīng)用,必須采取其他方法。提供了4種調(diào)用外部程序代碼的途徑:端口直接操作、調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)(Call Library Function Node即CLFN)調(diào)用DLL(Dynamic Link Library動(dòng)態(tài)連接庫(kù))、使用CIN(Code Interface Node,外部代碼節(jié)點(diǎn)),調(diào)用Active X控件。其中端口直接操作,利用PortIn.Vi和PortOut.vi功能,此法應(yīng)用簡(jiǎn)單,但無法實(shí)現(xiàn)較復(fù)雜的接口功能。而采用動(dòng)態(tài)鏈接庫(kù),可以根據(jù)具體需要編寫適當(dāng)?shù)某绦?,靈活利用的各項(xiàng)功能。較其余三種具有明顯的優(yōu)勢(shì)。用戶可以調(diào)用Windows標(biāo)準(zhǔn)的動(dòng)態(tài)連接庫(kù)(DLL),也可以調(diào)用用戶自己編制的DLL,實(shí)現(xiàn)LabVIEW與硬件的連接。

            建立一個(gè)DLL需要的文件有:①h函數(shù)聲明文件(可選,可包含在c源文件里);②c源文件(必需);③def模塊定義文件(如果是使用標(biāo)準(zhǔn)調(diào)用或函數(shù)輸出必需添加關(guān)鍵字__declspec (dllexport) 函數(shù)名)。H文件的作用是聲明DLL要實(shí)現(xiàn)的函數(shù)原型,供DLL編譯使用,同時(shí)還提供應(yīng)用程序編譯使用。C文件是實(shí)現(xiàn)具體文件的源文件,它有一個(gè)入口點(diǎn)函數(shù),在DLL被初次調(diào)用的運(yùn)行,做一些初始化工作。一般情況下,用戶無須做什么初始化工作,只需保留入口點(diǎn)函數(shù)框架即可。def文件是DLL項(xiàng)目中比較特殊的文件,它用來定義該DLL項(xiàng)目將輸出哪些函數(shù),只有該文件列出的函數(shù)才能被應(yīng)用函數(shù)調(diào)用。要輸出的函數(shù)名列在該文件EXPORTS關(guān)鍵字下面。

            本系統(tǒng)在LabVIEW平臺(tái)下調(diào)用動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)圖像數(shù)據(jù)的采集主要分為五步:1.初始化并打開設(shè)備(DM642圖像采集卡); 2.讀取標(biāo)志信號(hào)位,看是否初始化為默認(rèn)值3.寫入標(biāo)志信號(hào)位,進(jìn)行圖像數(shù)據(jù)采集;4.對(duì)SDRAM中所存儲(chǔ)的圖像數(shù)據(jù)進(jìn)行讀取;5.關(guān)閉句柄并釋放端口資源。主要調(diào)用動(dòng)態(tài)鏈接庫(kù)sd_pci64.dll的目標(biāo)函數(shù)有PCI64_Open,PCI64_MemRead32和PCI64_Close,函數(shù)功能如下表所示:

            函數(shù)的具體參數(shù)如下:

            ①PCI64_API INT32 PCI64_Open( int BoardNum, PCI64_HANDLE * pHndl );

            BoardNum板口號(hào)(0-3),* pHndl 返回句柄的無符號(hào)指針,當(dāng)返回值為0時(shí),表示打開端口成功,非0時(shí),表示失敗。

           ?、赑CI64_API INT32 PCI64_MemRead32( PCI64_HANDLE Hndl, UINT32 Taddr, UINT32 Count , UINT32 * pData );

            獲取由PCI64_Open傳遞的句柄指針,對(duì)目標(biāo)地址存儲(chǔ)的數(shù)據(jù)進(jìn)行讀取,需注意的是目標(biāo)地址的尋址空間在4M之內(nèi),必須初始化一個(gè)所需目標(biāo)數(shù)據(jù)大小的無符號(hào)32位數(shù)組空間。同樣返回值為0時(shí),表示成功,非0表示失敗。

           ?、跴CI64_API INT32 PCI64_Close( PCI64_HANDLE Hndl );

            需要注意的是,在每次調(diào)用PCI64_MemRead32完成讀取后,都要將端口關(guān)閉,釋放地址空間。

            具體的調(diào)用過程如下:首先在新建的VI的Block Diagram中,F(xiàn)unction> Advanced子菜單中添加Call Library Function Node控件,然后對(duì)其進(jìn)行配置,添加該節(jié)點(diǎn)后進(jìn)行配置的對(duì)話框如下圖2所示:

          圖2調(diào)用CLFN配置框圖



          評(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); })();