新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW的普通數(shù)據(jù)采集卡驅(qū)動(dòng)研究

基于LabVIEW的普通數(shù)據(jù)采集卡驅(qū)動(dòng)研究

作者: 時(shí)間:2009-08-04 來源:網(wǎng)絡(luò) 收藏

引 言
虛擬儀器技術(shù)是20世紀(jì)90年代發(fā)展起來的一種新技術(shù),融計(jì)算機(jī)和總線技術(shù)、微電子技術(shù)、測(cè)量技術(shù)于一身,它是對(duì)傳統(tǒng)儀器的重大突破,是計(jì)算機(jī)技術(shù)與儀器技術(shù)相結(jié)合的產(chǎn)物。它利用計(jì)算機(jī)系統(tǒng)的強(qiáng)大功能,結(jié)合相應(yīng)的硬件,大大突破傳統(tǒng)儀器在數(shù)據(jù)處理、顯示和存儲(chǔ)以及系統(tǒng)維護(hù)和擴(kuò)展等方面的限制。虛擬儀器的眾多優(yōu)點(diǎn)使其得到了廣泛的應(yīng)用,然而當(dāng)今著名的虛擬儀器開發(fā)軟件(如等)只能支持NI公司生產(chǎn)的,而不能直接普通的。本文重點(diǎn)研究了在虛擬儀器開發(fā)軟件平臺(tái)下使用普通的方法。

本文引用地址:http://m.butianyuan.cn/article/195769.htm


1 虛擬儀器開發(fā)平臺(tái)與數(shù)據(jù)采集卡的連接
LabVIEW是美國(guó)NI公司推出的一種基于G語(yǔ)言(Graphics Language),即圖形化編程語(yǔ)言的虛擬儀器軟件開發(fā)工具,具有強(qiáng)大的數(shù)據(jù)采集功能,通常只支持NI公司的數(shù)據(jù)采集卡,而這些卡的價(jià)格比較昂貴。因此,為了能在LabVIEW平臺(tái)上普通的數(shù)據(jù)采集卡,用戶必須通過LabVIEW所提供的調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)(call Library Function Node,CLFN)及代碼接口節(jié)點(diǎn)(Code Interface Node,CIN)等功能,將功能強(qiáng)大、編程靈活、而且已有很多現(xiàn)成程序模塊的C語(yǔ)言同Lab-VIEW中編程直觀方便的圖形化G語(yǔ)言結(jié)合起來,從而實(shí)現(xiàn)用普通的數(shù)據(jù)采集卡來采集數(shù)據(jù)的功能,使LabVIEW在對(duì)硬件的支持上有了一個(gè)質(zhì)的飛躍。
在LabVIEW中利用CLFN節(jié)點(diǎn)可以較容易地實(shí)現(xiàn)訪問動(dòng)態(tài)鏈接庫(kù)(DLL),而且在購(gòu)買數(shù)據(jù)采集卡的時(shí),廠商一般會(huì)給用戶提供動(dòng)態(tài)鏈接庫(kù)。所以研究在LabVIEW平臺(tái)下調(diào)用動(dòng)態(tài)鏈接庫(kù)普通的數(shù)據(jù)采集卡來實(shí)現(xiàn)數(shù)據(jù)采集更具有普遍性。


2 基于動(dòng)態(tài)鏈接庫(kù)的普通數(shù)據(jù)采集卡的驅(qū)動(dòng)
2.1 動(dòng)態(tài)鏈接庫(kù)概述
動(dòng)態(tài)鏈接是一種應(yīng)用程序在運(yùn)行時(shí)與庫(kù)文件連接起來的技術(shù)。動(dòng)態(tài)鏈接庫(kù)(DLL)是一個(gè)可以多方共享的程序模塊,提供函數(shù)供Windows應(yīng)用程序或其他的動(dòng)態(tài)鏈接函數(shù)庫(kù)直接或間接調(diào)用,只有在別的模塊中調(diào)用了它的某個(gè)函數(shù)以后才發(fā)生作用。它是在應(yīng)用程序運(yùn)行時(shí)被裝入和鏈接的,而不是把庫(kù)代碼復(fù)制到應(yīng)用程序中,只是在程序中記錄了函數(shù)的入口點(diǎn)和接口。動(dòng)態(tài)鏈接庫(kù)獨(dú)立于編程語(yǔ)言,因此LabVIEW可以調(diào)用用大多數(shù)語(yǔ)言(如Visual C++,C++ Builder等)編寫生成的動(dòng)態(tài)鏈接庫(kù)。在調(diào)用DLL的函數(shù)時(shí),必須知道以下4個(gè)信息:函數(shù)返回的數(shù)據(jù)類型,函數(shù)調(diào)用的方式,函數(shù)的參數(shù)及類型,DLL庫(kù)文件的位置等。
2.2 LabVIEW對(duì)DLL的調(diào)用
通過對(duì)Call Library Function Node的配置可以實(shí)現(xiàn)DLL的調(diào)用,關(guān)鍵要了解被調(diào)用的函數(shù)名稱、功能及其輸入/輸出參數(shù)。配置節(jié)點(diǎn)的目的在于指定DLL模塊中與LabVIEW數(shù)據(jù)交換的相應(yīng)驅(qū)動(dòng)函數(shù)。調(diào)用Call Library Function模塊,雙擊此模塊,在彈出CLF對(duì)話框中進(jìn)行節(jié)點(diǎn)配置,CLF函數(shù)配置對(duì)話框見圖1。第一個(gè)參數(shù)“庫(kù)名或路徑”,填入需要調(diào)用的動(dòng)態(tài)鏈接庫(kù)文件的名字和路徑。第二個(gè)參數(shù)“函數(shù)名”,是鏈接庫(kù)中要調(diào)用的函數(shù)名稱。當(dāng)在庫(kù)名或路徑欄中設(shè)定了DLL的路徑后,在函數(shù)名下拉框中就可以看到該動(dòng)態(tài)鏈接庫(kù)所包含的所有函數(shù)名。第三個(gè)參數(shù)“調(diào)用規(guī)范”,此欄中可以設(shè)置該動(dòng)態(tài)鏈接庫(kù)是標(biāo)準(zhǔn)WINAPI調(diào)用還是普通的C調(diào)用。一般來說,都采用C調(diào)用,但是對(duì)于API調(diào)用則必須選擇stdeall(WINAPI),最后一個(gè)需要注意的參數(shù)選項(xiàng)是線程安全選擇,此欄中可以選擇DLL是否可以被重入調(diào)用,默認(rèn)情況是在UI線程中運(yùn)行,即該動(dòng)態(tài)鏈接庫(kù)只能在User Interrace Thread下運(yùn)行。如果動(dòng)態(tài)鏈接庫(kù)中被調(diào)用的函數(shù)返回時(shí)間很長(zhǎng),那么就會(huì)導(dǎo)致LabVIEW不能執(zhí)行UI線程中的其他任務(wù),因此界面反應(yīng)可能會(huì)很慢,甚至停止。這時(shí)候最好把它設(shè)為重入,若設(shè)置為重人,則該動(dòng)態(tài)鏈接庫(kù)可以由多個(gè)線程同時(shí)調(diào)用,但前提是必須保證該DLL能被多個(gè)線程同時(shí)安全調(diào)用。

在參數(shù)配置菜單下設(shè)置函數(shù)的返回值類型和輸入?yún)?shù)。對(duì)話框右側(cè)對(duì)應(yīng)每一個(gè)參數(shù)的參數(shù)名稱、類型、數(shù)據(jù)類型、參數(shù)傳遞方式。其中,需要注意的是數(shù)據(jù)類型選項(xiàng),在不同的編譯平臺(tái)下,數(shù)據(jù)類型的定義名稱是不一樣的。為了將數(shù)據(jù)類型一一對(duì)應(yīng),在LabVIEW中必須對(duì)數(shù)據(jù)類型名稱定義進(jìn)行轉(zhuǎn)換。


3 普通數(shù)據(jù)采集卡在LabVIEW平臺(tái)下的應(yīng)用實(shí)例
以北京優(yōu)采公司的UA301A型A/D數(shù)據(jù)采集卡為例,該采集卡在LabVIEW平臺(tái)下不能直接被驅(qū)動(dòng)。該采集卡提供了一個(gè)動(dòng)態(tài)鏈接庫(kù)ua300a.dll,此動(dòng)態(tài)鏈接庫(kù)中提供了許多簡(jiǎn)潔高效的采集和控制函數(shù),支持UA301A采集器的各種功能。


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

評(píng)論


相關(guān)推薦

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

關(guān)閉