您的位置 首页 FPGA

Labview与其他应用程序的接口规划

labview固然强大,但是有些功能实现起来也是比较麻烦的。我们想使用其他语言或者平台下的现成的程序,怎么办呢?可以通过下面的集中办法来实

labview当然强壮,可是有些功用完结起来也是比较费事的。咱们想运用其他言语或许平台下的现成的程序,怎么办呢?

能够经过下面的会集办法来完结:

1、调用公式节点 functions- All fuctions-structures

2、调用C言语代码(code interface node)functions- All fuctions-structures代码接口节点

3、调用matlab脚本节点functions- All fuctions-analyze-mathematics-formula

4、调用windows API函数(call library function node) 调用库函数节点 .dll

5、调用ActiveX控件(微软的)运用ActiveX容器,具体的实例可拜见labview帮助文件里边的事情回调的浏览器的比如。

6、调用.dll程序集或许同享库,经过.net容器来完结。

labview前面板有两种容器:.net容器和activeX容器。.net是运用应用程序集。而ActiveX是运用微软的目标模型(如浏览器,ms播放器等,比较直观的交互技能集)

具体调用细节实践探索后逐渐增加:

1、调用公式节点的比如

图1公式节点实例

其公式与C言语具有相似的表达式,具体看帮助文件。

2、调用C言语代码

这个内容从网络上找到一篇介绍的比较好的文章,现录入进来。在此注明原文地址(为使文章更可读,将图号进行修正):

http://www.eefocus.com/bbs/article_10_6482.html
CIN(Code Interface Node)节点是LabVIEW中用来调用C/C++代码的功用节点。它与动态链接库的不同之处在于,它能够将代码集成在VI中作为独自的一个VI发布,而不需求剩余的文件。别的,它供给了函数进口,它能够依据用户供给的输入输出主动生成函数进口代码,然后运用户专注重视代码功用而不用为函数声明、界说等句子操心。因而CIN节点与DLL在不同的场合有不同的优势,可是CIN节点的运用比调用DLL要杂乱得多。

因为LabVIEW中数据的存储格局遵从了C言语中数据的存储格局,而且二者彻底相同,所以用户能够向CIN传递恣意复合的数据结构。别的,CIN比图形化言语可获得更高的履行功率。

留意:关于彻底相同的代码,CIN和DLL的履行功率是彻底相同的。

假如要运用CIN节点,你有必要安装了C编译器。在Windows下,CIN支撑以下编译器:

  • Microsoft Visual C++
  • Symantec C

CIN节点有必要调用.lsb文件。.lsb文件是经过外部编译器与CINTools东西结合将C代码编译生成的。

下面咱们经过一个Step by Step的实例来看如安在LabVIEW中完结CIN节点调用,本例所用外部编译器为Microsoft Visual C++ 6.0。

第一步:在程序框图放置一个空CIN节点;

CIN节点坐落Functions Palette的Connectivity->Libraries & Executables->Code Interface Node。

第二步:创立CIN节点的输入输出端口;

初始情况下,CIN只要一对端口:一个输入端口和一个输出端口。向下拉大节点边框或右击节点端口挑选Add Parameter,能够为节点增加输入输出端口。CIN节点的端口都是成对呈现的,因为CIN节点端口传递的是指针,所以该参数既能够作为输入又能够作为输出。假如不需求输入,则能够右击该输入端口挑选Output Only,这时候该对端口的左边端口变为灰色,标明这对端口仅用作输出。

本例完结的功用为c=a+b,因而需求两个输入端口:a,b;一个输出端口c。如图18.8所示。

设置好端口后,在前面板窗口创立两个Numeric Control(别离命名为a和b)和一个Numeric Indicator(命名为c)。别离将a,b与输入端口衔接,c与输出端口衔接,如图3所示。能够看到,端口会主动依据输入参量的类型与之匹配。

图2设置CIN节点端口

图3 CIN节点端口与控件衔接

尽管控件与端口现已衔接,可是此刻的CIN节点并不具有任何功用,因为它还没有装载.lsb文件。因而此刻VI是不行运转的,即Run按钮处于Broken状况。下面的使命便是创立.c源文件,并编译为.lsb文件,终究加载到节点上。

第三步:创立.c源文件

右击CIN节点挑选Create .c File…,在弹出的对话框中保存文件,这儿文件名命名为CINExample_add.c。翻开该文件能够看到LabVIEW现已主动增加了一些代码用于包括库以及函数声明等,内容如下:

#i nclude “extcode.h”

MgErr CINRun(float64 *a, float64 *b, float64 *c);

MgErr CINRun(float64 *a, float64 *b, float64 *c)

{

return noErr;

}

用户能够在“”处增加函数所需的C代码。头文件“extcode.h”是LabVIEW自带的一个头文件,坐落… LabVIEW 8.2cintools目录下。它界说了CIN和外部程序所用到的根本数据类型和许多函数等。其间界说的某些常量和数据类型或许会与体系头文件相冲突,因而在运用体系头文件并进行体系调用时,需求将cintools目录下的hosttype.h文件也包括进来。#i nclude “hosttype.h”有必要紧跟着#i nclude “extcode.h”句子,然后才能用#i nclude句子包括体系头文件。

当CIN节点履行时,LabVIEW将调用CINRun函数。CINRun函数将CIN节点的输入输出作为参数看待。此外,还能够增加一些其它的后台例行程序(Routines):CINLoad,CINSave,CINUnload,CINAbort,CINInit,CINDispose和CINProperties。它们别离在不同的时间履行。例如CINLoad在第一次载入VI时履行。缺省情况下是不履行任何内容的,假如你需求在VI载入时履行某段程序,则能够把该段程序增加在CINLoad例程中。编写CINLoad例程的代码如下:

CIN MgErr CINLoad(RsrcFile reserved) {

Unused (reserved);

return noErr;

}

通常情况下,咱们只需求编写CINRun函数。本例中,只需求将.c源文件中的CINRun函数改写如下:

MgErr CINRun(float64 *a, float64 *b, float64 *c)

{

*c=*a+*b;

return noErr;

}

改写后保存该文件就完结了.c源文件的编写,下面咱们经过Visual C++ 6.0集成开发环境来编译该源文件。

第四步:编译.c源文件为.lsb文件

1.翻开VC++ 6.0,在主窗口菜单中挑选File->New…,在弹出的对话框挑选Win32Dynamic-Link Library,设置Project Name为CINExample_add,并在Location栏设置该Project地点途径,如图4所示。点击OK按钮后,在接下来的对话框中挑选Finish按钮,在接着弹出的信息提示对话框中点击OK,就成功创立了一个空的DLL Project。

图4VC中创立新DLL Project对话框

2.将前面创立的CINExample_add.c源文件与…LabVIEW 8.2cintools目录下的cin.obj, labview.lib, lvsb.lib, lvsbmain.def增加到Project中。增加办法是在VC++主菜单中挑选Project->Add To Project->Files…。

3.挑选Project->Settings…,在弹出对话框的Settings for栏中挑选All Configurations,然后挑选C/C++tab页,挑选Category栏为Preprocessor,将…LabVIEW 8.2cintools目录增加到Additional include directories中,如图5所示。


图5将cintools目录增加到查找目录中

4.依然在上面的对话框中挑选Category为Code Generation,设置Struct member alignment为1 byte。设置Use run-time library为Multithreaded DLL。

5.挑选Custom Buildtab页,在Commands栏中输入:”cintools地点目录lvsbutil” $(TargetName) –d “$(WkspDir)$(OutDir)”,在Outputs栏中输入:” $(OutDir)$(TargetName).lsb”,如图6所示。这一步便是运用LabVIEW的CINTools东西包中的lvsbutil东西将VC++生成的DLL文件转换为CIN节点能够运用的.lsb文件。

图6设置Custom Build为lvsbutil

6.点击OK按钮完结装备后,点击VC++东西栏中的Build按钮,编译工程。编译进程中,VC++首要创立一个DLL文件,然后调用lvsbutil东西将这个DLL文件转换为.lsb文件。编译完结后,翻开工程目录下的Debug文件夹,咱们能够看到新生成的.lsb文件:CINExample_add.lsb。下面就能够将该文件加载到CIN节点中了。

第五步:加载.lsb文件到CIN节点

回到LabVIEW程序中,右击第二步中创立的CIN节点,挑选Load Code Resource…,在弹出的文件挑选对话框中双击挑选方才创立好的CINExample_add.lsb文件,这就完结了.lsb文件的加载进程。这时候VI窗口东西栏中的Run按钮也变为可履行状况。运转VI能够得到预期成果,如图7所示。

图7运用CIN节点进行加法运算

到此为止,咱们就完结了一个CIN节点的创立进程。其实LabVIEW供给了很多的外部函数供CIN节点调用,这些函数涵盖了从底层字节操作到数据排序、内存办理等各个方面。这些函数都在一个称为Managers的库中办理。在C代码中经过调用这些函数能够便利的完结十分强壮的功用。限于篇幅,这儿就不具体介绍了,有爱好的读者能够参阅NI公司的Using External Code in LabVIEW.pdf文档。在…LabVIEW 8.2examplescins目录下也能够看到LabVIEW供给的不少CIN节点实例。

3、调用Matlab脚本节点

Matlab脚本节点的介绍

Matlab脚本节点坐落函数面板的“数学→脚本与公式→脚本节点→Matlab脚本节点”。因为Matlab脚本节点中的脚本彻底是Matlab中的M文件,运转Matla脚本节点时会发动Matlab,并在Matlab中履行脚本内容,其支撑的函数由Matlab来供给。

Matlab脚本节点能够经过增加输入输出端子来完结LabVIEW和Matlab 脚本节点交互数据。办法为:右击节点边框,挑选Add Input或许Add Output选项;能够手动输入M文件,也能够导入或许导出M文件。办法为:右击节点边框,挑选Import或许Export选项。

运用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文件。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/211020.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部