匡偉男 袁鉀光
摘? 要:利用CVI的平臺對SQLServer數(shù)據(jù)庫與MATALAB的調(diào)用,實現(xiàn)了數(shù)據(jù)的動態(tài)存儲與利用MATALAB對數(shù)據(jù)進(jìn)行處理的功能。
關(guān)鍵詞:CVI;SQLSever;MATALAB;腳本;ActiveX控件
中圖分類號:TP311.5? ? ? ?文獻(xiàn)標(biāo)志碼:A 文章編號:2095-2945(2020)05-0176-02
Abstract: This paper using CVI platform to call the SQL Server database and MATALAB, thus realizing the dynamic storage of data and the processing of data.
Keywords: CVI; SQLSever; MATALAB; Scripts; ActiveX controls
引言
在自動化生產(chǎn)中特別是在上位機(jī)的開發(fā)中,經(jīng)常遇到一些場景需要對大量的數(shù)據(jù)進(jìn)行儲存與處理。如果讓上位機(jī)自己開發(fā)底層的數(shù)據(jù)存儲與處理程序,則勢必會加大工作量,且“不專業(yè)”的數(shù)據(jù)處理方式可能會占用相當(dāng)大的資源,使得正常處理流程受到影響。所以,本文從“專業(yè)的人”干“專業(yè)的事”角度出發(fā),利用CVI 強(qiáng)大的支持庫對SQL Server與MATALAB進(jìn)行調(diào)用來對數(shù)據(jù)進(jìn)行處理。
1 利用CVI調(diào)用MATALAB與數(shù)據(jù)庫
LabWindows/CVI 是NI 開發(fā)的虛擬儀器開發(fā)平臺,包含了集成式開發(fā)環(huán)境、交互式編程方法、簡單直觀的圖形用戶界面設(shè)計和強(qiáng)大的圖表功能[1]。實現(xiàn)LabWindows/CVI 和MATLAB 調(diào)用的關(guān)鍵是其數(shù)據(jù)和命令的交換,LabWindows/CVI 和MATLAB都提供了與外部程序接口的組件[2],使得這種調(diào)用成為可能。
NI 的LabWindows/CVI SQL 工具包提供了一套簡單易用的工具,使用戶能夠快速鏈接本地或者遠(yuǎn)程數(shù)據(jù)庫,并通過結(jié)構(gòu)化查詢語言(SQL)編程,執(zhí)行諸多常用數(shù)據(jù)庫操作[3]。本文是將利用SQL Server將數(shù)據(jù)庫建立在本地,通過CVI訪問所建立的數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行簡單的操作。
在本文中,調(diào)用方法主要如下所示:
1.1 創(chuàng)建ActiveX支持庫調(diào)用MATALAB
在菜單欄選擇Tool-> Create ActiveX Controller->Matlab Application(Version 8.6) Type Library,然后根據(jù)向?qū)нx擇支持庫保存的文件路徑。完成后會在庫中自動生成一個MATALAB 2015b的支持庫和五個相關(guān)的拓展名為.c .fp .h .obj .sub的文件,將后綴為.fp的文件需要被添加到自己的工程目錄中。
1.2 利用CVI訪問SQL Server數(shù)據(jù)庫
SQL Server建立數(shù)據(jù)庫,創(chuàng)建用戶并創(chuàng)建一個新的表,在CVI中安裝SQL數(shù)據(jù)庫支持工具NILWCVISQL220,該工具包支持對多種數(shù)據(jù)庫的訪問與使用。
1.3 支持庫中的接口函數(shù)
接口函數(shù)是支持庫封裝的最基本函數(shù),在應(yīng)用中只需要按其要求調(diào)用,知悉其作用而不用去管內(nèi)部實現(xiàn)過程。本文只給出幾個重要的接口函數(shù)的參數(shù)說明,其余的接口函數(shù)使用,讀者可調(diào)用函數(shù)面板查看使用指南。
(1)MLApp_NewDIMLApp,該函數(shù)創(chuàng)建一個Matlab的句柄。(2)MLApp_DIMLAppExecute,該函數(shù)執(zhí)行一條Matlab命令。(3)MLApp_DIMLAppQuit,該函數(shù)退出Matlab。(4)DBInit,該函數(shù)對數(shù)據(jù)庫進(jìn)行初始化操作。(5)DBConnect,該函數(shù)設(shè)置連接參數(shù),指定數(shù)據(jù)庫類型,文件路徑,登錄id,密碼等。(6)DBBindColChar,該函數(shù)對數(shù)據(jù)庫中的列進(jìn)行綁定。(7)DBFetchNext,該函數(shù)順序得到數(shù)據(jù)庫中的下一個記錄。
1.4 函數(shù)調(diào)用實例
在CVI上建立調(diào)用M腳本的運(yùn)行環(huán)境,按照腳本語言編寫簡單的腳本,在CVI中調(diào)用。以下主要給出打開matalab與執(zhí)行腳本的代碼,不對整個工程邏輯與子函數(shù)進(jìn)行贅述。實現(xiàn)打開matalab功能,并最大化打開的matalab窗口。得到句柄后可進(jìn)行對MATALAB的操作,運(yùn)行單個命令函數(shù)代碼,如圖1所示。
本函數(shù)的調(diào)用在“運(yùn)行腳本”的回調(diào)函數(shù)中,其中函數(shù)RunMatlabCommand為主要對1.3節(jié)函數(shù)DIMLAppExecute封裝。
由執(zhí)行結(jié)果可知,本工程順利執(zhí)行腳本中所寫腳本,畫出了3D測試效果圖,實現(xiàn)了由CVI調(diào)用matalab的過程。
2 利用CVI混合調(diào)用數(shù)據(jù)庫與MATALAB
2.1 建立工程
將上述庫建到同一個工程中,預(yù)期實現(xiàn)由CVI程序產(chǎn)生一個正弦波曲線數(shù)據(jù),將產(chǎn)生的數(shù)據(jù)保存到文件中,并將保存的文件的路徑與日期寫到建立的數(shù)據(jù)庫中,在matalab中實現(xiàn)對曲線數(shù)據(jù)的重繪。
2.2 實現(xiàn)過程
在TABLE控件中,建立其點擊的回調(diào)函數(shù),在回調(diào)函數(shù)的實現(xiàn)中獲取點擊處的單元格的值,此值為一個文件名,將此文件名調(diào)用MATALAB命令行輸入到MATALAB中,預(yù)先建好一個M腳本文件,寫好需要畫圖的腳本實現(xiàn),只需將腳本中的參數(shù)由命令行中先指定即可實現(xiàn)預(yù)期效果。重要的函數(shù)實現(xiàn)如圖2所示。
2.3 實現(xiàn)結(jié)果
可以看到點擊一個文件名時MATALAB自動的對數(shù)據(jù)進(jìn)行重繪,繪制出來的圖像與預(yù)期一致,如圖3所示。
3 結(jié)束語
通過這種混合調(diào)用的方式,能夠大大減少工作量,也能夠讓工作變得更加直觀與靈活。本文只介紹了CVI對數(shù)據(jù)存儲與處理兩方面的軟件簡單調(diào)用,讀者可在本文基礎(chǔ)上進(jìn)行更深入的使用或是對其它需要的軟件進(jìn)行調(diào)用。
參考文獻(xiàn):
[1]王曉崗,吳得光.LabWindows/CVI環(huán)境下調(diào)用Excel文檔的實現(xiàn)方法[J].甘肅科學(xué)學(xué)報,2013,25(2):101-104.
[2]劉君華.基于LabWindows/CVI的虛擬儀器設(shè)計[M].北京:電子工業(yè)出版社,2003.
[3]蘇少雄,鄭賓.LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用[J].測控技術(shù),2018,37(5):128-131.