版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Matlab與VB混合編程一、
ActiveX技術二、動態(tài)鏈接庫(DLL)實現步驟(一)Matlab7.1版開發(fā)環(huán)境編寫m文件生成COM組件VB中調用動態(tài)鏈接庫應用程序發(fā)布應用程序安裝實現步驟(二)Matlab2013a版主要內容一、
ActiveX技術 ActiveX自動化協(xié)議是一種允許一個應用程序或組件去控制另一個應用程序或組件的協(xié)議,VB和MATLAB都支持ActiveX自動化協(xié)議。通過自動化協(xié)議,可以在VB應用程序中執(zhí)行MATLAB命令,并從的MATLAB工作空間中獲取數據以及向MATLAB輸送數據從而實現數據的交互。要實現這種功能,用戶首先必須獲得MatlabActiveX對象在系統(tǒng)注冊表中定義的名字─Matlab.Application。在VB程序中要添加如下的代碼:DimMatlabasObjectSetSetMatlab=CreateObject(“Matlab.Application”)Matlab.execute(Strcommand)VB可執(zhí)行一條由Strcommand字符串決定的Matlab指令或在Matlab的工作空間調用M函數文件,在屏幕上顯示圖形或計算結果。DimMatlabAsObjectPrivateSubForm_Load()SetMatlab=CreateObject("matlab.application")EndSubPrivateSubCommand1_Click()DimstrcommandAsStringstrcommand="x=0:0.01:2*pi;y=sin(x);plot(x,y)"Matlab.execute(strcommand)EndSubPrivateSubCommand2_Click()Matlab.execute("closegcf")EndSubDimMatlabAsObjectPrivateSubForm_Load()SetMatlab=CreateObject("matlab.application")EndSubPrivateSubCommand1_Click()DimstrcommandAsStringstrcommand="x=0:0.01:2*pi;y=sin(x);set(gcf,'Visible','off');"strcommand=strcommand+"plot(x,y);print-dmeta;close(gcf);"Matlab.execute(strcommand)Picture1.Picture=Clipboard.GetData()EndSubPrivateSubCommand2_Click()Picture1=NothingEndSub
利用ActiveX進行VB和Matlab的交互通信時,所采用的Matlab語句是直接使用Matlab提供的函數和圖形庫命令。該方法編程效率高,但程序的執(zhí)行必須在Matlab環(huán)境下,這樣會占用內存,使程序的執(zhí)行速度受一定影響。二、動態(tài)鏈接庫(DLL)
借助VisualC++與MATLAB的接口,將MATLAB的程序(.M)文件編譯為動態(tài)鏈接庫(.DLL)
COM組件,VB可以通過調用DLL實現對Matlab的調用。這種方法脫離了MATLAB環(huán)境,在算法上采用C++語句,所以運行速度較快,可應用于實時運算。通過這種方法可以發(fā)布成脫離MATLAB和VB的安裝軟件,在其他沒有安裝MATLAB和VB軟件的計算機上都能運行。實現步驟(一)
Matlab7.1版1、開發(fā)環(huán)境:VisualStudio6.0Matlab7.1安裝路徑不能有空格或中文2、編寫m文件
(注:m文件必須為m函數,不能是腳本文件)functionplotcurx=0:0.01:2*pi;y=sin(x);set(gcf,'visible','off');plot(y)print-dmeta;close(gcf);3、生成COM組件(1)設置系統(tǒng)路徑我的電腦
屬性
高級
環(huán)境變量
系統(tǒng)變量
Path選項,增加以下路徑:
頭文件:C:/MATLAB7/extern/include;
庫:C:/MATLAB7/extern/lib/win32/microsoft/msvc60;
DLL:C:/MATLAB7/bin/win32C:為自己實際的MatlAB安裝目錄(2)安裝C++編譯器在MATLAB命令窗口里輸入:mbuild–setup命令PleasechooseyourcompilerforbuildingstandaloneMATLABapplications:
Wouldyoulikembuildtolocateinstalledcompilers[y]/n?n有個讓選y/n的matlab自動定位編譯器位置的提示時要選n,然后手動指定MicrosoftVisualStudio文件夾所在位置,選擇安裝VC++6.0編譯器。(3)創(chuàng)建COM組件工程在命令窗口中輸入comtool,出現com組件builder。選擇FILE
NewProject選項。Componentname選項中輸入組件名稱:test(*組件名不能與m文件重名)(4)添加m文件(5)生成動態(tài)鏈接庫單擊build
ComObject在創(chuàng)建的COM工程下會生成相關的組件。4、VB中調用動態(tài)鏈接庫(1)注冊動態(tài)鏈接庫將生成的COM組件復制到其他位置,運行distrib文件夾中的_install.bat文件注冊動態(tài)鏈接庫。(2)創(chuàng)建VB工程引入COM組件。選擇Project
Reference選項,將test_com_1.0TypeLibrary選中
編寫VB程序代碼DimMatlabAstestCOM.testCOMclassPrivateSubForm_Load()SetMatlab=NewtestCOM.testCOMclassEndSubPrivateSubCommand1_Click()
CallMatlab.plotcurPicture1.Picture=Clipboard.GetData()EndSubPrivateSubCommand2_Click()Picture1=NothingEndSub5、應用程序發(fā)布(1)COM組件打包在本地使用的話,MATLAB會自動注冊COM組件,無需發(fā)布;但如果要在沒有安裝MATLAB的計算機上使用,安裝包就需添加MATLAB運行庫MCR。打開創(chuàng)建的COM工程,點擊Component
PackageComponent選項,選中IncludeMCR,點擊create。(2)VB程序發(fā)布filemakeproject1.exeAdd-Ins
Add-InManager,點擊PackageanddeploymentWizard,并選中Loaded/unloadedAdd-Ins
PackageanddeploymentWizard,按提示進行操作,直至打包發(fā)布完成。*打開生成的安裝包中的setup.Lst文件,[BootstrapFiles]字段里面只保留VB6STKIT.DLL和msvbvm60.dll幾個文件,其余的都刪掉,否則在不同版本的系統(tǒng)上使用可能會報錯。6、應用程序安裝(1)安裝VB應用程序。在要安裝的計算機上,新建一個文件夾作為應用程序的安裝目錄。將打包好的VB程序中的壓縮包(.CAB)解壓到安裝目錄中再進行安裝。(2)安裝Matlab控件。運行COM組件包中的distrib文件夾下的類名.exe文件,運行過程中全部按“y”覆蓋原文件。將安裝目錄指向VB應用程序安裝所在的目錄(即VB應用程序與Matlab控件安裝在同一個目錄下),否則dll文件是沒有辦法注冊的,選擇后,全部點擊Next,至MatlabComponentRuntime安裝完成,DOS安裝界面也會隨后自動關閉。MATLAB7.1及以前版本生成COM組件的命令是comtool,從R2006a(7.2)開始換成了deploytool。2013b版和2014a版利用deploytool生成COM組件時都會出現如下圖所示的錯誤:實現步驟(二)Matlab2013a版MatlAB2013a版生成COM組件的方法步驟:1、同MATLAB7.1版安裝路徑不能有空格或中文,編寫m函數文件,選擇C/C++編譯器2、在命令窗口運行deploytool。輸入project名稱,Type選項選擇GenericCOMComponent。3、為COM組件添加類及類的輸出函數,然后點擊編譯。編譯編譯過程4、生成自解壓安裝包在本地使用的話,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《TPS豐田生產方式》課件
- 決定銷售業(yè)績的重要心態(tài)(課件)
- LNG氣化站應急備用氣源自用建設項目可行性研究報告模板-立項備案
- 一年級語文上冊拼音aoe
- 2024年江蘇省招聘社區(qū)工作者題庫及參考答案
- 單位管理制度收錄大合集【人員管理篇】十篇
- 單位管理制度品讀選集【職員管理】十篇
- 樓梯 欄桿 欄板(一)22J403-1
- 果凍袋行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 中國返利網站行業(yè)市場調研分析及投資戰(zhàn)略咨詢報告
- 員工待崗期滿考核方案
- 部編人教版六年級下冊小學語文全冊教案(教學設計)(新課標核心素養(yǎng)教案)
- 進駐商場計劃書
- 建筑施工材料供應鏈管理與控制
- 代理人培養(yǎng)計劃書
- 傳播學理論復習資料
- 鄉(xiāng)鎮(zhèn)污水處理調研報告
- 沈從文先生在西南聯(lián)大全文
- 紀檢涉案財物管理規(guī)定
- 低溫雨雪冰凍災害應急救援準備
- 《企業(yè)信息管理》2023期末試題及答案
評論
0/150
提交評論