基于虛擬儀器技術(shù)自動(dòng)測試與數(shù)據(jù)管理系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在虛擬儀器開發(fā)中必須解決專業(yè)軟件和數(shù)據(jù)庫之間的數(shù)據(jù)傳輸和調(diào)用問題,而LabVIEW 現(xiàn)有的版本中沒有提供與通用數(shù)據(jù)庫直接接口的方法。這一問題可以采用以下幾種方法解決 。
1.購買NI公司的LabVIEW Add?Ons中的數(shù)據(jù)庫接口工具包LabVIEW SQLToolkit進(jìn)行 數(shù)據(jù)庫訪問。它是一個(gè)能快速連接本地和遠(yuǎn)程數(shù)據(jù)庫,不使用SQL語言就能完成一系列數(shù)據(jù) 庫操作的工具包,它支持當(dāng)前流行數(shù)據(jù)庫,包括Microsoft Access,MicrosoftSQL Sever以 及Oracle等。它的優(yōu)點(diǎn)是易于理解,操作簡單,用戶可以不學(xué)習(xí)SQL語法。本論文采用此工 具包對(duì)數(shù)據(jù)庫進(jìn)行訪問。 2.利用其他語言如Visual C++編寫DLL程序訪問數(shù)據(jù)庫,利用LabVIEW 所帶的DLL接口訪問該程序,可以實(shí)現(xiàn)間接的訪問數(shù)據(jù)庫。 3.利用中間文件存取數(shù)據(jù),先將數(shù)據(jù)存入文件之中,在一定的時(shí)刻或者是需要的時(shí) 候再將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫之中。 4.利用LabVIEW的ActiveX功能,調(diào)用Microsoft ADO控件,利用SQL語言實(shí)現(xiàn)數(shù)據(jù)庫訪問
1LabVIEW SQLToolkit簡介
LabVIEW SQLToolkit(其又被稱作為LabVIEW Database Connectivity Toolset)是用于數(shù)據(jù) 庫訪問的附加工具包,工具包集成了一系列的高級(jí)功能模塊,這些模塊封裝了大多數(shù)的數(shù)據(jù) 庫操作和一些高級(jí)的數(shù)據(jù)庫訪問功能。其主要的功能如下:
1.支持Microsoft ActiveX Data Object(ADO)所支持的所有的數(shù)據(jù)庫引擎; 2.支持所有與ODBC或OLE DB兼容的數(shù)據(jù)庫驅(qū)動(dòng)程序; 3.具有高度的可移植性,在任何情況下,用戶通過改變DB Tools Open Connection VI的輸 入?yún)?shù)Connection String就可以更換數(shù)據(jù)庫;4.可以將數(shù)據(jù)庫中Column Values的數(shù)據(jù)類型轉(zhuǎn)換為標(biāo)準(zhǔn)LabVIEW Database Connectivity T oolset的數(shù)據(jù)類型,這進(jìn)一步增強(qiáng)了它的可移植性; 5.與SQL兼容; 6.不使用SQL語句就可以實(shí)現(xiàn)數(shù)據(jù)庫記錄的查詢、添加、修改以及刪除等操作; 7.用戶可以完全不需要學(xué)習(xí)SQL語法。
用戶可以使用LabVIEW SQLToolkit在LabVIEW中支持ODBC的本地或遠(yuǎn)程數(shù)據(jù)庫,例如Microso ft Access,Microsoft SQL Sever,Sybase SQL Server以及Oracle等。在LabVIEW中使用La bVIEW SQLToolkit訪問數(shù)據(jù)庫時(shí),其結(jié)構(gòu)層次如圖1所示。??
2ODBC簡介
ODBC是微軟公司開放服務(wù)體系結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù) 據(jù)庫的一個(gè)組成部分,它建立一組規(guī)范,并提供一組對(duì)數(shù)據(jù)庫 訪問的API(應(yīng)用程序編程 接口)。這些API利用SQL來完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語言的支持,用戶可 以直接將SQL語句送給ODBC。
一個(gè)基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴于任何DBMS(數(shù)據(jù)庫管理系統(tǒng)),所有的數(shù)據(jù) 庫操作由對(duì)應(yīng)的DBMS的ODBC驅(qū)動(dòng)程序完成。不論是FoxPro、Access還是Oracle數(shù)據(jù)庫,均可 用ODBC API進(jìn)行訪問。由此可見,ODBC的最大優(yōu)點(diǎn)是支持對(duì)異構(gòu)數(shù)據(jù)庫的訪問,能以統(tǒng)一方 式處理所有數(shù)據(jù)庫。?
3在LabVIEW中訪問數(shù)據(jù)庫的開發(fā)實(shí)例
3.1LabVIEW SQLToolkit的配置
在使用LabVIEW SQLToolkit工具包之前,首先需要在Windows操作系統(tǒng)中的ODBC數(shù)據(jù)源中創(chuàng) 建一個(gè)DSN(data source name,數(shù)據(jù)名)。LabVIEW SQLToolkit與數(shù)據(jù)庫之間的連接就是建 立在DSN基礎(chǔ)上的。
DSN的創(chuàng)建步驟如下:
第一步:在Windows操作系統(tǒng)的控制面板中選擇“數(shù)據(jù)源(ODBC)”,彈出ODBC數(shù)據(jù)源管理器 。
第二步:單擊“系統(tǒng)DSN”選項(xiàng)卡中的“添加…”。
第三步:在隨后出現(xiàn)的“創(chuàng)建新數(shù)據(jù)源”對(duì)話框驅(qū)動(dòng)程序列表中選“Microsoft Access Dri ver(*.mdb)”,并單擊“完成”按鈕。
第四步:在隨后出現(xiàn)的對(duì)話框中的“數(shù)據(jù)源名”一欄中創(chuàng)建DSN的名稱,例如本系統(tǒng)使用的n iDB;并利用“選擇”按鈕選擇需要利用LabVIEW SQLToolkit訪問的數(shù)據(jù)庫,如niDB.mdb, 然后單擊“確定”按鈕。
這樣就完成了DSN的創(chuàng)建。從此以后,LabVIEW SQLToolkit就可以利用這個(gè)DSN訪問與之相關(guān) 聯(lián)的數(shù)據(jù)庫了。
3.2創(chuàng)建數(shù)據(jù)庫表和添加數(shù)據(jù)
建表和添加數(shù)據(jù)操作是數(shù)據(jù)庫最基本的功能之一。本例首先使用DB Tools Open Connection 打開數(shù)據(jù)庫連接,使用DB Tools List Tables和DB Tools Create TableTools判斷指定的數(shù) 據(jù)庫表是否存在,并據(jù)此建立數(shù)據(jù)庫表;然后通過帶參數(shù)技術(shù)的DB Tools Create Paramete rized Quely向數(shù)據(jù)庫添加數(shù)據(jù),在其中還利用DB Tools Set Parameter Value對(duì)其進(jìn)行參 數(shù)的設(shè)定,使用這種技術(shù)的插入操作其效率高于使用DB Tools Insert Data;最后使用DB T ools Execute Query執(zhí)行指定查詢,并使用DB Tools Free Object和DB Tools Close Conne ction釋放資源及斷開連接。具體的框圖程序如圖2所示。
3.3進(jìn)行數(shù)據(jù)查詢
在查詢操作中,其關(guān)鍵是利用DB Tools Fetch Element Data獲取紀(jì)錄,以及利用DB Tools Get Properties判斷索引是否有效。其框圖程序如圖3所示。
4結(jié)束語
LabVIEW是開發(fā)虛擬儀器應(yīng)用軟件的高效率工具,利用專門的數(shù)據(jù)庫接口工具包LabVIEW SQL Toolkit可以方便的實(shí)現(xiàn)LabVIEW應(yīng)用程序?qū)?shù)據(jù)庫的存取。開發(fā)人員可以根據(jù)具體應(yīng)用的不 同要求實(shí)現(xiàn)存儲(chǔ)和調(diào)用要測試的對(duì)象的歷史數(shù)據(jù)和初始狀態(tài),建立被測試對(duì)象的數(shù)據(jù)查詢系 統(tǒng),動(dòng)態(tài)的修改數(shù)據(jù)等功能。本系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)表明,通過LabVIEW與數(shù)據(jù)庫Microsoft A ccess 2000之間進(jìn)行動(dòng)態(tài)數(shù)據(jù)交換,使得由LabVIEW組成的新一代軟件測試系統(tǒng)具有了許多 強(qiáng)大的功能,在組建簡單的或是復(fù)雜的測試系統(tǒng)中有廣泛的應(yīng)用價(jià)值。?