微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > Labview与其他应用程序的接口设计

Labview与其他应用程序的接口设计

时间:01-09 来源:互联网 点击:

xport选项。

利用LabVIEW调用Matlab实例

在实例中,我们将完成两个实验:一个简单的加法运算,x,y为输入的两个加数,z为输出的求和值;一个三维曲面的显示,通过改变三维曲面数值,可以展示曲面的不同形状。程序前面板如图


(1)利用matlab节点实现简单运算

①函数面板的“数学→脚本与公式→脚本节点”,将Matlab脚本节点放置在合适的位置。

②单击工具选板上的,在Matlab Script Node中单击即可以编辑M脚本。

③在Matlab Script Node中输入如下语句:

z=x+y;

④在Matlab Script Node框图左侧上单击鼠标右键,选择“添加输入”,在出现的方框中输入x;重复操作,在方框中输入y。

注意:在Matlab Script Node中有几个输入变量,则需要添加几个输入。

⑤在Matlab Script Node框图右侧上单击鼠标右键,选择“添加输出”,在出现的方框中输入z。

注意:此时只有一个输出变量,故只添加一个输出变量。

⑥在前面板中选择“控件→新式→数值”,选择数值输入控件,将其放在前面板的合适位置。重复上述操作,将第二个数值控件放在前面板的合适位置。

⑦在前面板中选择“控件→新式→数值”,选择数值显示控件,将其放在前面板的合适位置

⑧在程序框图中将两个数值输入控件分别与x,y连接,数值显示控件与z连接。

程序框图如图所示:


运行程序,改变数值输入控件2和3的值,可以看到数值显示控件随之改变。同时会启动Matlab,并在Matlab中自动运行该脚本

(2)利用Matlab脚本节点实现3D图形

①在函数面板的“数学→脚本与公式→脚本节点”,将Matlab脚本节点放置在合适的位置。

②单击工具选板上的,在Matlab Script Node中单击即可以编辑M脚本。

③在Matlab Script Node中输入如下语句:

x=-8:0.5:8;

y=x;

[XX,YY]=meshgrid(x,y);

r=sqrt(XX.^2+YY.^2)+eps;

z=sin(r)./r;

surf(z);

title(sin(r)/r);

④在Matlab Script Node框图右侧上单击鼠标右键,选择“添加输出”,在出现的方框中输入z。并在z方框中右击,选择“选择数据类型→2-D Array of Real”。

⑤在前面板中选择“新式→图形→三维曲面图”,将其放在前面板合适的位置。

⑥连接z和三维曲面图的“矩阵”输入端口。

最终程序框图如图所示:


运行该VI的同时也会启动Matlab,并在Matlab中自动运行该脚本,产生如图所示图形。


4、调用库函数节点(调用DLL)

相对于CIN来讲,NI更推荐用户使用DLL来共享基于文本编程语言开发的代码。除了共享和重复利用代码,开发人员还能利用DLL封装软件的功能模块,以便这些模块能被不同开发工具利用。在labview中,使用DLL一般有以下几种途径:

(1)使用自己开发DLL中的函数。

(2)调用操作系统或硬件驱动供应商提供的API。

对于前一种方法来说,又可以通过以下几步实现:

(a)在labview中定义DLL原型;

(b)生成.C或.C++文件,完成实现函数功能的代码并为函数添加DLL导出声明;

(c)通过外部IDE(如VC++)创建DLL项目并编译生成.dll文件。

下面的内容将具体讲解:

配置Call library function node (CFN)

无论在labview中使用自己开发的DLL,或者硬件驱动供应商(操作系统)提供的API,都可以通过配置CFN来完成。如下图



在CFN图标的右键菜单选择“配置”,打开配置对话框,通过该对话框,可以指定动态库存放路径、调用函数名以及传递给函数的参数类型和函数返回值的类型。在配置完成后,CFN节点会根据用户的配置自动更新其显示。



通过browse按钮或者直接在library name or path输入框中指定调用函数多在.dll文件的路径。

通过browse按钮下的控件用户可以指定多个线程同时调用DLL。默认情况下,labview以run in UI Thread方式调用DLL,调用的函数将直接在用户线程中运行。另外一种方式是递归方式reentrant,在这种情况下可以允许多个线程同时调用DLL中的函数。但要确保正常调用,必须使dll中的代码线程安全。

在“Function Name”输入框中指定要调用函数的函数名。
通过“Call Conventions”下拉列表框指定调用DLL 中函数的方式。可以指定调用方式为“C”(默认方式)或Windows 标准调用方式“stdcall”。一般来说用“C”方式调用开发人员自己写的DLL 函数,而 “stdcall”一般做为标准调用方式来调用windows 的API
通过Parameter 域可以指定所调用函数的返回值类型。默认情况下CFN 节点没有输入参数而且只有一个void 类型的返回参数。该参数由CFN 节点第一对连接点的右端返回,代表CFN 执行结果。如果返回参数的类型是void 类型,则CFN 连接点为未启用状态(保持为灰色)。CFN 的每一对连接点代表一个输入或输出参数,若要传递参数给CFN 则将参数连接至相应连接点的左端,若要读取返回值,则将相应连接点的右端连接到Indicator。CFN 返回参数的类型可以是Void,Numeric 或String。只能为返回参数指定Void 类型,输入参数不能指定为Void 类型。调用的函数没有返回值时,指定CFN 的返回参数类型为void 类型。即使参数有确定类型的返回值,也可以指定CFN 的返回类型为Void,但是此时,函数的返回值将被忽略。有些时候,调用的函数返回值不是以上三种类型,可以使用与以上三种类中有相同大小的一个来代替。例如如果调用的函数返回一个Char 类型数据,则可以用一个8-bit unsigned integer Numeric 类型来代替。此外,由于LabVIEW 中没有指针,因此调用DLL 中的返回指针的函数似乎不可能。但是可以设定返回值类型为一个与指针有相同大小的Integer 类型,LabVIEW 将把地址以整型值来看待,并且用户可以在以后的调用中直接使用它。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top