在測試系統(tǒng)的應(yīng)用開發(fā)中,,測試數(shù)據(jù)通常是以文件的方式進(jìn)行組織管理的,。這樣的數(shù)據(jù)存儲方式有一定的局限性,,特別是遠(yuǎn)程測試系統(tǒng),對于大量的數(shù)據(jù)不能及時的反饋,。要實現(xiàn)方便靈活的管理和訪問,,數(shù)據(jù)庫是一種必然的選擇。
LabWindows/CVI是一個完全的標(biāo)準(zhǔn)C開發(fā)環(huán)境,,用于開發(fā)虛擬儀器應(yīng)用系統(tǒng),。CVI5.5及以后的版本提供了支持?jǐn)?shù)據(jù)庫的sQL TOOLKIT工具包,該工具包提供了豐富的數(shù)據(jù)庫操作函數(shù),,給開發(fā)帶來了方便和快捷,。
1 基于PCI的數(shù)據(jù)采集
對于非NI公司的PCI數(shù)據(jù)采集卡,一般的驅(qū)動程序都是以動態(tài)鏈接庫的形式提供的,。對于CVI而言,,可以直接利用驅(qū)動程序的動態(tài)鏈接庫文件實現(xiàn)對采集卡的控制。本文采用中泰PCI-8333數(shù)據(jù)采集卡進(jìn)行信號采集,、存儲和輸出。PCI-8333數(shù)據(jù)采集卡具備豐富的采集與控制方法,,同時也提供了動態(tài)鏈接庫文件和頭文件,。
1.1 縮寫采集卡頭文件
雖然廠商提供了頭文件,但是LabWindows/CVI需要用c語言對頭文件進(jìn)行改寫,,參照廠商提供的頭文件,,編寫部分方法聲明如下:
注意,頭文件中包含的方法一定要與動態(tài)鏈接庫中的方法—致,。編寫后,,將該頭文件添加到應(yīng)用程序中。在程序源文件中聲明頭文件,,添加#include“PCI8KP.h”,。
1.2 產(chǎn)生dll導(dǎo)入庫文件
將采集卡廠商提供的動態(tài)鏈接庫文件加入剄應(yīng)用程序所在的文件夾中,選擇菜單:Option-Generate DLL Import Library,,在彈出的對話框中選擇OK按鈕,,會彈出動態(tài)鏈接庫選擇對話框,選擇加入到程序中的動態(tài)鏈接庫后,,會在該文件夾下產(chǎn)生導(dǎo)入庫,。將該導(dǎo)入庫也加入到當(dāng)前程序的工程中。
1.3 應(yīng)用動態(tài)鏈接庫
上面的兩個步驟完成后,,便可在CVI應(yīng)用程序中使用該動態(tài)鏈接庫,,調(diào)用頭文件中已聲明的方法進(jìn)行數(shù)據(jù)采集源程序的編寫,實現(xiàn)對效據(jù)采集卡的控制,。
2 ODBC及SQL Toolkit工具包
ODBC(Open Database Connectivity,,開放數(shù)據(jù)庫互連)是Microsoft公司開發(fā)的一套開放數(shù)據(jù)庫系統(tǒng)應(yīng)用程序接口規(guī)范,,它提供了統(tǒng)一的數(shù)據(jù)庫應(yīng)用編程接口(API),為應(yīng)用程序提供了一套高層調(diào)用接口規(guī)范和基于動態(tài)連接庫的運行支持環(huán)境,。使用ODBC開發(fā)數(shù)據(jù)庫應(yīng)用時,,應(yīng)用程序調(diào)用的是標(biāo)準(zhǔn)的ODBC函數(shù)和SQL語句,數(shù)據(jù)庫底層操作由各個數(shù)據(jù)庫的驅(qū)動程序完成,。因此應(yīng)用程序有很好的適應(yīng)性和可移植性,。
LabWindows/CVI SQL Toolkit是用于CVI數(shù)據(jù)庫訪問的附加工具包,它集成了一系列的高級功能模塊,,這些模塊封裝了大部分的數(shù)據(jù)庫操作和一些高級數(shù)據(jù)庫訪問功能,。LabWindows/CVI SQL Toolkit支持主流的數(shù)據(jù)庫驅(qū)動,對于數(shù)據(jù)庫開發(fā)商及第三方開發(fā)者提供的驅(qū)動,,LabWindows/CVI SQL Toolkit也一樣采用標(biāo)準(zhǔn)的ODBC編譯方式,,通過這種擴(kuò)展方式,可以靈活支持任何符合ODBC開發(fā)標(biāo)準(zhǔn)的數(shù)據(jù)庫系統(tǒng),。
3 數(shù)據(jù)庫操作
Oracle數(shù)據(jù)庫管理系統(tǒng)是一個以關(guān)系型和面向?qū)ο鬄橹行墓芾頂?shù)據(jù)的數(shù)據(jù)庫管理軟件系統(tǒng),。Orade數(shù)據(jù)庫有如下幾個強(qiáng)大的特性:支持多用戶、大事務(wù)量的事務(wù)處理,,數(shù)據(jù)安全性和完整性的有效控制,,支持分布式數(shù)據(jù)處理等。因其在數(shù)據(jù)安全性與數(shù)據(jù)完整性控制方面的優(yōu)越性能,,以及跨操作系統(tǒng),、跨硬件平臺的數(shù)據(jù)互操作能力,使得越來越多的用戶將Oracle作為其應(yīng)用數(shù)據(jù)的處理系統(tǒng),。
3.1 創(chuàng)建數(shù)據(jù)庫
最后創(chuàng)建數(shù)據(jù)存儲DATA_ACQUIRE,,這里不再列舉數(shù)據(jù)庫腳本代碼。
3.2 創(chuàng)建DSN
在使用工具包之前,,首先需要在操作系統(tǒng)中的ODBC數(shù)據(jù)源中創(chuàng)建一個DSN,,工具包與數(shù)據(jù)庫的鏈接就是建立在DSN基礎(chǔ)上的。創(chuàng)建DSN的步驟如下:
(1)在操作系統(tǒng)控制面板中選擇“數(shù)據(jù)源(ODBC)”,。
(2)選擇“系統(tǒng)DSN選項卡”添加按鈕,。
(3)在出現(xiàn)的“創(chuàng)建新數(shù)據(jù)源”對話框驅(qū)動程序列表中選"Oracle in OraOb10g_homel”,點擊完成,。
(4)配置"Oracle ODBC Driver Configuration”,,如圖2所示:
這樣就完成了DSN的創(chuàng)建,從此以后,,工具包就可以利用這個DSN訪問與之相關(guān)聯(lián)的數(shù)據(jù)庫了,。
3.3 采集數(shù)據(jù)插入數(shù)據(jù)庫
3.4 顯示結(jié)果
檢索數(shù)據(jù)庫中所有的數(shù)據(jù),提取DATA字段,將數(shù)據(jù)組合成數(shù)組,,通過Graph控件把數(shù)據(jù)顯示出來,。也可以按照時間條件檢索數(shù)據(jù)庫,Graph控件中將會顯示符合查詢條件的數(shù)據(jù),。
4 結(jié)論
CVI和數(shù)據(jù)庫是開發(fā)虛擬儀器應(yīng)用軟件的不可缺少的組成部分,,利用專門的數(shù)據(jù)庫接口工具包可以方便地實現(xiàn)CVI應(yīng)用程序與數(shù)據(jù)庫的鏈接。本系統(tǒng)的實現(xiàn)表明,,通過CVI與Oracle數(shù)據(jù)庫質(zhì)檢進(jìn)行數(shù)據(jù)交互,,使得測試系統(tǒng)有了強(qiáng)大的功能,在組建復(fù)雜的測試系統(tǒng)中具有廣泛的應(yīng)用價值,。