;混合编程
中图法分类:TP311 文献标识码: A
The Interfacing Technology between
Visual C++, Labview, LabWindows/CVI and MATLAB
Wang Hua, Yuan Zhong-fan
(College of Manufacturing Sci. and Eng. ,Sichuan Univ. ,Chengdu 610065)
Abstract: The interfacing technology between Visual C++, LabVIEW, LabWindows/CVI and MATLAB is described in this article. Visual C++ is the most popular, Object Oriented, visual programming tool, and LabVIEW, LabWindows/CVI are two kinds of most excellent developing platform for virtual instrument at present, while MATLAB has powerful functions in calculating and drawing. Only by combining Matlab with Visual C++, LabVIEW, LabWindows/CVI respectively can we make best of their own advantages. The examples can demonstrate the effectiveness and feasibility of the interfacing technology.
Keywords: VC++;LabVIEW;LabWindow/CVI;MATLAB;mixed programming
1 引言
MATLAB是MathWorks公司开发的“演算纸”式的程序设计语言,是一个跨平台的科学计算环境,其具有强大的矩阵列运算、数值分析、信号处理、系统识别、图象语音处理等功能。应用MATLAB软件可以很方便地实现许多复杂的数学算法,而这些复杂的算法在其他开发环境中需要大量代码才能实现。但MATLAB也有不足之处,例如数据输入、硬件控制等方面相对较弱,程序执行速度也相对较慢且一般需要在MATLAB环境下运行。所以在解决实际工程问题时往往将MATLAB与其他高级语言混合编程,将MATLAB强大的数学功能服务于其他开发环境。Microsoft Visual C++(以下简称为VC++)是一种面向对象的可视化的高级编程工具,它是微软公司推出的支持32位操作系统的开发工具,它提供了对Microsoft最新技术的集成,提供了一个可视化的编程模式,是Windows平台上理想的开发工具。但VC++数学计算能力不强,复杂的数学算法难以实现。LabVIEW和LabWindows/CVI是目前最有影响的虚拟仪器开发平台,他们将计算机软件设计平台与数据的采集、分析、处理及结果表达等仪器专业工具有机地结合起来,作为交互式的高效率的集成开发环境,LabVIEW和Labwindows/CVI仍然无法满足复杂的数值计算和分析需求。本文结合上述各种开发环境的优缺点,阐述了VC++, LabVIEW, LabWindows/CVI和MATLAB混合编程的接口技术,并以实例成功证明了混合编程接口技术的优越性。
2 Visual C++与MATLAB接口通信技术
VC++可开发基于MFC的以及基于Windows API的Win32程序,其特点是代码效率高,执行速度快,可开发出风格多样的界面,其不足是开发数字图象处理算法时代码编写工作量很大,如果将MATLAB强大的数值处理功能融合于VC++开发环境,将为工程项目开发提供更有力的技术支持。VC++和MATLAB的接口有四种途径:
2.1 MATLAB自带编译器
通过MATLAB自带的编译器将M文件转化为C、C++等各种不同类型的源代码,并在此基础上根据应用需要生成MEX文件、独立可执行应用程序(stand-alone applications),大大提高了程序运行速度,提高代码执行效率。尤其是独立可执行应用程序可以完全脱离MATLAB环境独立运行,大大扩展了程序的应用范围。但是,MATLAB编译器不能编译脚本M文件、有object的M文件、用input或eval语句操作工作空间变量的M文件,同时,MATLAB编译器也不能编译MATLAB的内建函数。
2.2 在VC+