你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
基于COM组件的VB与MATLAB接口编程
 

摘 要:针对VBMATLAB接口编程问题,本文提出一种基于COM组件的VBMATLAB接口编程方法 。并以具体的例子给出了这种方法的应用过程,实现了VB可视化界面和MATLAB信号分析及图形显示。

关键词:COM组件,VBMATLAB,接口编程

1引言

MATLABMathworks公司开发的科学计算环境,具有强大的计算绘图能力,并提供了大量的函数库,几乎涵盖了所有的工程计算领域,被誉为演算纸式的工程计算工具 。但它的缺点是界面开发能力差,代码运行效率低。Visual BasicMicrosoft公司推出的一款面向对象的应用程序开发工具。它界面友好,易学易用,执行代码效率相对较快,很适合快速原型开发。

结合MATLABVB的特点可以开发一些中小型的专业软件。比如在工业生产线上的监视系统,实现对传感器信号的实时采集和分析。为了解决这样的问题,就可以以VB作为主体程序,以MATLAB作为运算模块和绘图模块进行应用程序开发。现在的问题是如何解决VBMATLAB的接口编程。

2 VBMATLAB接口编程方法

VBMATLAB接口编程的方法已有很多。(1)ActiveX技术即Automation Server技术。VB下通过ActiveX自动化接口可将Matlab作为Visual Basic语言的一个ActiveX部件调用。但这种方法最大的缺点是不能脱离MATLAB工作环境。(2动态数据交换(DDE)技术。DDE(Dynamic Data Exchange)允许Microsoft Windows应用程序通过交换数据实现彼此间的通信。因此将MATLAB作为服务器端,VB作为客户端进行数据交换实现接口编程。同样这种方法也不能脱离MATLAB工作环境。(3可执行文件技术。也就是将MATLAB运算模块做成可执行文件形式,然后在VB中进行调用。但这种方法需要单独开发可执行文件。(4)利用MatrixVBMatrixVBMathWorks针对VB提供的一个Matlab库,它提供了许多函数,包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等.MatrixVB虽然能很容易实现VBMATLAB接口编程,但需要额外安装MatrixVB,而且函数有限 5COM组件技术。它是利用MATLAB的一个工具MATLAB COM BuilderM函数文件转换成COM组件,然后在VB集成开发环境中直接调用该组件。生成的COM组件是进程内组件,是以DLL的形式存在的。

3基于COM组件的VBMATLAB接口编程的实现

3.1 系统要求

使用这种方法对系统的要求:(1MATLAB 6.5;(2MATLAB Compiler 3.0;(3MATLAB COM Builder 1.0 ;(4Microsoft Visual Basic 6.0(5) Microsoft Visual C++ 6.0

3.2接口编程实现步骤

(1)       以函数的形式编写M文件。

(2)       MATALB工作环境中执行comtool,进入MATLAB COM Builder界面。

(3)       新建一个工程,填写各项文本框。

(4)       载入M文件,编译即生成M文件所对应的COM组件。

(5)       VB编程环境中载入COM组件,并调用接口函数即可实现功能。

3.3 接口函数

1)接口函数以M文件名为函数名。

2)接口函数的第一个参数表示用于输出的参数的个数。

3)在接口函数的参数中,作为输入的参数必须是doulbe类型。而作为输出的参数必须是variant类型。

3.4 COM组件注册

由于COM组件和客户程序之间的作用是建立在客户/服务器模型之上,在使用COM组件时客户程序必须通过系统注册表信息才能找到COM组件的位置,以及COM组件的相关信息,所以在使用COM组件之前必须将COM组件在系统进行注册。其实在MATLAB COM Builder生成COM组件时已经在系统的注册表中进行了注册,但是如果将客户程序放到其他的系统中进行运行的话,就必须对COM组件在该系统中进行注册了。

利用Windows操作系统自带的regsrv32.exe就能很方便的对COM组件进行注册。只要在“开始-〉运行”的文本框中输入regsrv32 [Path]\dllName即可注册成功,例如F:\Seting.dll。注册成功后,客户程序就能使用了。否则将出现Active 控件不能创建对象的错误。

4应用举例

从磁盘中读取传感器采集到的数据。设计MATLAB程序,从数据中提取特征值,并对数据作功率谱图。然后设计VB程序,将特征值和功率谱图在界面中显示。

4.1设计MATLAB程序

function [piantai,qiaodu]=ComBld(data)

N=length(data);

piantai=skewness(data);   %计算偏态指标

qiaodu=kurtosis(data);    %计算峭度指标

m = fft(data);            %对数据作FFT变换

Pxx = abs(m).^2/N;        %对数据作功率谱

figure(1);

set(gcf,'Visible','off'); %figure(1)对象为不可见

plot(Pxx);                %画功率谱图

print -dmeta;             %对图形硬拷贝

close(gcf);               %关闭figure(1)对象

4.2设计COM组件

MATLAB提示行中输入comtool,出现MATLAB COM Builder界面,如图1所示。新建一个工程,出现New Project Settings对话框如图2所示。输入组件名Setting,同样加入类

Setting,并在编译选项中选择使用图形库句柄(Use Handler Graphics Library)。这样设置完成后,单击OK返回主界面。然后激活左栏的M-files文件夹,单击Add File载入ComBld.m文件。最后单击Build,编译ComBld.m生成COM组件。


                       

 

   1 MATLAB COM Builder界面                      2 New Project Settings对话框

 

4.3设计VB主程序

1)  载入COM组件。在VB集成开发环境中选择Project->References菜单项。弹出References对话框后选择Setting组件如图3所示。

2)  在通用声明栏中声明一个Setting组件:Private theMatlab As Seting.Seting

3)  Form_Load()模块中为theMatlab指定一个Seting组件:Set theMatlab = New Seting.Seting,并读取文件数据。

4)  cmdTest_Click()模块中调用接口函数:Call theMatlab.combld(2, vntPt, vntQd, dblData),并从剪切板中获取图形:imgPxx.Picture = Clipboard.GetData()

5)  编译,执行。程序主界面如图4所示。

 

         3 References对话框                                   4 主界面

5结束语

本文讨论了基于COM组件的VBMATLAB接口编程的方法。通过应用实践证明,借助 VBMATLAB的接口编程,实现了信号的正确、快速分析和图形显示,而且比起M文件来代码的执行效率大大提高。该方法的主要特点有:

(1) 应用程序完全脱离了MATLAB工作环境。

(2) MATLAB数学库和工具箱中包含的各种各样的函数,所以降低了编写算法的难度。

(3) 由于将算法程序做成了COM组件的形式,所以实现了算法的保密。

参考文献:

[1] MATLAB Compiler Suite Documentation.Mathworks.2003

[2] 朱志松 郭晓丽 朱小松. VBMATLAB接口编程探讨. 电子技术应用.2003(12)

[3] 徐静.MATLABVB集成.计算机世界.2001(12)

 

 

 

 

                                   (作者:黄锡泉 )

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089