新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > LabVIEW應用于實時圖像采集及處理系統

        LabVIEW應用于實時圖像采集及處理系統

        作者: 時間:2010-09-26 來源:網絡 收藏

          4.圖像采集及圖像處理

          4.1調用動態鏈接庫驅動圖像采集卡

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

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

          本系統在LabVIEW平臺下調用動態鏈接庫實現圖像數據的采集主要分為五步:1.初始化并打開設備(DM642圖像采集卡); 2.讀取標志信號位,看是否初始化為默認值3.寫入標志信號位,進行圖像數據采集;4.對SDRAM中所存儲的圖像數據進行讀取;5.關閉句柄并釋放端口資源。主要調用動態鏈接庫sd_pci64.dll的目標函數有PCI64_Open,PCI64_MemRead32和PCI64_Close,函數功能如下表所示:

          函數的具體參數如下:

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

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

          ②PCI64_API INT32 PCI64_MemRead32( PCI64_HANDLE Hndl, UINT32 Taddr, UINT32 Count , UINT32 * pData );

          獲取由PCI64_Open傳遞的句柄指針,對目標地址存儲的數據進行讀取,需注意的是目標地址的尋址空間在4M之內,必須初始化一個所需目標數據大小的無符號32位數組空間。同樣返回值為0時,表示成功,非0表示失敗。

          ③PCI64_API INT32 PCI64_Close( PCI64_HANDLE Hndl );

          需要注意的是,在每次調用PCI64_MemRead32完成讀取后,都要將端口關閉,釋放地址空間。

          具體的調用過程如下:首先在新建的VI的Block Diagram中,Function> Advanced子菜單中添加Call Library Function Node控件,然后對其進行配置,添加該節點后進行配置的對話框如下圖2所示:

        圖2調用CLFN配置框圖



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 天水市| 霞浦县| 合水县| 汝城县| 南丰县| 盘锦市| 青神县| 印江| 竹山县| 且末县| 柏乡县| 宿松县| 郯城县| 中山市| 资阳市| 巴青县| 福贡县| 永川市| 巴塘县| 成都市| 荥阳市| 绥棱县| 河北区| 镇康县| 梁平县| 宿迁市| 青铜峡市| 绥芬河市| 灵武市| 旌德县| 奇台县| 京山县| 卢龙县| 西林县| 体育| 尤溪县| 揭阳市| 大宁县| 额尔古纳市| 西和县| 宣武区|