<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

本文引用地址:http://dyxdggzs.com/article/195769.htm


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


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

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


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


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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>