基于实现和的通信物业
中医保健 2021年09月06日 浏览:2 次
2 实现VC、MATLAB通信方法简介
MATLAB提供了许多方法与VC程序的通信:MATLAB引擎(ENGINE)采用了客户机/服务器(CLIENT/SERVER)的计算模式,通过MATLAB应用程序接口(API)中有关函数,在VC环境中调用MATLAB函数,但此种方法需要MATLAB后台支持,因此系统必须安装MATLAB;MATLAB本身提供的MCC工具编译,编译m文件生成VC++或c语言,直接在VC中使用;MATLAB的MEX工具将m文件编译成dll,供VC调用,但这增加的程序的复杂性,没有第二种方法灵活。
MATLAB现具有的MATLAB Add-in(其包装了MCC)更方便了第二种方法的应用,现本系统的实现就是以之为基础的。
2.1 MATLAB与VC实现互连
为了使用MATLAB的具体功能,在开发环境中应首先安装MATLAB工具软件,之后运行此工具软件,分别执行\"mex -setup;mbuild -setup;cd(prefdir); mccsavepath;\"命令。现在再运行VC开发工具,从菜单开始依次打开\"Tools-Customize-Add-ins and Macro Files\",选中MATLAB Add-in项,就可以看到工具栏中多了一个 。现在VC就可以利用它来得到m文件所对应的c、c++文件。
2.2 开发工具VC运行环境设置
系统开发时,须对VC的开发环境变量进行设置。通过\"Tools-Options-Directories\"找到的Directories项中添加环境变量。
添加头文件和库文件搜索路径[3]是(本计算机的文件搜索路径为):
F:\\MATLAB6P5\\EXTERN\\INCLUDE F:\\MATLAB6P5\\EXTERN\\INCLUDE\\CPP F:\\MATLAB6P5\\EXTERN\\LIB F:\\MATLAB6P5\\EXTERN\\LIB\\WIN32 F:\\MATLAB6P5\\EXTERN\\LIB\\WIN32\\MICROSOFT\\MSVC60
上述为VC编译MATLAB的m文件生成C++代码的环境。同时为了编译JNI的h文件,还须通过菜单Tools.和Project添加如下头文件和库文件搜索路径:
D:\\JBUILDER6\\JDK1.3.1\\INCLUDE D:\\JBUILDER6\\JDK1.3.1\\INCLUDE\\WIN32
2.4 VC生成DLL[4]
在本系统中,VC建立名称为makenoise的\"MFC APPWizard(dll)\"Project,按照VC默认的选项完成工程的创立。
将1.2中生成的nnsd_Frame1.h文件拷贝到系统目录下,并添加到VC的\"FileView\"中\"HeadFiles\"里面。通过MATLAB Add-in将\"normrnd.m、rndcheck.m、noise.m\"文件添加到VC中,并自动生成VC文件。具体操作步骤如下:
点击工具栏中\"Add m-files to current project\"项,在出现的图中选定如下选项:
图1 添加m文件的Add-in选择
按照接着步骤的提示将上述3个m文件添加到项目中。
在VC中为了对外提供可调用的函数,须在\"p\"文件中添加:
#include \"nnsd_Frame1.h\"
JNIEXPORT void JNICALL Java_nnsd_Frame1_makeNoise
(JNIEnv *env, jobject obj, jfloat m, jint n){}
//将原申明的函数的变量名补上,具体实现功能代码在下面。
为了让上述导出函数获得对MATLAB中白噪声函数的调用,须在此文件中再添加:
#include \"math.h\"
#include \"dblmtrx.h\"
//下面申明得到全局matlab的函数
extern void InitializeModule_noise();//初始化
extern void noise(mwArray n, mwArray m);//产生白噪声函数
extern void TerminateModule_noise();//关闭资源
//dll导出JAVA函数的具体实现部分
JNIEXPORT void JNICALL Java_nnsd_Frame1_makeNoise
(JNIEnv *env, jobject obj, jfloat m, jint n)
{
AfxMessageBox(\"开始产生白噪声!\");
InitializeModule_noise();
noise(n,m);
TerminateModule_noise();
}
编译整个程序,于是便得到\"l\"。
2.3 脱离MATLAB环境运行的支持文件
为了在没有安装MATLAB应用软件的环境下,能够使用上述的DLL,须在运行此DLL的目录中添加一些文件,而这些文件可以通过工具栏中的\"MATLAB Add-in Packager\"获得。按照此工具默认的配置得到一个运行所需文件的zip压缩文件,使用时,解压缩到DLL文件所在的目录中,就能脱离MATLAB环境使用DLL。
3 结论
采用JAVA完成图形界面设计、数据管理等,利用MATLAB数学库完成软件核心算法设计,很大程度上降低了编程难度和工作量, 缩短开发周期,提高软件可靠性。尤其利用编译器调用MATLAB动态连接库实现脱离MATLAB环境下二者的紧密结合,更极大拓展了MATLAB的应用范围。基于VC++6.0实现JAVA和MATLAB的通信,深化了JAVA和MATLAB的应用能力。 附注:noise.m文件的内容如下:
function makeNoise(n,m)
c=normrnd(0,m,1,n);
s=\'样本文件.txt\';
fid=fopen(s,\'W\');
fprintf(fid,\'%6.2f\',c);
左右按键为分体式设计 fclose(fid);查看本文来源
北京哪医院妇科好五味子的功效
四平哪里治白癜风最好

- 上一篇: 基于的编程入门之画刷
- 下一篇 基于的接收机串口程序设计计划
-
荷叶茶减肥的最佳武器
2019-07-16
-
读书衰减靠谱吗
2019-07-12
-
推广先住院后结算模式
2019-07-12
-
李克强支持中医药事业传承发展
2019-07-06
-
河北举办学习贯彻中医药法和河北省中医药条
2019-07-05
-
吉林梅河口市中医药继教委员会成立
2019-07-02