《Visual C++、LabVIEW、LabWindows/CVI與MATLAB介面技術》
發行者:王華 發布時間:2005-12-1 14:03:00 內容摘要
Visual C++、LabVIEW、LabWindows/CVI與MATLAB
接 口 技 術
王 華 袁中凡
(四川大學製造科學與工程學院,四川 成都610065)
E-mail: wanghua-1125@163.com
摘要:詳細闡述了當今最為流行的物件導向的可視化編程工具Visual C++、虛擬儀器設計平台LabVIEW、LabWindows/CVI與計算、繪圖功能強大的MATLAB之間的介面技術,從而相互融合,更好地發揮各自的優越性。並以執行個體證明了介面技術的有效性和可行性。
關鍵詞: VC++ ;LabVIEW ;LabWindows/CVI ;MATLAB
本文
文字大小:大 中 小
;混合編程
中圖法分類:TP311 文獻標識碼: A
The Interfacing Technology between
Visual C++, Labview, LabWindows/CVI and MATLAB
Wang Hua, Yuan Zhong-fan
(College of Manufacturing Sci. and Eng. ,Sichuan Univ. ,Chengdu 610065)
Abstract: The interfacing technology between Visual C++, LabVIEW, LabWindows/CVI and MATLAB is described in this article. Visual C++ is the most popular, Object Oriented, visual programming tool, and LabVIEW, LabWindows/CVI are two kinds of most excellent developing platform for virtual instrument at present, while MATLAB has powerful functions in calculating and drawing. Only by combining Matlab with Visual C++, LabVIEW, LabWindows/CVI respectively can we make best of their own advantages. The examples can demonstrate the effectiveness and feasibility of the interfacing technology.
Keywords: VC++;LabVIEW;LabWindow/CVI;MATLAB;mixed programming
1 引言
MATLAB是MathWorks公司開發的“演算紙”式的程式設計語言,是一個跨平台的科學計算環境,其具有強大的矩陣列運算、數值分析、訊號處理、系統識別、圖象語音處理等功能。應用MATLAB軟體可以很方便地實現許多複雜的數學演算法,而這些複雜的演算法在其他開發環境中需要大量代碼才能實現。但MATLAB也有不足之處,例如資料輸入、硬體控制等方面相對較弱,程式執行速度也相對較慢且一般需要在MATLAB環境下運行。所以在解決實際工程問題時往往將MATLAB與其他進階語言混合編程,將MATLAB強大的數學功能服務於其他開發環境。Microsoft Visual C++(以下簡稱為VC++)是一種物件導向的可視化的進階編程工具,它是微軟公司推出的支援32位作業系統的開發工具,它提供了對Microsoft最新技術的整合,提供了一個可視化的編程模式,是Windows平台上理想的開發工具。但VC++數學計算能力不強,複雜的數學演算法難以實現。LabVIEW和LabWindows/CVI是目前最有影響的虛擬儀器開發平台,他們將電腦軟體設計平台與資料的採集、分析、處理及結果表達等儀器專業工具有機地結合起來,作為互動高效率的整合式開發環境,LabVIEW和Labwindows/CVI仍然無法滿足複雜的數值計算和分析需求。本文結合上述各種開發環境的優缺點,闡述了VC++, LabVIEW, LabWindows/CVI和MATLAB混合編程的介面技術,並以執行個體成功證明了混合編程介面技術的優越性。
2 Visual C++與MATLAB介面通訊技術
VC++可開發基於MFC的以及基於Windows API的Win32程式,其特點是代碼效率高,執行速度快,可開發出風格多樣的介面,其不足是開發數字圖象處理演算法時代碼編寫工作量很大,如果將MATLAB強大的數值處理功能融合於VC++開發環境,將為工程項目開發提供更有力的支援人員。VC++和MATLAB的介面有四種途徑:
2.1 MATLAB內建編譯器
通過MATLAB內建的編譯器將M檔案轉化為C、C++等各種不同類型的原始碼,並在此基礎上根據應用需要產生MEX檔案、獨立可執行應用程式(stand-alone applications),大大提高了程式運行速度,提高代碼執行效率。尤其是獨立可執行應用程式可以完全脫離MATLAB環境獨立運行,大大擴充了程式的應用範圍。但是,MATLAB編譯器不能編譯指令碼M檔案、有object的M檔案、用input或eval語句操作工作空間變數的M檔案,同時,MATLAB編譯器也不能編譯MATLAB的內建函數。
2.2 在VC++中調用MATLAB數學庫函數
在VC++的Integration Environment下進行程式設計,MATLAB C++數學庫最大的應用價值就在於脫離MATLAB環境運行。VC++調用MATLAB數學庫和圖形庫有幾個明顯的優點:執行速度快;記憶體需求小;發行就緒給沒有MATLAB的使用者使用。但它也有幾個明顯的缺點:不能調用圖形控制代碼系統的函數;不能調用MATLAB工具箱中的函數;在MATLAB中的一些方法在C/C++中得不到支援。
使用MATLAB數學函數庫的環境設定(假設MATLAB安裝在E盤根目錄下)
1)在VC++開發環境中由Tools->Options…->Directories,在Show directorie for欄中首先選擇Includefiles,再在Show directorie for中加入:E:/MATLAB/extern/include 和E:/MATLAB/extern/include/cpp;然後在Show directorie for欄中選擇Library files,再在Dircetories中分別加入E:/MATLAB/bin、E:/MATLAB/extern/lib。
2)在VC++開發環境中由Project->Settings…->C/C++,在C/C++的Category欄中選擇Preprocessor,然後在出現的Preprocessor definition欄中加入MSVC,MSWIND。
3)設定運行時動態連結程式庫。由VC++開發環境中Project->Settings…->C/C++,在C/C++的Category欄中選擇Code Generation,然後在出現的User run-time library欄中選擇Multithreaded DLL。
4)在完成1),2),3)步驟以後,就可以建立工程了。在來源程式中必須加上#include “MATLAB.hpp”,但在工程編譯之前要把libmx.lib, libmatlb. lib, libmatpm.lib和libmmfile.lib等檔案添加到工程中,其方法是由VC++開發環境中Project->Add to Project->Files…彈出的Insert Files to Project對話方塊中,從目錄E:/MATLAB/extern/lib中選擇上述檔案後按“OK”按紐即可。
2.3用Matcom軟體實現VC++與MATLAB的介面通訊
Matcom是mathTools公司推出的一個能將M檔案轉化成相同功能C++代碼的工具。相比Matlab內建的編譯器Compiler,Matcom可產生不需MATLAB環境支援的exe檔案,從而脫離MATLAB環境對MATLAB函數和過程進行有效調用。Matcom的應用主要有三個方面:1)利用Matcom產生獨立執行的exe檔案;2)利用Matcom產生動態連結程式庫(DLL)檔案;3)利用Matcom提供的Visual Matcom功能使Matcom工具條顯示在VC++Integration Environment中。啟動VC++6.0,由Tools->Customize,選擇Add-ins and Maro Files,點擊Brouse,選擇檔案類型為lib,在Matcom/bin下找到MVCIDE.dll檔案並點擊OK,這樣Matcom工具條就出現在VC++Integration Environment下了,可在VC++中直接編譯M檔案。
使用Matcom時的Visual C++環境設定
1)在VC++開發環境中由Tools->Options…->Directories->Show Directories for,在Include files和Library files兩項中分別加入Matcom下的lib目錄,如“D:/MATCOM45/lib”。
2)在VC++開發環境中由Project->Add To Project->Files,將D:/MATCOM45/lib/v4501.lib加入工程,然後在V C++源檔案的標頭檔處應包含matlib.h。VC++源檔案中調用由M檔案轉換的VC++代碼之前應用“initM(Matcom_VERSION):”函數來初始化類庫調用,並用“exitM();”函數來結束類庫調用。因此在main.cpp檔案中加入下列代碼:
int main()
{initM(Matcom_VERSION):
…………//轉換成功的c++代碼
exitM();
return 0;
}
2.4在VC++中調用MATLAB引擎engine實現介面通訊
與其他三種介面方式相比,MATLAB引擎所提供的MATLAB功能支援是最全面的。通過引擎,應用程式實際上會開啟一個新的MATLAB進程,可以控制它完成任何計算和繪圖操作,對所有的資料結構都提供100%的支援。MATLAB引擎採用客戶機+伺服器模式,其實質是用Active X自動化DDE技術來實現VC++與MATLAB之間的資料通訊。在具體應用程式中,VC++作為用戶端負責使用者介面和提出資料請求,而MATLAB則屬於服務端,向用戶端提供資料服務。MATLAB提供了以下幾個引擎函數與用戶端進行互動:
(1) engOpen:啟動MATLAB引擎;
(2) engClose:關閉MATLAB引擎;
(3) engEvalString:向MATLAB發送一個字串,讓MATLAB執行;
(4) engOutputBuffer:確定存放MATLAB輸出結果緩衝區域;
(5) engGetArray:從MATLAB工作空間擷取一個變數;
(6) engPutArray:將mxArray結構體變數輸送到MATLAB工作空間;
在VC++整合式開發環境中建立和調試MATLAB引擎的基本步驟如下:
1)啟動VC++6.0,建立MFC AppWizard(exe)類型工程。
2)項目工程建立完畢後,在VC++開發環境中由Tools->Options…->Directories->Show Directories for,在Include files和Library files兩項中分別加入MATLAB根目錄/extern/include、MATLAB根目錄/extern/lib/win32/microsoft/msvc60,然後選擇OK按紐。
3)在VC++開發環境中,選擇下拉式菜單Project中的功能表項目Settings,開啟工程設定屬性頁面,選擇Link頁面,在Object/Library modules編輯框中,添加檔案名稱libmx.lib。
步驟2)只需設定一次,而步驟3)則每個工程都要單獨設定,因為每個工程使用的MATLAB函數可能不一樣。
經上述幾個步驟,使用者便完成了對VC++6.0開發環境調用ATLAB引擎函數的調用、設定以及MATLAB引擎程式的建立,經過編譯、連結後便可執行。
2.5應用舉例
前面主要基於VC++與MATLAB各自的優缺點,提出了將他們混合編程介面的四種途徑,與其他三種方法相比較,用MATLAB引擎實現介面,節省大量的系統資源,應用程式整體效能好,引擎提供的MATLAB支援功能最全面,可充分發揮MATLAB的數值計算和圖形處理的功能,對所有資料結構提供完全支援,該介面技術適於科研,提高效率。在實際工程問題中,使用者可根據具體情況選擇適合自己的介面技術。筆者針對每一種介面技術,都在電腦上進行了調試、驗證,事實證明上面的四種VC++與MATLAB的介面技術都完全正確、有效。限於篇幅,在這隻對用MATLAB引擎實現介面詳細舉例。
MATLAB在訊號處理和圖形顯示方面具有VC++無法比擬的優勢,在MATLAB中實現FFT演算法只需要一個函數fft()就可實現,如果採用VC++將需要很長的代碼,並且還需要理解FFT的原理。如果採用VC++調用MATLAB引擎函數來實現FFT演算法,就大大減少了編程的工作量,提高了編程效率,可以很方便的實現訊號的FFT變換。
現有類比訊號x(t)=sin(2πft)+3sin(4πft),求N點DFT的幅值譜。其主要步驟如下
1) 用VC++產生一個Engdemo的單文檔MFC應用程式。
2) 根據2.4所介紹的方法設定編譯環境。
3) 添加一個新的cpp檔案進入工程,其檔案名稱為matlab.cpp,代碼如下:
#include stdafx.h
#include engine.h
void MatlabDraw()
{
Engine *ep;
//開啟MATLAB引擎,建立與本地MATLAB的串連
if(!(ep=engOpen(NULL)))
MessageBox(NULL,不能開啟MATLAB引擎,engine demo,MB_OK);
//向MATLAB傳送資料,分析、運算資料
engEvalString(ep,N=1024;);
engEvalString(ep,t=0:0.001:1.023;);
engEvalString(ep,f=100;);
engEvalString(ep,x=sin(2*pi*f*t)+3*sin(2*pi*2*f*t););
//進行FFT變換,並將運算結果以圖象形式顯示出來返回VC++
engEvalString(ep, y=fft(x,N););
engEvalString(ep, fre=abs(y););
engEvalString(ep,subplot(2,1,1););
engEvalString(ep,plot(t,x););
engEvalString(ep,xlabel('時間'););
engEvalString(ep,subplot(2,1,2););
engEvalString(ep,plot(fre(1:600););
engEvalString(ep,xlabel('頻率'););
MessageBox(NULL,please any key ,engine demo,MB_OK);
//關閉引擎
engClose(ep);
}
4) 添加一個“Engine”菜單,在“Engine”菜單下添加一個“demo”功能表項目。
5) 實現“demo”功能表項目的訊息函數。
void CEngdemoView::OnEngineDemo()
{
MatlabDraw();
}
6) 在檔案EngdemoView.cpp的頭部添加函式宣告:
Extern void MATLABDraw();
編譯運行程式,單擊“Engine”菜單上的“demo”功能表項目,後台啟動MATLAB,並顯示1結果:
圖1 時域訊號及其頻譜(其中為時域訊號,為頻譜)
3 虛擬儀器開發平台Labview、Labwindows/CVI與MATLAB介面技術
LabVIEW是目前國際上唯一的編譯型圖形化程式設計語言,其提供了豐富的資料擷取、分析及儲存的庫函數,是一個開放型的開發環境,擁有大量與其它應用程式通訊的VI庫。例如LabVIEW使用自動化ActiveX、DDE和SQL,可與其它Windows應用程式整合;在對硬體的支援方面,LabVIEW整合了與GPIB、VXI、PXI、RS-232/485、PLC和插入式數字採集裝置等進行資料通訊的全部功能。 LabVIEW還直接支援動態資料交換(DDE)、結構化查詢語言 (SQL)(SQL)、TCP和UDP網路通訊協定等。Labwindows/CVI以標準C語言為基礎,將電腦軟體設計平台與資料的採集、分析、處理及結果表達等儀器專業工具有機地結合起來,作為互動整合式開發環境,Labwindows/CVI提供大量與外部代碼或軟體進行介面的機制,如DLL(動態連結程式庫)、DDE(共用庫)、ActiveX控制項等。LabWindows/CVI是熟悉C語言的開發設計人員開發檢測、資料擷取、訊號處理、監控等虛擬儀器的理想工具。
儘管如此,但LabVIEW和Labwindows/CVI仍然無法滿足複雜的數值計算和分析需求,所以在大型的測試系統和虛擬儀器開發中,Labwindows/CVI就顯得力不從心,而MATLAB是一種高效率的數學計算工具,將它和LabVIEW、LabWindows/CVI混合起來編程是一種非常有效開發途徑。下面就LabVIEW、LabWindows/CVI與MATLAB之間的介面技術進行詳細介紹,並舉例驗證。
3.1 Labview與MATLAB的介面
LabVIEW可通過MATLAB Script節點與MATLAB通訊
3.1.1 MATLAB Script節點
MATLAB Scrip節點使得使用者既可以將在MATLAB下編寫的M程式匯入到流程圖中,又可在流程圖中根據MATLAB程式的文法編輯M程式。在LabVIEW中選擇該節點的操作為:在流程圖編輯視窗中由Function->Mathematics->Formula->MATLAB Scrip,將該節點添加到流程圖中。開啟MATLAB Scrip節點之後,可直接在其框圖內編寫MATLAB程式碼。如果事先已經將MATLAB程式編好,則可直接將其匯入到節點中,可通過單擊“Import”完成匯入。還可以通過在節點邊框上右擊滑鼠右鍵,在彈出式菜單中選擇“Add Import”或“Add Output”增加輸入、輸出變數,起到在LabVIEW和MATLAB之間傳遞參數的作用。
3.1.2 MATLAB Script應用樣本
前面詳細介紹了MATLAB Script節點的使用方法,下面通過虛擬訊號提取的模擬設計加以示範。
1)小波分析在訊號提取中的應用
在訊號的採集、傳輸與處理過程中,由於外界或電路內部因素的幹擾,使得訊號被雜訊汙染,所處理的雜訊或高頻訊號中夾雜著一些有用的緩變訊號,通過小波分析可將緩變的有用訊號從雜訊或其他高頻訊號中識別出來。在實際工程中,有用訊號通常表現為頻率較低、平穩的訊號,而雜訊訊號或其他高頻訊號則表現為頻率較高的訊號。應用小波分析進行訊號提取主要涉及到小波的分解與重構。
2)虛擬訊號提取儀的設計
在本例中含有雜訊的一維訊號表示為:
s(i)=f(i)+e(i) ,i=0,1,2,…,n-1
其中,f(i)為真實的低頻緩變訊號——Sine Wave,;e(i)為雜訊訊號——Uniform White Noise
在該模擬過程中,Labview通過資料擷取或模擬產生含有雜訊或高頻訊號的低頻緩變訊號,通過虛擬儀器前面板設定訊號提取處理的參數,將參數通過LabVIEW與MATLAB的介面傳遞給MATLAB相應的功能函數,完成訊號分析與處理功能,最後將處理結果回傳給LABVIEW進行顯示。
MATLAB小波工具箱提供了許多小波分析功能函數,包括小波分析通用函數、小波函數、一維小波變換、二維小波變換、小波包演算法等。在該模擬過程中主要應用了WEDN函數,該函數可直接對一維訊號消噪,其調用格式為:
[XD,CXD,LXD]=WDEN(X,TPTR,SORH,SCAL,N,‘wname’),函數的傳回值是經過對原始訊號X進行消噪處理後的訊號XD及其分解結構[CXD,LXD]。式中SORH指定軟閾值(SORH=‘s’)或硬閾值( SORH=‘h’)的選擇;TPTR指定閾值的選取規則,它有四種選擇:‘rigrsure’,‘heursure’,‘sqtwolog’,‘minimaxi’,本程式中選擇‘heursure’即選擇首次選擇的啟發學習法變數作為閾值;N為小波分解的層數;wname指定分解時所用的小波。小波訊號提取模擬過程的設計步驟如下:
1) 開啟LabVIEW,在前面板開發視窗中放置二個波形顯示控制項(Waveform Graph),一個用於顯示含雜訊的波形,另一個用於顯示消除雜訊後的波形;放置三個數值輸入控制項,分別用於設定低頻緩變訊號頻率、消噪層數(X)、採樣頻率。
2) 在流程圖視窗中放置正弦波形發生器(Sine Wave.vi)、均勻分布的隨機訊號發生器(Uniform White Noise.vi),分別用來產生正弦波序列和均勻分布的隨機序列,它們分別用來模擬低頻緩變訊號和雜訊訊號;添加加法器(Add)將低頻緩變訊號和雜訊訊號疊加;由Function->Mathematics->Formula操作,選擇MATLAB Script放到流程圖編輯框中,添加輸入變數XX,X和輸出變數XD,對應資料類型分別為Real Vector,Real,Real Vector。
3) 按照2所示的連線圖,進行資料流向的串連;在MATLAB Script節點編輯框中編寫M程式。
圖2 虛擬訊號模擬儀流程圖
4)運行程式。單擊前面板上的“低頻緩變訊號頻率”按紐,選擇模擬正弦訊號的頻率;單擊“消噪層數”按紐,確定消噪層數;單擊“採樣頻率”按紐,選擇模擬正弦訊號的採樣頻率。最後運行儀器VI檔案,運行結果3所示
圖3 運行結果
由此可以看出,運用LabVIEW和MATLAB軟體的介面技術,通過小波分析成功地實現了訊號提取的模擬過程。通過這個例子可以看到,基於LabVIEW 和MATLAB介面技術的虛擬儀器的開發是完全可行的。Labview是圖形化儀器程式設計語言,其方便易用,儘管其提供了大量的資訊功能處理函數,但畢竟功能有限。而MATLAB有強大的矩陣列運算、數值分析、訊號處理、系統識別、圖象語音處理等功能,通過介面技術在LabVIEW中調用MATLAB是開發虛擬儀器的有效途徑。
3.2 LabWindows/CVI與MATLAB的介面通訊
通過在LabWindows/CVI環境下建立一個資料交換ActiveX服務控制項可以實現與MATLAB之間的介面通訊。建立ActiveX服務的方法有兩種:下面對兩種方法分別介紹,讀者可根據自己的實際情況而具體選擇。
1.在LabWindows/CVI6.0視窗中,使用者自行建立ActiveX服務函數,但這種方法要求先裝MATLAB,後裝Labview/CVI。其步驟如下:
1) 開啟LabWindows/CVI視窗中選擇Tools->Create ActiveX Controller彈出ActiveX Controller Wizard-Welcome對話方塊,單擊Next,會在ActiveX Controller Wizard-Choose Server中列表顯示出系統已安裝的ActiveX Server,在列表中選擇Matlab Automation Server Type Library選項。
2)單擊Next後,彈出ActiveX Controller Wizard-Configure對話方塊,需要對目標fp檔案命名並設定存放路徑,假設檔案名稱為MATLABatvx.fp,存放路徑為D:/CVI6.0/Work,單擊Next。
3)在彈出的ActiveX Controller Wizard-Advanced Options對話方塊中單擊Advanced Options…,按下Check All按紐,其餘按照預設,單擊Next後,系統將自動產生MATLABatvx.fp、MATLABatvx.c、MATLABatvx.h、MATLABatvx.obj和MATLABatvx.sub 5個檔案,在目錄D:/CVI6.0/Work下找到4所示的五個表徵圖。
圖4 ActiveX服務函數表徵圖
2.利用LabWindows/CAI內建的ActiveX服務函數進行介面通訊
5.0以上版本的LabWindows/CAI的CVI/samples/activex/matlab中直接提供有Labview/CVI和MATLAB介面通訊的ActiveX服務函數:matlabsrvr.c、matlabsrvr.h、matlabsrvr.obj、matlabsrvr.fp、matlabsrvr.sub,但是由於各個使用者所裝的MATLAB版本的不同,在實現混合編程時,並不能直接應用CVI/samples/activex/matlab下的ActiveX服務函數,因為不同版本MATLAB軟體的Matlab Application的註冊碼是不同的,這就需要修改MATLAB的註冊碼。經筆者悉心研究,總結其方法及其步驟如下:
1)開啟登錄編輯程式,查到使用者安裝的相應版本Matlab Application的註冊碼,以version6.5為例,其註冊碼是{554F6053-79D4-11D4-B067-009027BA5F81}
2)由CVI/samples/acticex/matlab開啟ActiveX服務函數matlabsrvr.c,將matlabsrvr.c中的內建的MATLAB註冊碼5.01版本:
GUID clsid={0x669CEC94,0x6E22,0x11CF,0xA4,0xD6,0x0,0xA0,0x24,0x58,0x3C,0x19};
改寫為:
GUID clsid={0x554F6053,0x79D4,0x11D4,0xB0,0x67,0x0,0x90,0x27,0xBA,0x5f,0x81};
以上是兩種方法,但得到的ActiveX服務函數的功能是一樣的,即包含了LabWindows/CVI同MATLAB的混合編程所要用到的最基本的功能函數,包括:開啟MATLAB函數,關閉MATLAB函數,發送矩陣函數,接受矩陣函數,運行MATLAB功能函數的函數,MATLAB視窗最大最小化函數等。為了方便開發人員實現LabWindows/CVI環境下與MATLAB混合編程,NI公司還專門配置了一個更加友好的介面函數檔案matlabutil.c。
在LabWindows/CVI中實現與MATLAB混合編程的具體方法:
ActiveX服務函數建立完畢後,就可實現混合編程了。啟動LabWindows/CVI,選擇File->New->UserInterface(*.uir)建立儀器面板檔案,面板設計完畢後儲存該檔案,取名為Example.uir.,選擇Code->Generate->All Code,編寫原代碼,並以名Example.c儲存。經過面板設計和原代碼編寫後就可建立並儲存工程檔案了,在工程檔案視窗中選擇Edit->Add Files to Project,添加Example.c、Example.h、Example.uir,並添加上文提到的ActiveX服務函數,在工程檔案、使用者面板編輯或代碼視窗中操作Run->Run Project,就可調試、運行工程檔案了。由於篇幅所限,筆者在此就不舉例了。相信只要熟悉LabWindows/CVI的讀者都會根據上述方法很順利的實現LabWindows/CVI環境下與MATILAB混合編程了。
4.結束語
本文系統地介紹了Visual C++、LabVIEW、LabWindows/CVI與MATLAB之間的介面技術,它們的實現極大地縮短了程式開發週期,減輕了編程工作量,提高了工作效率。在工程研究中,這種混合編程的介面技術將會有很大的應用。本文所舉常式在VC++6.0、MATLAB6.5、LabVIEW6.1中調試全部通過,驗證了上述介面技術的正確性。
參考文獻
[1] (美) David J. Kruglinski, Socot wingo, George Shepherd.Programming Visual C++6.0技術內幕[M].北京:北京希望電子出版社,1999.
[2]MATLAB C++ Math Library Reference[M] . 2000. MathWorks Inc.
[3]NI公司.LabWindows/CVI programmer Reference Manual[M],2001.
[4]何強.MATLAB擴充編程[M].北京:清華大學出版社,2002.
[5]劉君華.基於LabIEW的虛擬儀器設計[M].北京:電子工業出版社,2003.
[6]陳亞勇.MATLAB訊號處理詳解[M]. 北京:人民郵電出版社,2001.
[7]陶紅.MATLAB與C/Visual C++混合編程的實現[J].電腦工程與應用,2000,(10).
[8]鄭力新.LabWindows/CVI與MATLAB軟介面技術及應用[J].自動化儀錶,2004,(4).
[9]聶開俊.LabWindows/CVI中ActiveX伺服器的開發[J].電腦模擬,2004,(12).
作者簡介:王 華(1981-),男,甘肅臨澤人,四川大學製造科學與工程學院在讀碩士研究生,主要研究方向:機械電子工程;袁中凡(1950-),男,四川大學製造科學與工程學院教授、博士生導師,主要研究方向:機械電子工程。
作者連絡方式:四川大學製造科學與工程學院2004級研究生1班 王華
郵編:610065
E-mail: wanghua-1125@163.com
電話:028-85404459
手機:13194863492