VB与MATLAB通信实现方案二
前言:MATLAB与VB接口,有使用DLL, DDE ,OLE ,ActiveX ,COM 组件等多种方法.
本文介绍的方法:
使用MATLAB中的COM生成器(comtool),将M文件生成DLL,于VB中引用.从MATLAB6.5开始,MATLAB提供了COM生成器,使用该生成器,可以将MATLAB函数和自定义的函数打包成组件,然后集成到支持该技术的应用程序中去.使用该技术,可以很大程度上脱离MATLAB环境.
做个简单的例子吧!
1.建立M文件Test.M
function s=test()
global a b %值得注意的地方
s=a+b;
return
(Matlab6.5)中测试:
>> clear
>> global a b
>> a=1;b=2;
>> test
ans =
3
2.使用Matlab 之comtool将其编译为testdll.dll包含类名为 testdll
>>comtool
MATLAB COM Builder-->File-->New...
注意写类名:class name
添加要编译的M文件: 点击Add File
编译DLL:点击Build
Matlab 中测试DLL:
>> h=actxserver('testdll.testdll')
3.建立VB工程,工程-->引用-->浏览,找到testdll.dll并添加
程序代码:
Option Explicit
Dim mydll As New testdll.testdll
Dim bval As Double
Dim aval As Double
Private Sub Form_Load()
Set mydll = New TestDll.TestDll
End Sub
Private Sub Command1_Click()
Dim varRes As Variant '要注意的地方
aval = 3
bval = 2
mydll.a = aval
mydll.b = bval
Call mydll.test(1, varRes)
Text1.Text = Str(varRes)
End Sub
补充说明:
1.M文件的形式值得注意;
2.编译时要求有VC或其他C/C++编译环境;
3.引用DLL要注意一些问题;
4.VB中取返回值:
Dim varRes As Variant
Call mydll.test(1, varRes)
Text1.Text = Str(varRes)
5.本文例子较简单,意在说明问题,复杂的留给读者发挥吧!
该方法可以使程序很大程度上脱离MATLAB环境运行!
编译DLL还有其他方法,但用到的原理是一样的,不妨一试试!
有问题联系!
Edited by Guassfans 2007-07-20
评论