用labview调用c语言的方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用labview调用c语言其实是一件挺简单的是,下面我们通过一个求两个数的相加来一步步的介绍怎样来调用C语言,只要大家按照步骤一步一步的来一定会功

的,加油!

LabVIEW中使用CIN节点调用C语言

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代码编译生成的。

下面我们通过一个两数相加的实例来看如何在LabVIEW中实现CIN节点调用,本例所用外部编译器为Microsoft Visual C++ 6.0。

例18.6 利用CIN节点实现加法运算

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

CIN节点位于程序框图的互连接口->库与可执行程序->代码借口节点。

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

初始情况下,CIN只有一对端口:一个输入端口和一个输出端口。向下拉大节点边框或右击节点端口选择增加参数,可以为节点增加输入输出端口。CIN节点的端口都是成对出现的,因为CIN节点端口传递的是指针,所以该参数既可以作为输入又可以作为输出。如果不需要输入,则可以右击该输入端口选择仅可输出,这时候该对端口的左侧端口变为灰色,表明这对端口仅用作输出。

本例实现的功能为c=a+b,因此需要两个输入端口:a,b;一个输出端口c。

设置好端口后,在前面板窗口创建两个数值输入控件(分别命名为a和b)和一个数值显示控件(命名为c)。分别将a,b与输入端口连接,c与输出端口连接,如图18.9所示。可以看到,端口会自动根据输入参量的类型与之匹配。

虽然控件与端口已经连接,但是此时的CIN节点并不具备任何功能,因为它还没有装载.lsb文件。因此此时VI是不可运行的,即运行按钮处于断开状态。

下面的任务就是创建.c源文件,并编译为.lsb文件,最后加载到节点上。

第三步:创建.c源文件

右击CIN节点选择创建.c文件,在弹出的对话框中保存文件,这里文件名命名为add.c。打开该文件可以看到LabVIEW已经自动添加了一些代码用于包含库

以及函数声明等,内容如下:

/* CIN source file */

#i nclude "extcode.h"

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

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

{

/* Insert code here */

return noErr;

}

用户可以在“/*Insert code here*/”处添加函数所需的C代码。头文件“ext code.h”是LabVIEW自带的一个头文件,位于... \LabVIEW 8.2\cintools目录下。它定义了CIN和外部程序所用到的基本数据类型和许多函数等。其中定义的某些常量和数据类型可能会与系统头文件相冲突,因此在使用系统头文件并进行系统调用时,需要将cintools目录下的hosttype.h文件也包含进来。#i nclude “ho sttype.h”必须紧跟着#i nclude “extcode.h”语句,然后才能用#i nclude语句包含

系统头文件。

当CIN节点执行时,LabVIEW将调用CINRun函数。CINRun函数将CIN 节点的输入输出作为参数看待。此外,还可以添加一些其它的后台例行程序(R outines):CINLoad,CINSave,CINUnload,CINAbort,CINInit,CINDispo se和CINProperties。它们分别在不同的时刻执行。例如CINLoad在第一次载入VI时执行。缺省情况下是不执行任何内容的,如果你需要在VI载入时执行某段程序,则可以把该段程序添加在CINLoad例程中。编写CINLoad例程的代码如

下:

CIN MgErr CINLoad(RsrcFile reserved) {

Unused (reserved);

/* ENTER YOUR CODE HERE */

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,在主窗口菜单中选择文件->新建,在弹出的对话框选择Win32Dynamic-Link Library,设置工程名称为add,并在位置栏设置

该工程所在路径,如图18.10所示。点击OK按钮后,在接下来的对话框

中选择完成按钮,在接着弹出的信息提示对话框中点击OK,就成功创建

了一个空的DLL Project。

图18.10 VC中创建新DLL Project对话框

2.将前面创建的add.c源文件与...\LabVIEW 8.2\cintools目录下的cin.obj, labview.lib, lvsb.lib, lvsbmain.def添加到工程中。添加方法是在VC++

主菜单中选择工程->添加到工程->文件...。

3.选择工程->设置...,在弹出对话框的设置栏中选择所以配置,然后选择C/C ++ 页,选择分类栏为预处理器,将...\LabVIEW 8.2\cintools 目录添加到附加包

含路径中;

4.仍然在上面的对话框中选择分类为Code Generation,设置Struct me mber alignment为1 byte。设置Use run-time library为Multithreade

d DLL。

5.选择自定义组件页,在命令栏中输入:”cintools所在目录\lvsbutil” $(TargetNa me) –d “$(WkspDir)\$(OutDir)”(注意这里是用半角输入法),在输出栏中输入:”

$(OutDir)$(TargetName).lsb”,如图18.12所示。这一步就是利用LabVIEW的C INTools工具包中的lvsbutil工具将VC++生成的DLL文件转换为CIN节点能够

使用的.lsb文件。

6.点击OK按钮完成配置后,点击VC++工具栏中的组件按钮,全部组件。

编译过程中,VC++首先创建一个DLL文件,然后调用lvsbutil工具将这

个DLL文件转换为.lsb文件。编译完成后,打开工程目录下的Debug文

相关文档
最新文档