《VB与Matlab混合编程的研究.pdf》由会员分享,可在线阅读,更多相关《VB与Matlab混合编程的研究.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第 2 5卷 第 1期 北京工 商大学学 报(自然科学版)V。l,2 5 N。1 3 8 2 0 0 7年 1月 J o u r n a l o f B e i j i n g T e c h n o l o g y a n d B u s i n e s s u n i v e r s i t y(N a t u r a l S c i e n c e E d it i o n)J a n 2 0 0 7 文章编号:1 6 7 1 1 5 1 3(2 0 0 7)0 1 0 0 3 8 0 4 V B与 Ma t l a b混合编程的研究 梁新成,黄志刚,朱 慧 (北京工商大学 机械 自动
2、化学院,北京 1 0 0 0 3 7)摘 要:较 系统地总结 了VB与 Ma t l a b 调用的原理和方法,给 出了一些实例,通过这些方法,可使 VB的可视化界 面和 Ma t l a b强大的计算及绘图功能得以实现,从而提 高编程的效率,缩短软件开发 的周期,关键词:Ma t l a b;VB;A c t i v e X;D D E;无缝链接 中图分类号:T P 3 1 文献标识码:A Vi s u a l B a s i c(以下简称 VB)语言是 Mi c r o s o f t 公 司开发的新一代面向对象的编程工具 它既是一种 编程语言,同时也是一个强大的集成开发环境,利用 它可以
3、编 写出具 有各种风格且界面友 好的软件产 品 它继承了 B a s i c简单、易用的特点,并具有可视 化、面向对象、部件技术、事件驱动等一系列特性,成 为 Wi n d o w s环境 下最快捷、便利和通 用 的开发工 具 作为可视 化编程 的先驱和典范,其所展现的可 视化风格,已经成为诸多可 视化集成开发工具 的参 考标准 Ma t l a b是 Ma t h Wo r k s 公 司在 2 0世 纪 8 0 年代开发的科学计算软件,经过不断地完善和发展,目前 Ma t l a b已经成为涉及多学科、多领域的计算和 分析平台Ma t l a b编程代码很接近数学推导格式,简洁直观,符合人
4、们的思维 习惯,所 以编 程非常方 便 由于 VB提供的计算和 绘 图函数 有限,Ma t l a b 创建图形用户界面的能力相对较弱,因此用 VB编 写界面,用 Ma t l a b作为后台运行程序,使两者相 得 益彰 1 V B和 Ma t l a b混合编程 的方法和 算例 由于 Ma t l a b本身只提供 了 F o r t r a n、C语 言的 接 口程序,所 以无 法直接 实现 V B对 Ma t l a b的调 用 故 Ma t l a b与 V B混合编程中需要解决的关键是 如何实现在 VB中调用 Ma t l a b Ma t l a b与 VB混合 编程的方法主要有下
5、面 4种 1 1 A c t i v e X技术 A c t i v e X技 术 是 以组 件 对 象 模 型(c o mp o n e n t o b j e c t mo d e l,C OM)技术为基础的一种应用程序开 发技术和体系结构的总称,它是 Mi c r o s o f t 公司提供 的一种用于模块集成的新协议,它允许应用程序或 组件控制另一个应用程序或组件的运行Ma t l a b 5 0以上的版本均 支持 A c t i v e X的嵌入,因为 VB支 持 Ac t i v e x 自动化控制端协议,Ma t l a b支持 A c t i v e X 自动化服务器端协议,
6、所 以 V B和 Ma t l a b的通信 有两种:一种是 自动化服务器,另一种是 自动化控制 器本文 重点 探讨 V B如 何通过 A c t i v e X接 口将 Ma t l a b作为 VB的一个 A c t i v e X部件,实现数值计 算和图形显示要实现这种功能,用户首先必须获 得 Ma t l a b Ac t i v e X对象在系统注册表 中定义的名字 一Ma t l a b Ap p l i c a t i o n 在所编写的程序中必须有如 下的代码:D i m Ma t l a b a s Ob j e c t S e t S e t Ma t l a b=Cr e
7、 a t e Ob j e c t f“Ma t l a b Ap p l i c a t i o n”),Ma t l a b Ap p l i c a t i o n对象主要有 3个函数,具 体如下:1)F u n c t i o n Ex e c u t e(C o mma n d a s S t r i n g)a s St r i n g V B可 执 行 一 条 由 C o mma n d字 符 串决 定 的 Ma t l a b指令或在 Ma t l a b的工作空间调用 M 函数文 件,在屏幕上显示图形或计算结果 2)S u b Ge t F u l l Ma t r i x(
8、Ma t r Na me a s S t r i n g,Wo r k s p a c e a s S t r i n g,Va r Re a l()a s Do u b l e,Va r 一 收稿 日期:2 0 0 61 1 0 1 作者简介:梁新成(1 9 7 8 一),男,陕西华县人,硕士研究生,研 究方 向为机械制造及 自动化;黄 志刚(1 9 6 6 一),男,上海 人,副教授,博士,主要从事车辆工 程、农 产品加工及贮藏工程的研究 维普资讯 http:/ 第 2 5卷 第 1期 梁新成等:V B与 Ma t l a b 混 合编程 的研 究 3 9 I ma g()a s Do u
9、 b l e)通过 Ge t F u l l Ma t r i x方法,VB从 指定的 Ma t l a b 工作空间中获取指定变量名的矩阵数据 3)S u b Pu t Fu l l Ma t r i x(Ma t r Na me a s S t r i n g,Wo r k s p a c e a s S t r i n g,V a r R e a l()a s D o u b l e,V a r I ma g()a s Do u b l e)VB可以将指定变量名的矩阵数据保存到 Ma t l a b的工作空间中去 下面的简单例子通过 Ac t i v e X技术实现 VB对 Ma t a
10、 l b的调用在 V B下创建工 程,给窗体加上两 个控件 一个控件是 t e x t l,将其属性中的 t e x t 项设 置为空;另一个控 件是 c o mma n d l,将其属性的 c a p t i o n项设置为 r e s u l t 程序的代码如下:P r i v a t e S u b C o mma n d l C l i c k()Di m r e s u l t a s S t r i ng Di m Ma t l a b a s Ob j e c t S e t Ma t l a b=Cr e a t e Ob j e c t(“Ma t l a b Ap p l
11、i c a t i o n”)Re s u l t=Ma t l a b e x e c u t e(t e x t 1 Te x t)En d 运行后,在 t e x t l中输入如下代码:X,Y =me s h g r i d(一3:1 2 5:3);z=p e a k s(X,Y);me s h c(X,Y,z);gr i d o n;程序的运行结果见图 1 图 1 Ac t i v e X 方 式 运 行 结 果 1 2 D D E动态数据交换 Ma t l a b 从 V 4 X开始 支持 DD E(d y n a mi c d a t a e x c h a n g e),最典型的
12、是 L a b VI E W 对 D DE的使用 但从 v5 X以后,Ma t l a b 对 DD E的支持就没有再更 新D D E的功能没有 Ac t i v e X强大,但它比 Ac t i v e X 易于实现 它随着 Wi n d o ws的应用而发展起来,是 在 Wi n d o ws 环境下支持客户服务器计算模式 的重 要技术之一因为 V B支持 D D E客户端功能,Ma t I a b提供 D D E服务器功能,所以通过 D D E方式可以 实现 VB程序对 Ma t l a b的调用D D E功能函数可 以由应用程序提供,也可 以由 Ma t l a b引擎库提供 VB应
13、用程序首先通过确定服务器名和主题,唯一 地确定会话在会话期 间 V B应 用程序 为客户端,Ma t l a b为服务器端 两者会话的示意如图 2 Ma t l a b 客户端应川程序 J D D E I I D D E I I 服 务 器 模 块I I 数 J J 2 DDE通 信 机 理 示 意 D D E方式基于 Wi n d o w s的消息机制 D D E服 务器是一个维护其它 Wi n d o w s程序可能使用数据 的程序,D D E客户则是从服务器获得数据 的程序 DD E对话 由客户程序发 起,客 户程序将一条 称 为 wMD D E I NI TI AT E的消息发给 当前
14、运行的所 有 Wi n d o ws 程序,这条消息指 出客户程序所需要的 数据类别,拥有这些数据的 D D E服务器可以响应消 息并开始会话 D D E只是一种通信方式,它不会 启动 Ma t l a b 软件,所以 D D E方式运行时 Ma t l a b必 须打开,否则程序无法运行 下例将实现 D D E通 信方式在 vB下建立工 程,然后添加两个 T e x t B o x控件,3个 L a b e l 控件,一 个 C o mma n d控件,一个 I ma g e 控件输入如下的代 码,然后编译成 E X E文件后即可 此编译文件提供 了 Ma t l a b的运行环境,在指令输
15、 入区可输 入任何 Ma t l a b指令 引 程序代码如下:Pr i v a t e S u b C o mma n d l Cl i c k()Te x t l n pu t Li n kM o d e:v b I i n k No n e Te x t l n p u t L i n k To p i c=“MATL AB l En g i n e”Te xt l n p u t Li n khe m=“En g Ev a l St r i n g Te xt l np u t Li nk M o d e=v bI i n kM a n u a l s t r i n g=Te xt
16、l np u t Te xt Te x t l n pu t Li n kExe c ut e s t r i n g Te x t l n p ut Li n kM o d e=v b Li nk No n e Fi g Te x t Li n kM o d e=v b Li n kNo n e F i g Te x t L i n k To p i c=“MATI AB l En g i n e”Fi g Te xt Li n khe m=“En gFi gu r e Re s u I t”Fi g Te x t Li nkMo d e:vb Li nk M a n u a I Fi g
17、Te x t Li nk Re q u e s t I f(F i g Te x t Te x t=“y e s”)Th e n I ma g e 1 P i c t u r e=Cl i p b o a r d Ge t Da t a()El s e I ma g e 1 Pi c t ur e=Lo a d Pi c t u r e 维普资讯 http:/ 北京工商大学学报(自然科学版)2 0 0 7年 1月 End I f Te x t Ou t p ut I i n kM o d e=v b I i nk No n e Te x t Ou t p u t Li n k To p i c
18、=“MATL AB f En g i n e”Te xt Ou t p u t Li nkhe m=“En g St r i n g Re s u l t”Te xt Out pu t Li n kM o d e=v b I i n kM a nu a l Te x t Out p ut I i n k Re q u e s t Te x t Ou t p u t Li nk M o de=v bl i nk Non e En d S u b 程序运行结果见图 3 指令输 区 d o se|ll t=3 p i,儿 玎 3 y=s i“)on一匠 i ld l i+曹 数 据I 赢出区 图 3
19、 DDE方 式 运 行 结 果 1 3 Ma t r i x V B插件 Ma t r i x VB可实现 Ma t l a b与 V B的无缝链 接 所谓无缝链接就是应用程序实现其功能时完全脱离 Ma t l a b的工作环境它主要是利用 Ma t l a b A d d i n 把 Ma t l a b函数做成动态链接库形式,然后 由 VB调 用来实现动态链接库 的生成、调用和调试是这种 方 法 的关键 Ma t r i x VB是 Ma t h Wo r k s公 司 为 VB开 发 的 插 件,它包含了 6 0 0多条 Ma t l a b的基本 函数,插件增 强了 VB绘图和计算的函
20、数集合它包括基本的数 学运算和功能强大 的信号处理、线性代数、串运算及 图形图像处理功能等,用来 补充 VB本身 内建函数 和图形处理的不 足为了 防止计算 机在识别 Ma t r i x VB和 VB的运算符时发生冲突,Ma t r i x V B在定 义运算符时做了一些变化 V B与 Ma t r i x VB中的运 算符号区别如表 1 _ 4 J:表 1 V B与 Ma t r i x V B的运算符号 安装 Ma t r i x VB后,打开 VB,点击工程一引用,然后选 中 MMa t r i x后就 可以在 V B中使用此插件 下面的程序通过 Ma t r i x VB实现 V B
21、对 Ma t l a b的调 用 程序的运行代码如下:Pr i v a t e s u b F o r mL o a d()a x=v b a x e s(p i c t u r e 1 h Wn d)p l o t(r a n d n(2 5 6,4)En d 程序运行结果如图 4 图 4 Ma t r i x V B方式运行结果 1 4 动态链接库 从 Ma t l a b 6 5开始【引,Ma rl a b提供 了 C OM 编 译器它是 Ma t l a b编译器的扩展,能够把一个和多 个 M 文件转换、编译成 C O M 组件 因为 Ma rl a b编 译产生的 C OM 对象都是
22、 DI I 文件,而 VB可以直 接调用 D I I ,所以应用 D I I 可实现 V B对 Ma t l a b 的调用 具体步骤:在计箅机装有 VC+或 C的前提 下,在 Ma t l a b的命令窗 口运行 c o mt o o l 指令选择 新建工程一给工程加入 M 文件或 ME X文件一编 译;之后再在 VB下新建工程一 添加所生成的动态 库一添加控件一给相关控件输 入代码一运行即可 M 文件必须以 f u n c t i o n关键字开头,不能是脚本文 件,更详细的内容请参阅文献 6 2 几种方法的比较 利用 Ac t i v e X进 行 V B和 Ma t l a b的交互通
23、信 时,所采用的 Ma t l a b语句是 直接使用 Ma t l a b提供 的函数和图形库命令该方法编程效率高,但程序 的执行 必须在 Ma t l a b环境 下,这样会占用内存,使 程序的执行速度受一定影响 D DE方式运 行时,必 须打开 Ma t l a b的命令窗 口程序编码 简单,但 占用 系统资源多,效率低下,功能相对较弱 与 A c t i v e X的区别是,D D E必须预先 打开 Ma t l a b,而 A c t i v e X可 自动打开 Ma t l a b软件 Ma t r i x VB把与 Ma t l a b相似 的语法和 函数嵌入 到 VB中,这种方
24、法 比较 简单,编程的效率高但 由 于仍采用解释执行的方式,因此执行的效率低,难以 维普资讯 http:/ 第 2 5卷 第 1 期 梁新 成等:V B Ma t l a b混合编程的研究 4 1 进行实时处理 与 Ma t l a b相比,Ma t r i VB包 含的函 数少,没有 Ma t l a b的功能强大 把 Ma t l a b文件 编译 成 V B可 以执行 的 d l l 文 件,执行的效率高,但当 M 文件一旦编译成功之后,其功能就不能变化,所编程序的数据交换能 力弱 总之,以上各种方法 皆有利弊,应根据实际情况 进行选择,才能更好地发挥两者功能 3 结束语 通过对 Ma
25、t l a b和 VB的混 合编程,可 以将 V B 开发的界面与 Ma t l a b 强大的汁箅和显示功能融为一 个整体,使开发的程序周期缩短,编程效率得以提高 参考 文献 1 谭 炎,张凌燕 Ma t l a b与 vB混 合编程研究 J 微计钟 机信息(管控 一体化),2 0 0 6,2 2(5 3):2 4 8 2 4 9 高 剑 Ma t l a b与 V B混 合 编 程 方 法 J 微 机 发 展,2 0 0 3,1 3(3):9 19 2 张 志涌 精通 MA TI A B 6 5 M 北 京:北京 航卒航天 出版社 2 0 0 3 T h e Ma t h Wo r k s
26、 I n c Ma t r i x V B Gu i d e z Th e Ma t h W o r k s I nc,20 00 董维 国深入浅 出 MAT I A B 7 x混 合编程 M 北 京:机械工、IL 出版社 2 0 0 6 李俐玲 V B与 Ma t l a b相结 合混 合编程 的研 究 J 绵 阳师范学院学报,2 0 0 4,2 3(5):2 6 2 8 RES EARCH oF M I XI NG PRoGRAM oF VB AND M ATLAB LI ANG Xi n c he n g,HUANG Zhi g a n g,(Co l l e g e o f Me c
27、h a n i c a l En g i n e e r i n g a n d Au t o ma t i o n,a n d Bu s i n e s s Un i v e r s i t y,Be i j i n g 1 0 0 0 3 7,B e ff i n g Te c h n o l o g y Ch i n a)Ab s t r a c t:Th i s p a p e r d e s c r i b e d g e n e r a l l y me t h o d s a n d p r i n c i p l e o f VB h o w t o t r a n s f e
28、 r Ma t l a b Thr o u gh t he ga v e d e x a m p l e s,we c a n t ur n t h e v i s u a l i nt e r f a c e a n d t h e po we r f u l f u nc t i o n o f M a t l a b S c a l c ul a t i ng a nd p l o t i n g i n t o r e a l i t yTha t wo u l d e nh a n c e t h e e f f i c i e n c y o f pr o g r a mm i n
29、 g,a nd s h o r t e n t he p e r i od o f e m p ol d e r i ng s o f t wa r e Ke y wor d s:M a t l a b;VB;Ac t i v e X;DDE;l ank wi t h n o s l ot (责任编辑:檀彩莲)(上接 第 3 1页)DES I GN oF S M ALL NETW oRK oF I NTELLI GENT NoDE oN CANBUS XI NG I Aa n g,ZHANG Li,M ENG Chu n l i n g (Co l l e g e o f Me c h a n
30、 i c a l En g i n e e r i n g a n d Au t o ma t i o n,B e ij i n g T e c h n o l o g y a n d Bu s i n e s s Un i v e r s i t y,Be Oi n g 1 0 0 0 3 7,C h i n a)Ab s t r a c t:CANb t t s i s o n e ki n d o f Lo c a l Bu s Te c hn o l o gy a nd ma i n l y u s e d i n Da t a l ank La y e r a n d Ph y s
31、i c a l La y e r,b u t t he pr o t o c o l o f a p p l i c a t i o n l a y e r mu s t b e a d d e d t o r e a l i z e t h e ma t e r i a l f u nc t i o n De v i c e NET a n d CANo p e n a r e mo s t wi d e l y i n p r o t o c o l s o f a pp l i c a t i o n l a y e r,b u t t he s e p r o t o c o l s
32、a r e v e r y c o mp l i c a t e d a n d mo r e f i t f o r l a r g e n o d e n e t Th e t e c hn i c a l s p e c i f i c a t i on a n d t r a i t of CAN b u s i s s i mp l y i nt r o d u c e d i n t hi s p a p e r,a n d i t ma ke s 3 ki n d o f d e s i g n f o r p r o t o c ol o f a p pl i c a t i o n l a y e r i n s ma l l CAN b 1,l S n e t Ke y wo r d s:CANb u s;p r o t o c o l o f a pp l i c a t i o n l a y e r;n o de (责任编辑:檀彩莲)维普资讯 http:/