首页 【三种方法】LabVIEW与Matlab的无缝集成

【三种方法】LabVIEW与Matlab的无缝集成

举报
开通vip

【三种方法】LabVIEW与Matlab的无缝集成   收稿日期 : 2005 - 07 - 01;修订日期 : 2005 - 09 - 07   基金项目 :国家自然科学基金重大、面上资助项目 (50390063; 50305019) ;上海市科委国际合作项目 (045007027)   作者简介 :王禹林 (1981 - ) ,男 ,江苏南京人 ,博士研究生 ,主要研究方向 :虚拟仪器、先进电子制造、机器视觉 ;  熊振华 (1974 - ) ,男 ,江西南昌 人 ,副教授 ,主要研究方向 :先进电子制造、计算机集成优化 ;  丁汉 (1963 - ) ,男 ...

【三种方法】LabVIEW与Matlab的无缝集成
  收稿日期 : 2005 - 07 - 01;修订日期 : 2005 - 09 - 07   基金项目 :国家自然科学基金重大、面上资助项目 (50390063; 50305019) ;上海市科委国际合作项目 (045007027)   作者简介 :王禹林 (1981 - ) ,男 ,江苏南京人 ,博士研究生 ,主要研究方向 :虚拟仪器、先进电子制造、机器视觉 ;  熊振华 (1974 - ) ,男 ,江西南昌 人 ,副教授 ,主要研究方向 :先进电子制造、计算机集成优化 ;  丁汉 (1963 - ) ,男 ,安徽安庆人 ,教授 ,主要研究方向 :先进电子制造、机器人学. 文章编号 : 1001 - 9081 (2006) 03 - 0695 - 04 LabV IEW与 Matlab的无缝集成 王禹林 ,熊振华 ,丁  汉 (上海交通大学 机械与动力工程学院 ,上海 200030) (wyl_sjtu@ sjtu. edu. cn) 摘  要 :结合实例详细介绍了 LabV IEW与 Matlab无缝集成的三种常用方法 ,即 COM组件法、中 间文件传递参数法和VC + +参数类型转化法。利用这些方法可将两种软件取长补短 ,且便于软件的 发布。 关键词 : LabV IEW ; Matlab; COM; DLL; 接口技术 ; 无缝集成 中图分类号 : TP311  文献标识码 : A Seam less in tegra tion between LabV IEW and M a tlab WANG Yu2lin, X IONG Zhen2hua, D ING Han (School of M echan ica l Eng ineering, Shangha i J iaotong U niversity, Shangha i 200030, Ch ina) Abstract: Three methods were introduced with a typ ical examp le to show how to integrate LabV IEW and Matlab seam lessly, which were COM object method, transm itting parameter method with temporary file and the method of encap sulating the well developed algorithm to the dynam ic link library (DLL ) and transform ing the parameter type through using VC + +. These methods helped to release the software easily. Key words: LabV IEW ; Matlab; COM; DLL; interface technology; seam less integration 0 引言 在工程领域中 , LabV IEW和 Matlab是倍受程序开发人员 青睐的两种语言。LabV IEW 对于一些需要进行大量数据运 算处理的复杂应用以及某些复杂的控制算法显得有些力不从 心。而 Matlab不能实现端口操作和实时控制 ,在界面方面也 稍逊一筹。在实际工程应用中将二者结合起来取长补短 ,具 有非常实用的价值。 LabV IEW 已提供了 Matlab Scrip t节点来调用 Matlab语言 开发的算法 ,这实际上就是通过 ActiveX控件与 Matlab Server 进行通信。用该方法实现它们的混合编程简单实用 ,但是不 能脱离 Matlab的环境 ,而只是将它在后台执行 ,因此十分不 利于独立应用程序的开发 ,为了实现 LabV IEW和 Matlab的无 缝集成 ,本文以“基于蒙特卡洛法模拟求解可靠度 ”为例详细 介绍了如下三种方法 ,即 COM组件法、中间文件传递法 ,以及 VC + +参数类型转化法。其中文献 [ 1 ]已介绍了 COM 组件 法 ,本文将对这种方法进行深入探讨和补充 ,并与另两种方法 进行比较。 (上述各方法所用的编程环境为 Matlab 6. 5, LabV IEW 7. 1, VC + + 6. 0) 1 无缝集成的三种方法 不管使用上述哪种方法 ,均要先进行 Matlab编译环境的 设置。因为无论是用 Matlab COM Builder把 M 文件编译成 COM组件 ,还是用 Matlab Comp lier把 M文件编译成 DLL文 件 ,都需借助外部的编译器。要设置外部编译器 ,可在 Matlab 中调用 mbuild 2setup和 mex 2setup命令。这里选择 M icrosoft V isual Studio 6. 0。 1. 1 COM组件法 LabV IEW 5. 0及以上的版本都提供了对 COM 的支持。 Matlab COM Builder是 Matlab 6. 5新包含的产品 ,帮助用户将用 M语言开发的算法自动快速地转变为独立的 COM组件对象 ,以 供其他支持 COM的编程语言调用 ,实现 Matlab和其他编程语言 的整合。通过 COM组件 ,可以同其他用户共享已经开发的算法 , 并且可以免费地随同 COM应用程序发布 Matlab算法。 设已编写好 myp roject. m函数如下 (已简化 ) : function num =myp roject(x, y, tuhao, i, A, B , C, D) s = norm rnd (A, B, i, 1) ; cdfp lot ( s) ; num = 0; 该函数有 8个输入参数和 1个输出参数 ,参数类型包括 整型和浮点型 ,函数中使用了 Matlab数学库和图形库中的函 数 (如 norm rnd ( )和 cdfp lot( ) ) ,生成了数据量非常大的 (由参 数 i控制 ,比如 10 000)符合某种数学分布的两组随机数组 , 然后对数据进行了分析处理并绘图显示结果 ,具有典型性。 然后即可用 Matlab Builder for COM创建 COM组件。过 程非常简单 ,只需 4个步骤 ,即创建工程、管理 M文件和 MEX 文件、编译生成组件、打包和发布组件 [ 2 ] ,说明如下 : 1) 在 Component name中输入要生成的 COM组件的名字 myp roject。 2) 在 Comp iler Code in里面推荐选择 C,因为 C代码性能 较好 , C + +代码可读性好 ,而最后不需要看中间的代码。 3) 因为要使用 Matlab的图形库 ,所以选中 U se Handle Graphics library。 4) 把 myp roject. m加入要对其进行操作的类中 ,即为该 类添加了一个简单的方法。 第 26卷第 3期 2006年 3月   计算机应用 Computer App lications   Vol. 26 No. 3 Mar. 2006 5) 编译完毕后在 distrib 文件夹中将生成相应的 myp roject_1_0. dll文件并自动注册到系统中。 6) 将 COM组件打包并发布后在 distrib文件夹下生成一 个自解压文件 myp roject. exe,运行它可实现必要的动态链接 库的安装和 COM组件的注册。需要注意的是打包时输入的 文件夹目录不能包含中文 ,否则将注册失败。注册好后亦不 能改变其存放路径或删除 ,否则将找不到注册组件。为了在 没有安装 Matlab的目标机上能够使用 Matlab Comp iler生成 的组件 ,需要一同发布 MCR (Matlab Component Runtime) ,可 通过 MCR Installer. exe进行安装。 7) Matlab7 增强了 Matlab Comp iler模块功能 ,简化了 COM组件的开发过程 , 6. 5版本中的 Matlab COM Builder很 多设置项都不再出现。 接下来需在 LabV IEW中调用上面生成的 COM对象。图 1描述了调用过程 [ 1 ] ,这里仅作以下说明 : 1) 首先必须引用 COM 对象 ,为此在进入循环前调用 “Automation Open”函数生成 Refnum, 按右键点击“Select ActiveX class”的 B rowse,在列表中选择 myp roject 1. 0 Type L ibrary Version 1. 0,这样 myp roject_1 _0. dll的引用就添加到 LabV IEW程序中 ,其对应的图标为 myp roject。同时生成的 Refnum能够传递给模板中的其他相关函数节点 ,实现具体的 COM对象操作。 2) LabV IEW程序中调用 COM对象的 myp roject方法 ,当 方法有输出变量时 ,第 1个变量总是 nargout,它的数据类型为 Long。这个输入参数传递 Matlab nargout参数给编译函数 ,并 且指定要求有多少个输出变量。没有输出变量的方法不传递 nargout变量。这里因为有一个输出变量 num,故给 nargout变 量赋值为 1。 3) 虽然输入参数分别为整型和浮点型 ,而 myp roject中 与其对应的数据类型为变体型 ,数据类型不同 ,但 LabV IEW 会自动将输入数据的类型转换为变体型 ,以满足 COM对象的 输入要求。然而当 COM对象的输出为变体型数据时 ,必须清 楚 COM对象所返回数据的类型 ,如果选择了错误的数据类 型 , LabV IEW将反馈错误信息。通过 Variant to Data节点可 以将变体型数据转换为 LabV IEW能处理和显示的数据类型。 要使用该节点 ,只要连接需要转换的变体型数据 ,并标识转换 后的数据类型即可。由于调用 myp roject_1_0. dll返回的是一 个整型变量 ,所以把整数 1连接到 Variant to Data节点的 Type 输入端口和 myp roject方法的 num参数的输入端口 (这里并不 是赋值 ,而是指定数据类型 )。 4) 当退出循环后用 Close Automation函数关闭 Refnum。 图 1 LabV IEW调用 COM对象程序图   最后的工作就是将 LabV IEW程序以及所调用的 COM组 件打包 ,使其能够脱离 LabV IEW 和 Matlab的环境下运行 [ 3 ] , 这里作以下说明 : 1) 打包时有时需在 App lication Settings标签中选中 Enable ActiveX选项 (比如使用 Matlab Scrip t节点时 ) ,否则执 行程序将没有响应。 2) 运行 LabV IEW 生成的程序时 , 必须确保已安装 LabV IEW runtime engine ( 25M ) ,当用高版本的 LabV IEW 生 成的可执行程序 ,在装有低版本的 LabV IEW 的计算机上运 行 ,也需先安装 LabV IEW runtime engine。 3) 使用 COM组件法时 ,打包时除需包括 vi文件 ,还需包 括前面 Matlab生成的 myp roject. exe文件。 1. 2 基于动态链接库 ( dll)法 W indows中 , dll是一种很特别的可执行文件 ,可以被多 个 W indows应用程序同时访问 ,具有固定的共享数据段 ,因此 可以通过 dll实现 LabV IEW与 Matlab之间的数据传输和函数 调用。简单地说 ,就是利用 Matlab和VC + +生成相应的可以 被 LabV IEW调用的 dll,提供它们之间的基本支撑环境。 把 M文件创建为动态链接库 dll,主要有三种方法 : 1) 使用 MATCOM。它可通过 VC + +或 Borland C + +将 Matlab的源代码译成同等功能的 C + +源代码 ,转换容易 ,并 支持图形函数 ,但对 struct等类的支持有缺陷 ,对 class数据类 型只能部分支持 ,部分 Matlab命令不能够正确编译 ,某些绘 图语句无法实现或不能得到精细图像。 2) 使用 Matlab为 VC + + IDE提供的 Add2in。只要在 VC + +中创建工程时选择 Matlab Project W izard,在接下来的 Step 1中的 V isualMatlab App lication Type选择 Shared M 2DLL 就可以了。接下来添加 3 . m文件进行编译。 3) 使用 Matlab的 mcc命令将 3 . m文件编译为动态链接 库 ( 3 . DLL)。 后两种方法都属于使用 Matlab数学库的方法。这三种 方法都可以完全脱离 Matlab环境 ,但无论是 Matlab数学库还 是 MATCOM ,离开 Matlab环境运行都有一定的局限性 ,有些 功能和函数不能运行 , 比如前面 myp roject. m 中使用的 norm rnd等生成服从某种分布的随机矩阵的命令用 MATCOM 不能被正确编译。又因为 Add2in也是调用 Matlab Comp iler 的命令 mcc进行编译工作的 ,而且有时 Add2in还会出现不能 使用的情况 ,所以下面均采用 mcc命令来编译 dll。 mcc有很多参数和用法可用 ,这里使用命令 mcc 2B csglsharedlib: youlibname function1 funcion2 ⋯来创建所需要的 动态链接库 DLL文件。其中参数 2B表示使用 Bundle Files作 为参数 , csglsharedlib是 2B的参数 ,意思是生成使用 Matlab图 696     计算机应用 2006年 形库的 C共享动态链接库 , youlibname是你想要生成的动态链 接库 DLL的文件名 , function1为你想要加入到动态链接库 DLL 中的函数名 ,如果有多个函数 ,各个函数名用空格隔开。 图 2 利用中间文件传递法的 V I程序图 编译好 dll文件后 ,还存在着数据接口问题。由于 mcc生 成的 dll中的函数所接受的参数是 mxA rray型数据 , 而 MATCOM生成的 dll中的函数所接受的参数是 Mm型数据。 它们都是 C + +类 ,对应于 Matlab中的阵列数据类型 ,不能由 LabV IEW或VC + +等直接调用 ,需要先进行参数类型的转化。 有两种方法 :一种是使用中间文件传递参数法 ,这种方法利用 了中间文件 (比如文本文件 )存放相应的参数 , LabV IEW 或 Matlab直接从中间文件中读取或写入参数。此时编写的 M 文件应为无参数函数。这里还需注意 ,用 mcc编译成 dll文 件 ,相应的函数说明变为 extern L IB _mylib _ C _AP I void m lfMyp roject( ) ;用 Add2in编译成 dll文件 ,相应的函数说明变 为 extern void m lfMyp roject ( void) ;原来的函数名 myp roject变 成了 m lfMyp roject。这两种方法都使其参数接口变为普通的 参数类型。但是用 MATCOM编译成 dll文件 ,相应的函数说 明变为 Mm myp roject( ) ; 可以看到其函数的返回类型仍然是 Mm型数据 ,所以使用中间文件传递参数法时不能使用 Matcom编译成 dll文件。第二种方法是先将 M文件编译为 C + +程序文件 ,然后再用VC + +封装一个 dll,使其参数接口 变为普通的参数类型。因此我们要使用 Matlab 提供的 External Interfaces/AP I函数来创建 mxA rray型数据 [ 2 ]。 为了使最后发布的程序真正地脱离 Matlab环境 ,最后还 需打包一些 Matlab动态链接库。对于 Matlab 6. 5版本 ,将 < Matlab > \extern \ lib \win32 \下的 mglinstaller. exe解压缩 ,在生 成的目录 bin \win32 \下就是程序独立运行所需要的动态链接 库文件。把这些文件拷贝到打包安装的目录中即可。 1. 2. 1 中间文件传递法 实现的方法是 ,用 LabV IEW编写前端用户交互界面 ,并搜集 必要的参数信息 ,保存在一个中间文件 (如 in. txt)中。用 Matlab 语言编写好一个能完成特定任务的没有输入和输出参数的 M函 数 (如 myp roject. m) ,该函数将从 in. txt读取所需的参数信息 ,执 行任务并返回结果到一中间文件 (如 out. txt)中。然后用 Matlab MCC Compiler把此 M函数编译生成 dll,供 LabV IEW调用 ,调用 完后 LabV IEW可从 out. txt中读取结果。 所用到的 M文件为 mytest. m,如下 : function myp roject fidin = fopen (′c: \ in. txt′, ′rt + ′) ; fidout = fopen (′c: \out. txt′, ′rt + ′) ; [ file ] = fscanf(fidin, ′% f′) ; x = file (1) ;∗ / /限于篇幅 ,下面同样的变量赋值过程均省略 ,仅以 x为例∗ / /中间的内容与前面的 myp roject. m函数相同 fp rintf (fidout, ′% d′, num) ; fclose (fidin) ; fclose (fidout) ; 其中用 fopen函数以读写文本方式打开文件 ,并返回指 针 ,用 fscanf函数以浮点型 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 读入数据到矩阵 file中 ,计算 出结果后用 fp rintf函数把结果以整数格式写入输出文件 ,最 后用 fclose函数关闭文件。 使用命令 mcc 2B csglsharedlib: myp roject mytest生成动态 链接库 myp roject. dll。 从 myp roject. h文件中我们可以看到主函数被说明为 extern L IB_myp roject_C_AP I void m lfMytest( )。使用 dll之前需 先用 myp roject. dll中的 myp rojectInitialize ( )函数对其进行注 册 ,使用完毕之后需用 myp rojectTerm inate ( )对其进行释放。 接下来需要在 LabV IEW 中调用上面生成的 dll文件 ,调 用过程如图 2所示。 首先用“New File”函数在 C盘根目录下建立两个文本文 件“in. txt”和“out. txt”,生成相应的参考号 ,并设置 overwrite 的属性为 true,同时调用 myp roject. dll中的myp rojectInitialize ( ) 对其进行注册。在循环的事件结构中使用“Number To Fractional String”函数把整数或浮点数转化为 F2format string 类型 ,并配合“Tab Constant”常量把这些数据用“W rite File”函 数写入中间文件中。同时把“W rite File”函数的 pos mode参 数赋值为 start。需要注意的是 , 为了利用中间文件在 796第 3期 王禹林等 : LabV IEW与 Matlab的无缝集成      LabV IEW和 Matlab中准确地传递参数 ,使用 Tab常数作为各 数据之间的分隔符 ,并利用“Concatenate Strings”函数把各 F2 format string类型数据和 Tab分隔符组合在一起一次传递给 “W rite File”函数。 然后利用 LabV IEW 中的 CLF节点 [ 4 ]调用 myp roject. dll 中的 m lfMytest( )函数进行数据的分析计算并返回结果到输 出文件。接着调用“Open /Create /Rep lace File”函数和“Read File”函数从“out. txt”中读取数据 ,并用“Fract/Exp String To Number”函数把结果转化为数值类型 ,并把值显示出来。 最后在结束程序时 ,例如在“Panel Close”事件中还需调 用“Close File”函数关闭 Refnum,并调用 myp roject. dll中的 myp rojectTerm inate ( )函数对 dll文件进行释放。 (注意不要在 结束按钮事件中调用 myp rojectTerm inate ( )函数 ,否则再次运 行程序将没有响应。) 打包时需包括 myproject. dll和所需的 Matlab动态链接库。 1. 2. 2 VC + +参数类型转化法 实现的方法是 :先将 M文件编译为 C + +程序文件 ,再用 VC封装一个 dll,使其参数接口变为普通的参数类型。然后 图 3 LabV IEW调用经VC + +封装后的 dll的程序图 用 LabV IEW 编写前端用 户交互界面 ,并调用经 VC 封装过后的参数接口为普 通参数类型的 dll中的函 数进行数据的分析计算并 返回结果。 所用的 M 函数与用 COM组件法所用的 M 函 数完全相同 ,为 myp roject. m。 使 用 命 令 mcc 2B csglsharedlib: p roject myp roject生成动态链接 库。Matlab会生成一系列 文件 ,其中 p roject. h, p roject. lib, p roject. dll是我们所需要的。 为了能在VC + +中使用上面生成的 p roject. dll进行算法 封装和参数接口类型转化 ,首先要对 VC + +的环境进行一些 设置 [ 5 ]。作以下说明 : 1) 在VC + +中新建“MFC AppW izard ( dll) ”工程 ,取名为 myp roject,其余取默认选项。 2) 把前面生成的 p roject. h, p roject. dll, p roject. lib添加到 工程中 ,在 myp roject. cpp文件中添加头文件 p roject. h。 3) 在 myp roject. h文件中添加封装后的函数说明如下 : extern "C" _declspec (dllexport) void myp roject(double x, double y, double tuhao, double i, double A, double B, double C, double D, double3 num) ; 在函数声明文件中 , extern " C"不可少 ,以使编译器在调 用该函数时 ,以 C语言的语法格式去查找该函数。 _declspec ( dllexport)的作用是输出函数声明。 4) 在 myp roject. cpp文件中添加封装参数接口函数如下 : extern "C" _declspec (dllexport) void myp roject(double x, double y, double tuhao, double i, double A, double B, double C, double D, double3 num) { double3 numm; / /中间变量 / /创建 mxA rray型数据并对其赋值 mxA rray 3 x_, 3 y_, 3 tuhao_, 3 i_, 3 A_, 3 B_, 3 C_, 3 D_, 3 num_; x_ =mxCreateDoubleMatrix(1, 1, mxREAL) ;∗ / /限于篇幅 ,下面同样的变量赋值等过程均省略 ,仅以 x_为例 num_ =mxCreateDoubleMatrix(1, 1, mxREAL) ; memcpy(mxGetPr(x_) , &x, sizeof(double) ) ;∗ / /使用 p roject. dll中的函数 num_ =m lfMyp roject(x_, y_, tuhao_, i_, A_, B_, C_, D_) ; numm =mxGetPr(num_) ;3 num = 3 numm; / /销毁变量 ,释放内存 mxDestroyA rray(x_) ;∗ } 这里参数接口类型都定义为 double和 double3 ,如果定 义为 int型参数传递会出错。 最后把该工程编译成 myp roject. dll供 LabV IEW 调用。 调用过程如图 3所示。 利用 LabV IEW 中的 CLF节点调用 myp roject. dll中的 myp roject函数 ,在使用之前还需要在 LabV IEW 中用 p roject. dll中的 p rojectInitiallize ( )函数对其进行注册 ,使用完毕之后 需要在 LabV IEW 中用 p rojectTerm inate ( )对其进行释放。这 两函数在 p roject. h中可以找到。 打包时需包括 p roject. dll、myp roject. dll和所需的 Matlab 动态链接库。 2 结语 COM组件法最简单 ,但为了在没有安装 Matlab的目标机上 用户也能够使用 ,需要安装 MCR Installer. exe (102M) ,这在一定 程度上限制了它的应用。而另两种方法只需打包所需的 Matlab 动态链接库 ,在目标机上的安装文件比 COM组件法要小很多。 另外初次执行的速度 COM组件法也比另两种方法要慢。 中间文件传递法不要求复杂的编程技巧 ,只需在 LabV IEW和 Matlab中分别添加相应的创建文件 ,读写数据的 函数即可。但交互性差 ,因已用 Matlab封装好 DLL文件 ,故 中间文件的文件名及其路径已定好不能再更改。而在 LabV IEW中使用“New File”函数创建文件 ,目标机上必须已 存在此文件保存的路径 ,否则会出错。为了满足良好的可移 植性 ,均在 C盘的根目录下创建中间文件。另外 ,利用LabV IEW (下转第 702页 )   896     计算机应用 2006年 不活动 :当流程建立时 ,流程的所有活动都是不活动的。 就绪态 :活动被放进了队列 ,而且活动等待的条件已经成熟。 执行态 :活动正在执行。 完成态 :活动已完成。 错误态 :活动执行过程因发生错误而被结束。 等待 :活动被放进了等待队列。 未知 :活动状态为空。 根据以上活动相关的状态 ,可以对活动所必需包含的通 用操作进行定义 ,如下 : Execute ( ) :活动的功能性操作。比如 ,需要在这里调用 组件服务的实际操作 ,或者服务组件之间传递消息等。 isReady( ) :判读活动当前是否可以进入执行态。 finish ( ) :当活动执行完成时 ,执行一些必要的扫尾工作。 2. 4 粗粒度服务接口呈现 细粒度的组件服务在经过流程编排以后 ,协作产生更强 大的功能 ,处理更多的数据 ,从而表现为粗粒度的组件服务。 服务如果不发布出去 ,或者不能够遵从 W SDL国际标准 ,从而 为消费者所使用 ,就不能称之为真正的服务。 如果为流程取一个服务名称 ,然后整理出服务所需要的 所有输入信息和输出信息 ,就能够像一个普通的组件一样生 成一个服务接口。或者以细粒度服务为单位组织每一个细粒 度服务所需要的输入输出参数 ,从形式上构成粗粒度服务的 内部操作 ,并依据这些信息构造粗粒度服务的服务接口。 基于上述服务接口 ,就可以模仿现有的 Web Service技术中 服务发布的方法 ,建立对应的 WSDL文件对外发布。但是由于这 里的服务接口只是逻辑概念上的接口 ,必须在调用之前将调用形 式转化为逻辑概念上的粗粒度服务在执行过程中能够实际使用 的信息形式 ,然后再转交给执行机构。 3 结语 目前网络传输同机内传输相比 ,效率不理想。在使用 W eb Service技术实现 SOA时 ,必须考虑到低效率的网络传输 造成的负面影响。通过提供一种对企业细粒度组件服务的整 合方法 ,降低基于 SOA架构的企业应用中的网络传输量 ,从 而减轻设计复杂度 ,提高系统开发、运行效率。 面向服务的架构的最大优点在于为企业的应用整合提供 了有力的支持 ,但由于面向服务的体系结构考虑问题的出发 点是企业业务的整合 ,是从宏观的角度探讨系统的复用。因 此 ,大都从 W eb Service的角度讨论服务的组合问题 ,这个探 讨属于业务复用的范畴 ,它的着眼点是业务 ;而本文讨论的问 题的着眼点是业务内部的服务构件 ,讨论服务构件的粒度的 转化方法 ,使服务构件在不同的粒度层次都能够被复用。这 两个问题在特定条件下能够相互转化。 参考文献 : [1 ] 王千祥. 应用服务器的原理和实现 [M ]. 北京 :电子工业出版 社 , 2003. [2 ] SHALLOWAY A, TROTT JR. 设计模式精解 [M ]. 北京 :清华大 学出版社 , 2004. [3 ] VENNERS B. 深入 Java虚拟机 [M ]. 第 2版. 北京 :机械工业出 版社 , 2003. [4 ] NAGAPPAN R, SKOCZYLAS R, SR IGANESH RP. Java W eb服务 开发 [M ]. 北京 :清华大学出版社 , 2004. [5 ] RAMANATHAN R. MakeApp lication Integration Easy [ EB / OL ]. http: / /www. fawcette. com /weblogicp ro /2004 _ 09 /magazine / fea2 tures/ rramanathan / , 2004 - 08 - 20. [6 ] HOLL INSWORTH D . TheWorkflow Reference [ R / OL ] . www . wfmc. org/ standards/docs/ tc003v11. pdf, 1995 - 01 - 09. [7 ] Web ServicesDescrip tion Language (Version 2. 0) [EB /OL ]. http: / / www. w3. org/TR /2005 /WD2wsdl20220050803, 2005 - 08 - 03. [8 ] ANDREW S T , CURBERA F , DHOLAKIA H , et al . Business Process Execution Language for W eb Service (Version 1. 1 ) [ EB / OL ]. http: / /dev2dev. bea. com / technologies/webservices/ BPEL4W S. jsp , 2003 - 05 - 05. (上接第 698页 ) 和 Matlab的文件读写功能传递参数 ,在实时性要求很高或参 数很多的情况下并不适合。 图 4 程序运行效果图 VC + +参数类型转化法实现起来最为复杂 ,对开发者在 设置和编程上有一定要求。但它可直接传递参数而不需要中 间文件 ,可移植性很高。 另外 Matlab的 Comp iler具有一定的局限性 ,在混编的过 程中只能使用 Matlab数学库中的函数和图形库中的部分函 数 ,对于一些工具箱中的函数 ,如用到一些数学库之外的函 数 ,就有可能出现错误。即使编译通过 ,在运行的时候也有可 能出错。 利用上述的三种方法均实现了 LabV IEW 与 Matlab的无 缝集成。程序的运行效果图如图 4所示。这三种方法各有优 缺点 ,用户可根据实际情况选择合适自己的方法。 参考文献 : [1 ] 裴锋 ,汪翠英. 利用 COM技术的 LabV IEW 与 Matlab的无缝集 成 [J ]. 仪器仪表用户 , 2005, 12 (2) : 97 - 98. [2 ] 苏金明 ,黄国明 ,刘波. Matlab与外部程序接口 [M ]. 北京 :电子 工业出版社 , 2004. [3 ] National Instruments Corporation. LabV IEW App lication BuilderU s2 er Guide[ Z], 2003. [4 ] 雷振山. LabV IEW 7 Exp ress实用技术教程 [M ]. 北京 :中国铁道 出版社 , 2004. [5 ] 刘建伟. VC ++与 Matlab混合编程的快速实现 [EB /OL ]. http: / / kenbeyond. blogchina. com /kenbeyond / 925404. html, 2005 - 06 - 01. 207     计算机应用 2006年
本文档为【【三种方法】LabVIEW与Matlab的无缝集成】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_640120
暂无简介~
格式:pdf
大小:761KB
软件:PDF阅读器
页数:5
分类:互联网
上传时间:2013-01-05
浏览量:161