版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Matlab與VB混合編程一、
ActiveX技術(shù)二、動(dòng)態(tài)鏈接庫(kù)(DLL)實(shí)現(xiàn)步驟(一)Matlab7.1版開(kāi)發(fā)環(huán)境編寫m文件生成COM組件VB中調(diào)用動(dòng)態(tài)鏈接庫(kù)應(yīng)用程序發(fā)布應(yīng)用程序安裝實(shí)現(xiàn)步驟(二)Matlab2013a版主要內(nèi)容一、
ActiveX技術(shù) ActiveX自動(dòng)化協(xié)議是一種允許一個(gè)應(yīng)用程序或組件去控制另一個(gè)應(yīng)用程序或組件的協(xié)議,VB和MATLAB都支持ActiveX自動(dòng)化協(xié)議。通過(guò)自動(dòng)化協(xié)議,可以在VB應(yīng)用程序中執(zhí)行MATLAB命令,并從的MATLAB工作空間中獲取數(shù)據(jù)以及向MATLAB輸送數(shù)據(jù)從而實(shí)現(xiàn)數(shù)據(jù)的交互。要實(shí)現(xiàn)這種功能,用戶首先必須獲得MatlabActiveX對(duì)象在系統(tǒng)注冊(cè)表中定義的名字─Matlab.Application。在VB程序中要添加如下的代碼:DimMatlabasObjectSetSetMatlab=CreateObject(“Matlab.Application”)Matlab.execute(Strcommand)VB可執(zhí)行一條由Strcommand字符串決定的Matlab指令或在Matlab的工作空間調(diào)用M函數(shù)文件,在屏幕上顯示圖形或計(jì)算結(jié)果。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進(jìn)行VB和Matlab的交互通信時(shí),所采用的Matlab語(yǔ)句是直接使用Matlab提供的函數(shù)和圖形庫(kù)命令。該方法編程效率高,但程序的執(zhí)行必須在Matlab環(huán)境下,這樣會(huì)占用內(nèi)存,使程序的執(zhí)行速度受一定影響。二、動(dòng)態(tài)鏈接庫(kù)(DLL)
借助VisualC++與MATLAB的接口,將MATLAB的程序(.M)文件編譯為動(dòng)態(tài)鏈接庫(kù)(.DLL)
COM組件,VB可以通過(guò)調(diào)用DLL實(shí)現(xiàn)對(duì)Matlab的調(diào)用。這種方法脫離了MATLAB環(huán)境,在算法上采用C++語(yǔ)句,所以運(yùn)行速度較快,可應(yīng)用于實(shí)時(shí)運(yùn)算。通過(guò)這種方法可以發(fā)布成脫離MATLAB和VB的安裝軟件,在其他沒(méi)有安裝MATLAB和VB軟件的計(jì)算機(jī)上都能運(yùn)行。實(shí)現(xiàn)步驟(一)
Matlab7.1版1、開(kāi)發(fā)環(huán)境:VisualStudio6.0Matlab7.1安裝路徑不能有空格或中文2、編寫m文件
(注:m文件必須為m函數(shù),不能是腳本文件)functionplotcurx=0:0.01:2*pi;y=sin(x);set(gcf,'visible','off');plot(y)print-dmeta;close(gcf);3、生成COM組件(1)設(shè)置系統(tǒng)路徑我的電腦
屬性
高級(jí)
環(huán)境變量
系統(tǒng)變量
Path選項(xiàng),增加以下路徑:
頭文件:C:/MATLAB7/extern/include;
庫(kù):C:/MATLAB7/extern/lib/win32/microsoft/msvc60;
DLL:C:/MATLAB7/bin/win32C:為自己實(shí)際的MatlAB安裝目錄(2)安裝C++編譯器在MATLAB命令窗口里輸入:mbuild–setup命令PleasechooseyourcompilerforbuildingstandaloneMATLABapplications:
Wouldyoulikembuildtolocateinstalledcompilers[y]/n?n有個(gè)讓選y/n的matlab自動(dòng)定位編譯器位置的提示時(shí)要選n,然后手動(dòng)指定MicrosoftVisualStudio文件夾所在位置,選擇安裝VC++6.0編譯器。(3)創(chuàng)建COM組件工程在命令窗口中輸入comtool,出現(xiàn)com組件builder。選擇FILE
NewProject選項(xiàng)。Componentname選項(xiàng)中輸入組件名稱:test(*組件名不能與m文件重名)(4)添加m文件(5)生成動(dòng)態(tài)鏈接庫(kù)單擊build
ComObject在創(chuàng)建的COM工程下會(huì)生成相關(guān)的組件。4、VB中調(diào)用動(dòng)態(tài)鏈接庫(kù)(1)注冊(cè)動(dòng)態(tài)鏈接庫(kù)將生成的COM組件復(fù)制到其他位置,運(yùn)行distrib文件夾中的_install.bat文件注冊(cè)動(dòng)態(tài)鏈接庫(kù)。(2)創(chuàng)建VB工程引入COM組件。選擇Project
Reference選項(xiàng),將test_com_1.0TypeLibrary選中
編寫VB程序代碼DimMatlabAstestCOM.testCOMclassPrivateSubForm_Load()SetMatlab=NewtestCOM.testCOMclassEndSubPrivateSubCommand1_Click()
CallMatlab.plotcurPicture1.Picture=Clipboard.GetData()EndSubPrivateSubCommand2_Click()Picture1=NothingEndSub5、應(yīng)用程序發(fā)布(1)COM組件打包在本地使用的話,MATLAB會(huì)自動(dòng)注冊(cè)COM組件,無(wú)需發(fā)布;但如果要在沒(méi)有安裝MATLAB的計(jì)算機(jī)上使用,安裝包就需添加MATLAB運(yùn)行庫(kù)MCR。打開(kāi)創(chuàng)建的COM工程,點(diǎn)擊Component
PackageComponent選項(xiàng),選中IncludeMCR,點(diǎn)擊create。(2)VB程序發(fā)布filemakeproject1.exeAdd-Ins
Add-InManager,點(diǎn)擊PackageanddeploymentWizard,并選中Loaded/unloadedAdd-Ins
PackageanddeploymentWizard,按提示進(jìn)行操作,直至打包發(fā)布完成。*打開(kāi)生成的安裝包中的setup.Lst文件,[BootstrapFiles]字段里面只保留VB6STKIT.DLL和msvbvm60.dll幾個(gè)文件,其余的都刪掉,否則在不同版本的系統(tǒng)上使用可能會(huì)報(bào)錯(cuò)。6、應(yīng)用程序安裝(1)安裝VB應(yīng)用程序。在要安裝的計(jì)算機(jī)上,新建一個(gè)文件夾作為應(yīng)用程序的安裝目錄。將打包好的VB程序中的壓縮包(.CAB)解壓到安裝目錄中再進(jìn)行安裝。(2)安裝Matlab控件。運(yùn)行COM組件包中的distrib文件夾下的類名.exe文件,運(yùn)行過(guò)程中全部按“y”覆蓋原文件。將安裝目錄指向VB應(yīng)用程序安裝所在的目錄(即VB應(yīng)用程序與Matlab控件安裝在同一個(gè)目錄下),否則dll文件是沒(méi)有辦法注冊(cè)的,選擇后,全部點(diǎn)擊Next,至MatlabComponentRuntime安裝完成,DOS安裝界面也會(huì)隨后自動(dòng)關(guān)閉。MATLAB7.1及以前版本生成COM組件的命令是comtool,從R2006a(7.2)開(kāi)始換成了deploytool。2013b版和2014a版利用deploytool生成COM組件時(shí)都會(huì)出現(xiàn)如下圖所示的錯(cuò)誤:實(shí)現(xiàn)步驟(二)Matlab2013a版MatlAB2013a版生成COM組件的方法步驟:1、同MATLAB7.1版安裝路徑不能有空格或中文,編寫m函數(shù)文件,選擇C/C++編譯器2、在命令窗口運(yùn)行deploytool。輸入project名稱,Type選項(xiàng)選擇GenericCOMComponent。3、為COM組件添加類及類的輸出函數(shù),然后點(diǎn)擊編譯。編譯編譯過(guò)程4、生成自解壓安裝包在本地使用的話,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源儲(chǔ)能設(shè)施建設(shè)與租賃合同4篇
- 2025年度新能源汽車充電樁電工安裝與運(yùn)營(yíng)合同4篇
- 2025年度數(shù)據(jù)中心建設(shè)承包技師服務(wù)協(xié)議3篇
- 2025年度油氣儲(chǔ)罐環(huán)保改造項(xiàng)目合同范本4篇
- 2024版聯(lián)合開(kāi)發(fā)合同(新能源技術(shù))
- 2025年版產(chǎn)業(yè)園區(qū)招商引資代理服務(wù)合同6篇
- 2025年度快遞收派服務(wù)外包管理合同4篇
- 2025年度個(gè)人房地產(chǎn)投資融資委托服務(wù)協(xié)議4篇
- 2025年度行政效能監(jiān)察合作協(xié)議書(shū)2篇
- 2025年榆林神木精益化工有限公司招聘筆試參考題庫(kù)含答案解析
- 常見(jiàn)老年慢性病防治與護(hù)理課件整理
- 履約情況證明(共6篇)
- 云南省迪慶藏族自治州各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 設(shè)備機(jī)房出入登記表
- 六年級(jí)語(yǔ)文-文言文閱讀訓(xùn)練題50篇-含答案
- 醫(yī)用冰箱溫度登記表
- 零售學(xué)(第二版)第01章零售導(dǎo)論
- 大學(xué)植物生理學(xué)經(jīng)典05植物光合作用
- 口袋妖怪白金光圖文攻略2周目
- 光伏發(fā)電站集中監(jiān)控系統(tǒng)通信及數(shù)據(jù)標(biāo)準(zhǔn)
- 三年級(jí)下冊(cè)生字組詞(帶拼音)
評(píng)論
0/150
提交評(píng)論