正文

VB与MATLAB通信实现方案二:COM 组件2007-07-20 22:53:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/emath/27672.html

分享到:



            VBMATLAB通信实现方案二

 

前言:MATLABVB接口,有使用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

阅读(6266) | 评论(6)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册