Labview调用C语言、Matlab脚本节点以及库函数节点的方法
用LABVIEW调用C语言的方法

LabVIEW调用库函数节点技术

LabVIEW调用库函数节点技术LabVIEW提供了调用库函数节点(Call Library Function node,简称CLF),利用CLF,可以在LabVIEW中实现DLL和API函数的调用。
在LabVIEW中使用CLF 需要了解动态链接库里被调用的函数名称、功能及其输入输出参数等,下面将详细介绍在LabVIEW 8.6下利用CLF调用6050运动控制卡基于C语言编写的驱动程序[41]。
首先在框图程序中创建一个空的CLF,CLF位于“函数模板→互连接口→库与可执行程序子模板”,如图1-1所示,下面给出其详细的配置过程:图1-1 CLF节点图标(1)双击CLF图标弹出配置对话框,如图1-2所示,首先要指定6050控制卡动态链接库的库名或路径。
点击其右边的文件夹图标,打开一个文件对话框,找到6050运动控制卡的动态链接库文件“dfjzh6050dll.dll”所在位置。
(2) LabVIEW装载了DLL文件后会自动检测其所包含的函数,但不能检测函数中的参数及其数据类型,因此接下来的要参照DLL说明文件“dfjzh6050dll.h”及控制卡使用手册选择所要配置的函数名,设置函数参数。
(3)在调用规范中有“stdcall(WINAPI)”和“C”两个选项,它们的区别是,若调用函数为Windows标准共享库函数则选择“stdcall(WINAPI)”选项,若调用函数为VC环境下编译的库函数则选择“C”选项,本文选择“C”选项。
(4)在“线程”选项中选择“在UI线程中运行”。
至此,完成了所有配置选项,在CLF配置图最下方可以看到函数原型。
下面阐述配置CLF过程中需注意的两个问题:图1-2 CLF节点配置图Figure1-2 CLF Node Setting Chart(1) LabVIEW线程调用方式节点配置中,有两种线程调用方式,“在UI线程中运行”和“在任意线程中运行”。
“在UI线程中运行”表示在用户接口线程中调用,DLL的执行期将等到用户接口线程(在此即LabVIEW环境下的VI应用程序)执行DLL的导出函数调用时才开始;“在任意线程中运行”表示允许多个线程同时调用这个DLL。
LabVIEW与MATLAB联合编程

LabVIEW与MATLAB联合编程
LabVIEW与MATLAB的联合编程⼀般可以通过2种⽅式进⾏:
1. 公式节点[Formula Node]
2. MATLAB脚本节点[MATLAB script node]
1. 公式节点[Formula Node]
位置:函数选板->数学->脚本与公式->公式节点
在程序框图上计算数学公式和类似于C语⾔的表达式。
可在公式中使⽤下列内置函数:abs、acos、acosh、asin、asinh、atan、atan2、atanh、ceil、cos、cosh、cot、csc、exp、expm1、floor、getexp、getman、int、intrz、ln、lnp1、log、log2、max、min、mod、pow、rand、rem、sec、sign、sin、sinc、sinh、sizeOfDim、sqrt、tan和tanh。
2. MATLAB脚本节点[MATLAB script node]【推荐√】
位置:函数选板->数学->脚本与公式->脚本节点-> MATLAB脚本节点
调⽤MATLAB®软件脚本服务器执⾏脚本。
这意味着我们可以采⽤MATLAB语⾔进⾏编程。
下⾯⽤⼀个例⼦展⽰如何使⽤MATLAB脚本节点:
我们需要产⽣⼀个正弦信号,程序框图如下所⽰
结果前⾯板所⽰
注意:在退出LabVIEW前,请不要⾃⾏关闭MATLAB窗⼝。
labview matlab script 用法

labview matlab script 用法
LABVIEW可以通过调用MATLAB Script节点来调用MATLAB脚本。
具体步骤如下:
1. 在LabVIEW中打开一个VI。
2. 在Block Diagram中右键单击空白区域,选择Functions»Programming»MATLAB Script。
3. 在弹出的对话框中,选择“Script”选项卡,然后输入要调用的MATLAB脚本的文件路径和文件名。
4. 在“Inputs”选项卡中,可以设置输入参数。
5. 在“Outputs”选项卡中,可以设置输出参数。
6. 单击“OK”按钮,将MATLAB Script节点添加到Block Diagram中。
7. 连接输入和输出参数。
8. 运行VI,LabVIEW将调用MATLAB脚本并返回结果。
在使用LABVIEW和MATLAB Script时,还需要注意路径设置和函数声明问题。
如果在脚本文件中有使用相对路径或pwd函数,需要进行修改。
一般可通过如下步骤进行修改:
1. 通过MATLAB Script中添加输入端子,并将数据类型设置为路径,再通过LabVIEW 的路径控件将LabVIEW当前工作目录传递给MATLAB Script。
2. 通过addpath函数将传递进来的文件夹路径添加至当前MATLAB会话的顶层。
3. 通过fullfile函数建立以当前工作目录为基础的完整文件路径。
在MATLAB Script中不能直接进行函数定义,需要将函数定义部分内容迁移至m文件中。
LABVIEW中调用C的方法和CIN节点的配置

LABVIEW中调用C的方法和CIN节点的配置LABVIEW中调用C的方法和CIN节点的配置CIN概述CIN是一个位于LabVIEW框图程序窗口的带有输入输出端口的图标。
用户可将需调用的外部代码编译成LabVIEW所能识别的格式后与此结点相连,当此结点执行时,LabVIEW将自动调用与此结点相连的外部代码,并向CIN传递特定数据结构。
使用CIN技术,用户可向CIN 传递任意复合的数据结构,并且通常情况下,使用CIN可获得较高的程序效率,因为LabVIEW中数据的存储格式遵循了C语言中数据的存储格式,二者完全相同。
CIN源代码对编译器有严格的限制,且因LabVIEW用于不同的操作系统平台而异。
LabVIEW支持Windows95,WindowsNT, HP-UX等多种操作系统平台。
LABVIEW中通过与C语言的接口图标来调用C,LABVIEW与C 语言的接口图标是CIN节点。
可在help中搜索cin即可得到该节点CIN的设计方法确定CIN节点的输入、输出个数和参数类型。
CIN输入(输出)口参数的数据类型由连接在输入(输出)口上的控件的数据类型决定。
(1)生成C源代码编辑格式文件。
(2)在C源代码编辑格式文件的规定位置添加C源代码。
(3)编辑*.C文件源代码,生成可执行文件。
(4)装载编译好的可执行文件,这样就基本上形成了一个具备一定功能的CIN图标。
3应用例子通信系统中,CRC编码是非常常用的一种编码方式。
在LABVIEW 中实现比较复杂和困难。
因此,采用C语言编写CRC校验码,在LABVIEW中利用CIN节点进行调用。
3.1生成C源代码编辑格式文件(*.c文件)的代码框架生成C源代码编辑格式文件(*.c文件)的代码框架的步骤如下所述。
首先,从CIN图标的快捷菜单中选择Create.c File项,弹出一个文件存储对话框,键入文件名(本例中文件名设为“crc.c”),则生成C语言代码框,然后打开。
在LabVIEW中调用MATLAB的一种方法_张志平

文章编号:100622475(2004)0520094202收稿日期:2003209202作者简介:张志平(19732),男,河北饶阳人,华东交通大学机电工程学院硕士研究生,研究方向:设备状态监测与故障诊断;刘正平(19632),男,湖南桃江人,副教授,硕士,研究方向:机电设备状态监测与故障诊断。
在LabVIEW 中调用MAT LAB 的一种方法张志平,刘正平(华东交通大学机电工程学院,江西南昌 330013)摘要:LabVIEW 和M AT LAB 是目前工程技术领域中比较流行的两种软件,功能强大但又各自存在着不足,本文介绍了在LabVIEW 中通过M AT LAB Script 节点调用M AT LAB 应用程序的方法及注意事项,从而实现扬长避短,更好发挥各自的长处,例程运行的结果证明这种调用可以很好地实现,并且,这种调用的实现为开发一些大型的系统提供了有力的工具。
关键词:LabVIEW 语言;M AT LAB 语言中图分类号:TP31 文献标识码:AA Method of C alling MAT LAB in LabVIEWZH ANG Zhi 2ping ,LI U Zheng 2ping(School of Mechanical and E lectronical Engineering of East China Jiaotong University ,Nanchang 330013,China )Abstract :LabVIEW language and M AT LAB language are m ost popular tw o kinds of s oftware in engineering technique fields today ,al 2though their functions are very strong ,there are s ome disadvantages.This paper introduces how to call M AT LAB in LabVIEW with M AT 2LAB Script and s ome should be noticed things ,s o ,it can fully exert their advantages.The result proves calling M AT LAB in LabVIEW can be com pleted per fectly ,furtherm ore ,it provides power ful tool to design s ome larger systems.K ey w ords :LabVIEW language ;M AT LAB language0 引 言LabVIEW 和MAT LAB 语言是各自领域中较有代表性的两种软件。
Labview中调用matlab的两种方法

Labview中调用matlab的两种方法鉴于LabVIEW和MATLAB的优点,本文介绍了通过ActiveX技术,在LabVIEW(Ver6.1)中调用和操作MATLAB(Ver6.5)的方法,实现LabVIEW和MATLAB的混合编程,充分发挥两者的优势。
先说一下两种方法的优缺点:2.3 两种调用方法的比较(1)MATLAB Script节点具有多输入、多输出的特点,一次处理的信息量要以很大。
MATLAB脚本可以先在MATLAB下调试。
无误后再导入到MATLABSeript节点中。
MATLAB Script节点对输入、输出数据的类型有明确的要求。
只有LabVIEW中的数据类型与MATLAB中的数据型相匹配,才能进行数据传输。
使用MATLAB Script节点的方法,快捷方便,但不利于较大的应用程序开发。
当需要使用时,可将其模块化,采用主程序动态加载。
(2)使用ActiveX函数模的方法,具有对MATLAB更强的控制能力。
如随时打开和关闭MATLAB,隐藏在务栏中的MATLAB图标,与MATLAB进行字符数组传输,这些都是MATLAB Script节点都不具有的。
使用ActiveX函数模板时,经常会遇到数据类型的转换,尤其是变体(Variant)与其他类型的转换。
当高用大型算法时,必须明确输入、输出数据的具体类型,而且要尽量减少数据传输量和启动MATLAB自动化服务器的次数ActiveX函数模板,适于较大的应用程序开发。
在LabVIEW顺序结构中,不提供使用。
原因是顺序结构妨碍了作为LabVIEW优点之一的程序并行运行机制,而且MATLAB自动化服务器启动也需要一定时间,这会使整个程序不能及时处理其它的用户操作。
总之,两种调用方法其自身的优势和不足。
在开发一个大的复杂应用程序时,综合不同的应用要求,合理选择可以显著提高开发效率。
采用虚拟仪器技术,通过LabVIEW构建测试仪器开发效率高、可维护性强、测试精度、稳定性和可靠性能够得到充保证;具有很高的性价比,节省投资,但于设备更新和功能扩充。
Labview调用VC

Labview调用VC对初学者来说来个比较详细的包含步骤例子是难得的,我来个简单的小例子,希望对您有用,呵呵!!!1。
建立动态连接库的C 代码调用1.1 建立函数原形1)后面框图程序中,调用CLF 节点;2)配置一个函数原形,设置调用规程为C,其它不变,确定,退出;3)右键CLF 节点,create C file,保存名字为code.cpp,以供VC++编译使用;1.2 编辑源代码文件1)将所需要的labview 头文件复制到code.cpp 所在目录中,包括:extcode.h platdefines.h fundtype.h;2) 打开code.cpp,添加关键词extern c 、_declspec(dllexport)并包装;然后输入函数的功能代码,如果1 个dll 里面需要多个函数,则需要声明多个函数的原形。
2。
VC++中编译产生dll1)建立project ,fileànew-> win32 Dyna,mic Link Library,输入工程名,选择an empty dll project;2)添加code.cpp 到source file,添加extcode.h platdefines.h fundtype.h 到head files 里面;3)设置dll 参数projectàsettingsàc/C++中设置参数:category: code generation ;根据函数要求可以选择1Byte4 Byte 8Byte,采用默认就可以;multithread;其余默认可以;自己也可以微调;4)BuildàBuild code.dll;5)Ok。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Labview调用C语言、Matlab脚本节点以及库函数节点的方法Labview调用C语言的方法CIN(Code InterfaceNode)节点是LabVIEW中用来调用C/C++代码的功能节点。
它与动态链接库的不同之处在于,它能够将代码集成在VI中作为单独的一个VI发布,而不需要多余的文件。
另外,它提供了函数入口,它可以根据用户提供的输入输出自动生成函数入口代码,从而使用户专心关注代码功能而不用为函数声明、定义等语句费心。
因此CIN节点与DLL在不同的场合有不同的优势,但是CIN节点的使用比调用DLL要复杂得多。
由于LabVIEW中数据的存储格式遵循了C语言中数据的存储格式,并且二者完全相同,所以用户可以向CIN传递任意复合的数据结构。
另外,CIN比图形化语言可获得更高的执行效率。
注意:对于完全相同的代码,CIN和DLL的执行效率是完全一样的。
如果要使用CIN节点,你必须安装了C编译器。
在Windows下,CIN支持以下编译器:Microsoft Visual C++Symantec CCIN节点必须调用.lsb文件。
.lsb文件是通过外部编译器与CINTools工具结合将C代码编译生成的。
下面我们通过一个Step byStep的实例来看如何在LabVIEW中实现CIN节点调用,本例所用外部编译器为MicrosoftVisual C++6.0。
第一步:在程序框图放置一个空CIN节点;CIN节点位于FunctionsPalette的Connectivity->Libraries& Executables->Code InterfaceNode。
第二步:创建CIN节点的输入输出端口;初始情况下,CIN只有一对端口:一个输入端口和一个输出端口。
向下拉大节点边框或右击节点端口选择AddParameter,可以为节点增加输入输出端口。
CIN 节点的端口都是成对出现的,因为CIN节点端口传递的是指针,所以该参数既可以作为输入又可以作为输出。
如果不需要输入,则可以右击该输入端口选择OutputOnly,这时候该对端口的左侧端口变为灰色,表明这对端口仅用作输出。
本例实现的功能为c=a+b,因此需要两个输入端口:a,b;一个输出端口c。
设置好端口后,在前面板窗口创建两个NumericControl(分别命名为a和b)和一个NumericIndicator(命名为c)。
分别将a,b与输入端口连接,c与输出端口连接,如图3所示。
可以看到,端口会自动根据输入参量的类型与之匹配。
图2设置CIN节点端口图3CIN节点端口与控件连接虽然控件与端口已经连接,但是此时的CIN节点并不具备任何功能,因为它还没有装载.lsb文件。
因此此时VI是不可运行的,即Run按钮处于Broken状态。
下面的任务就是创建.c源文件,并编译为.lsb文件,最后加载到节点上。
第三步:创建.c源文件右击CIN节点选择Create.cFile...,在弹出的对话框中保存文件,这里文件名命名为CINExample_add.c。
打开该文件可以看到LabVIEW已经自动添加了一些代码用于包含库以及函数声明等,内容如下:#i nclude"extcode.h"MgErrCINRun(float64*a,float64*b,float64*c);MgErrCINRun(float64*a,float64*b,float64*c){return noErr;}用户可以在“”处添加函数所需的C代码。
头文件“extcode.h”是LabVIEW自带的一个头文件,位于bVIEW8.2cintools目录下。
它定义了CIN和外部程序所用到的基本数据类型和许多函数等。
其中定义的某些常量和数据类型可能会与系统头文件相冲突,因此在使用系统头文件并进行系统调用时,需要将cintools目录下的hosttype.h文件也包含进来。
#include“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 MgErrCINLoad(RsrcFile reserved){Unused(reserved);returnnoErr;}通常情况下,我们只需要编写CINRun函数。
本例中,只需要将.c源文件中的CINRun函数改写如下:MgErrCINRun(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,设置ProjectName为CINExample_add,并在Location栏设置该Project所在路径,如图4所示。
点击OK按钮后,在接下来的对话框中选择Finish按钮,在接着弹出的信息提示对话框中点击OK,就成功创建了一个空的DLLProject。
图4VC中创建新DLLProject对话框2.将前面创建的CINExample_add.c源文件与bVIEW8.2cintools目录下的cin.obj,labview.lib,lvsb.lib,lvsbmain.def添加到Project中。
添加方法是在VC++主菜单中选择Project->AddTo Project->Files...。
3.选择Project->Settings...,在弹出对话框的Settingsfor栏中选择AllConfigurations,然后选择C/C++tab页,选择Category栏为Preprocessor,将bVIEW8.2cintools目录添加到Additional includedirectories中,如图5所示。
图5将cintools目录添加到搜索目录中4.仍然在上面的对话框中选择Category为CodeGeneration,设置Struct member alignment为1byte。
设置Use run-time library为MultithreadedDLL。
5.选择Custom Buildtab页,在Commands栏中输入:”cintools所在目录lvsbutil”$(TargetName)–d“$(WkspDir)$(OutDir)”,在Outputs栏中输入:”$(OutDir)$(TargetName).lsb”,如图6所示。
这一步就是利用LabVIEW 的CINTools工具包中的lvsbutil工具将VC++生成的DLL文件转换为CIN节点能够使用的.lsb文件。
图6设置CustomBuild为lvsbutil6.点击OK按钮完成配置后,点击VC++工具栏中的Build按钮,编译工程。
编译过程中,VC++首先创建一个DLL文件,然后调用lvsbutil工具将这个DLL 文件转换为.lsb文件。
编译完成后,打开工程目录下的Debug文件夹,我们可以看到新生成的.lsb文件:CINExample_add.lsb。
下面就可以将该文件加载到CIN节点中了。
第五步:加载.lsb文件到CIN节点回到LabVIEW程序中,右击第二步中创建的CIN节点,选择LoadCodeResource...,在弹出的文件选择对话框中双击选择刚才创建好的CINExample_add.lsb文件,这就完成了.lsb文件的加载过程。
这时候VI窗口工具栏中的Run按钮也变为可执行状态。
运行VI可以得到预期结果,如图7所示。
图7利用CIN节点进行加法运算到此为止,我们就完成了一个CIN节点的创建过程。
其实LabVIEW提供了大量的外部函数供CIN节点调用,这些函数涵盖了从底层字节操作到数据排序、内存管理等各个方面。
这些函数都在一个称为Managers的库中管理。
在C代码中通过调用这些函数可以方便的实现非常强大的功能。
限于篇幅,这里就不详细介绍了,有兴趣的读者可以参考NI公司的UsingExternal Code in LabVIEW.pdf 文档(点此进入下载)。
在bVIEW8.2examplescins目录下也可以看到LabVIEW提供的不少CIN节点实例。
利用Labview调用Matlab脚本节点Matlab脚本节点的介绍Matlab脚本节点位于函数面板的“数学→脚本与公式→脚本节点→Matlab脚本节点”。
由于Matlab脚本节点中的脚本完全是Matlab中的M文件,运行Matla 脚本节点时会启动Matlab,并在Matlab中执行脚本内容,其支持的函数由Matlab 来提供。
Matlab脚本节点可以通过增加输入输出端子来实现LabVIEW和Matlab脚本节点交互数据。
方法为:右击节点边框,选择Add Input或者AddOutput选项;可以手动输入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。