《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于LabVIEW的普通數(shù)據(jù)采集卡驅(qū)動研究
基于LabVIEW的普通數(shù)據(jù)采集卡驅(qū)動研究
武劍,李巴津
摘要: 虛擬儀器技術(shù)是20世紀(jì)90年代發(fā)展起來的一種新技術(shù),融計算機和總線技術(shù)、微電子技術(shù)、測量技術(shù)于一身,它是對傳統(tǒng)儀器的重大突破,是計算機技術(shù)與儀器技術(shù)相結(jié)合的產(chǎn)物。它利用計算機系統(tǒng)的強大功能,結(jié)合相應(yīng)的硬件,大大突破傳統(tǒng)儀器在數(shù)據(jù)處理、顯示和存儲以及系統(tǒng)維護和擴展等方面的限制。虛擬儀器的眾多優(yōu)點使其得到了廣泛的應(yīng)用,然而當(dāng)今著名的虛擬儀器開發(fā)軟件(如LabVIEW等)只能支持NI公司生產(chǎn)的數(shù)據(jù)采集卡,而不能直接驅(qū)動普通的數(shù)據(jù)采集卡。本文重點研究了在虛擬儀器開發(fā)軟件平臺LabVIEW下使用普通數(shù)據(jù)采集卡的方法。
Abstract:
Key words :

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


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


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

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


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

    UA301A為12位的A/D卡,系統(tǒng)中采用的是雙極性輸入信號和雙極性原碼的編碼方法。轉(zhuǎn)換的結(jié)果為二進制數(shù),轉(zhuǎn)換后得到0~4 095的數(shù)字量。為了直觀表示被測物理量,需將轉(zhuǎn)換后的數(shù)字量變換為具有實際工程意義的數(shù)值。當(dāng)單極性信號輸入時,模擬電壓值V與數(shù)字量D的對應(yīng)關(guān)系可描述為:V=D/4 095×10;當(dāng)輸入信號為雙極性時,兩者的對應(yīng)關(guān)系為:V=(D-2 048)/4 095×10。這個轉(zhuǎn)換過程在驅(qū)動設(shè)計中可采用Case結(jié)構(gòu)來完成,把選擇輸入信號為單極性還是雙極性作為這個Case結(jié)構(gòu)的布爾值輸入。數(shù)據(jù)采集驅(qū)動程序框圖如圖2所示。

 

    圖2中4個CLF節(jié)點分別用來調(diào)用OpenUA300,minitz,readdataz,CloseUA300這四個函數(shù)。
    對于LabVIEW與DLL函數(shù)之間傳遞數(shù)組類型數(shù)據(jù),無論采用何種數(shù)組格式進行傳遞,都需要在Lab-VIEW中為數(shù)組預(yù)先分配空間,也就是給該數(shù)組開辟緩存,不然會導(dǎo)致程序崩潰。該程序在采集數(shù)據(jù)前預(yù)先為其初始化一個二維數(shù)組空間,為了使采集到的數(shù)據(jù)在數(shù)組中的位置始終對應(yīng)于采樣的每一通道,初始化數(shù)組空間時設(shè)置每通道采樣點數(shù)為行,采集通道數(shù)為列,這樣數(shù)據(jù)從采集卡FIFO存入緩存時,每一列對應(yīng)每一通道的數(shù)據(jù),省去了后續(xù)通過循環(huán)索引出各通道數(shù)據(jù)的繁瑣。
    為了實現(xiàn)數(shù)據(jù)的連續(xù)采集,系統(tǒng)應(yīng)保持在循環(huán)狀態(tài),設(shè)計中采用WhiIe循環(huán)來實現(xiàn)這一功能,但是Lab-VIEW在執(zhí)行While循環(huán)時,如果用戶沒有給它設(shè)定循環(huán)時間間隔,則它將以CPU的極限速度運行。這樣可能會導(dǎo)致整個LabVIEW程序看上去像死機一樣,所以需要給While循環(huán)加上一個指定的時間間隔。在采集前首先設(shè)置采樣通道、采樣頻率、采樣點數(shù)、增益和數(shù)據(jù)傳輸方式等參數(shù),該接口驅(qū)動的前面板見圖3。

4 結(jié) 語
    由此可以看出,在LabVIEW中調(diào)用動態(tài)鏈接庫函數(shù),來驅(qū)動普通數(shù)據(jù)采集卡的技術(shù),顯示出了Lab-VIEW強大的外部程序接口能力。應(yīng)用此方法設(shè)計數(shù)據(jù)采集系統(tǒng)一方面可充分利用LabVIEW的界面友好、圖形顯示和虛擬儀器強大的開發(fā)功能等優(yōu)點;另一方面又能大大降低系統(tǒng)的開發(fā)成本,可以使LabVIEW在對硬件的支持上有一個質(zhì)的飛躍。通過LabVIEW的外部程序接口CLF節(jié)點訪問動態(tài)鏈接庫來調(diào)用Windows標(biāo)準(zhǔn)庫函數(shù),使得LabVIEW支持的數(shù)據(jù)采集板卡范圍突破了限制,同時也為Lab-VIEW訪問底層函數(shù)提供了一種新的思路。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日韩中文字幕日韩欧美| 国内精品久久国产| 羞羞视频在线观看欧美| 99精品视频免费观看视频| 久久精品噜噜噜成人av农村| 亚洲影视九九影院在线观看| 99国产精品99久久久久久| 91久久夜色精品国产九色| 精品999日本| 国产在线精品自拍| 国产伦精品一区二区三区四区免费| 欧美日韩国产综合新一区| 欧美黑人在线观看| 欧美sm视频| 久久综合中文| 久久综合狠狠综合久久激情| 久久久成人网| 久久久噜噜噜久久狠狠50岁| 久久精品夜色噜噜亚洲a∨| 欧美一区二区黄| 性感少妇一区| 欧美在线高清视频| 欧美在线视频免费播放| 欧美一级视频精品观看| 午夜一区二区三视频在线观看 | 午夜一区二区三区不卡视频| 亚洲欧美日韩国产成人| 午夜精品一区二区三区四区| 午夜一级在线看亚洲| 欧美在线观看www| 久久久久久电影| 久久天堂国产精品| 欧美成人免费一级人片100| 欧美高清在线一区| 欧美高清视频在线播放| 欧美日韩国产不卡| 国产精品久久久久久久9999| 国产精品午夜在线观看| 国产日韩欧美一区在线| 国内激情久久| 亚洲国产一二三| av不卡在线| 亚洲欧美国产一区二区三区| 小处雏高清一区二区三区| 久久精品国产亚洲5555| 亚洲国产精品尤物yw在线观看| 亚洲狼人综合| 亚洲少妇在线| 欧美在线亚洲一区| 麻豆精品一区二区av白丝在线| 欧美激情日韩| 国产精品毛片大码女人| 国内精品久久国产| 亚洲精品中文在线| 亚洲欧美日本视频在线观看| 亚洲福利在线视频| 一区二区国产在线观看| 午夜在线视频观看日韩17c| 久久久久久久综合狠狠综合| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产日韩欧美中文| 在线播放日韩欧美| 999亚洲国产精| 午夜视频在线观看一区二区三区| 亚洲国产精品国自产拍av秋霞| 一本色道精品久久一区二区三区| 午夜精品一区二区三区在线播放| 六月天综合网| 国产精品久久久久久久久免费| 激情久久久久久久| 一本综合精品| 亚洲国产精品www| 亚洲自拍偷拍福利| 麻豆精品在线视频| 国产精品每日更新| 亚洲国产清纯| 欧美亚洲日本一区| 一区二区三区欧美成人| 久久久777| 欧美三区在线观看| 亚洲第一精品电影| 亚洲亚洲精品在线观看| 最近看过的日韩成人| 亚洲欧美在线一区二区| 男女av一区三区二区色多| 国产精品一区二区三区四区| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美日韩在线播放| 国产精品99久久99久久久二8| 久久一本综合频道| 国产精品美女999| 日韩网站在线观看| 亚洲激情网址| 久久精品五月| 国产精品亚洲综合色区韩国| 日韩视频中文| 亚洲国产精品第一区二区三区 | 在线亚洲伦理| 欧美成人国产一区二区| 国产精品一区免费视频| 99精品欧美一区| 亚洲精品日产精品乱码不卡| 久久久国际精品| 国产精品女人久久久久久| 91久久国产精品91久久性色| 亚洲成色精品| 久久激情五月婷婷| 国产乱肥老妇国产一区二| 日韩特黄影片| 亚洲人人精品| 先锋影音久久| 国产精品mv在线观看| 亚洲伦伦在线| 亚洲免费av网站| 男男成人高潮片免费网站| 狠狠色狠色综合曰曰| 欧美一区二区三区免费观看视频 | 在线观看视频一区二区| 久久国产精品高清| 久久av一区| 国产午夜精品视频| 亚洲欧美中文日韩在线| 午夜精品999| 国产精品网站在线播放| 亚洲婷婷在线| 亚洲欧美在线免费| 国产精品免费电影| 亚洲综合精品一区二区| 亚洲欧美在线网| 国产精品日韩在线| 亚洲——在线| 性做久久久久久| 国产喷白浆一区二区三区| 亚洲欧美日韩综合国产aⅴ| 午夜精品一区二区三区四区 | 亚洲国产精品第一区二区三区| 亚洲国产精品第一区二区三区 | 黄色成人在线观看| 亚洲福利视频网| 免费国产自线拍一欧美视频| 伊人一区二区三区久久精品| 亚洲区第一页| 欧美精品不卡| 日韩午夜在线电影| 亚洲欧美一级二级三级| 国产欧美一区二区视频| 欧美在线亚洲一区| 狂野欧美一区| 亚洲欧洲一区二区三区| 宅男精品视频| 国产精品女人久久久久久| 亚洲欧美中文日韩v在线观看| 久久久99久久精品女同性| 精品成人一区| 99精品福利视频| 欧美三级韩国三级日本三斤| 亚洲一区二区在线免费观看视频| 久久精品国产在热久久| 在线日韩日本国产亚洲| 中日韩美女免费视频网站在线观看| 国产精品美女久久久久av超清 | 一区二区三区精品视频在线观看| 国产精品一级在线| 亚洲国产高清在线观看视频| 欧美日韩高清在线一区| 香蕉久久精品日日躁夜夜躁| 免费在线看一区| 亚洲四色影视在线观看| 久久嫩草精品久久久久| 亚洲高清不卡在线观看| 亚洲综合精品| 亚洲高清在线| 性做久久久久久免费观看欧美| 一区二区三区亚洲| 亚洲一区二区在线视频| 狠狠色伊人亚洲综合成人| 国产精品99久久久久久久久 | 在线视频免费在线观看一区二区| 久久国产一区二区三区| 亚洲精品美女久久久久| 西瓜成人精品人成网站| 在线精品视频在线观看高清 | 亚洲一区二区三| 国产一区二区三区自拍| 亚洲精品一区二区三区蜜桃久| 国产精品入口日韩视频大尺度| 欧美一二区视频| 欧美福利小视频| 亚洲午夜国产成人av电影男同| 久久精品一区二区三区中文字幕 | 一卡二卡3卡四卡高清精品视频| 午夜亚洲一区| 国产综合香蕉五月婷在线| 99视频精品免费观看| 国产精品自拍视频| 亚洲精品网址在线观看| 国产一区欧美| 国产精品99久久久久久久vr| 国产亚洲午夜高清国产拍精品| 亚洲乱码国产乱码精品精98午夜|