版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品Labview调用C语言的方法CIN(CodeInterfaceNode)节点是LabVIEW中用来调用C/C+代码的功能节点。它与动态链接库的不同之处在于,它能够将代码集成在VI中作为单独的一个VI发布,而不需要多余的文件。另外,它提供了函数入口,它可以根据用户提供的输入输出自动生成函数入口代码,从而使用户专心关注代码功能而不用为函数声明、定义等语句费心。因此CIN节点与DLL在不同的场合有不同的优势,但是CIN节点的使用比调用DLL要复杂得多。由于LabVIEW中数据的存储格式遵循了C语言中数据的存储格式,并且二者完全相同,所以用户可以向CIN传递任意复合的数据结构。另外,CIN比图形
2、化语言可获得更高的执行效率。注意:对于完全相同的代码,CIN和DLL的执行效率是完全一样的。如果要使用CIN节点,你必须安装了C编译器。在Windows下,CIN支持以下编译器:MicrosoftVisualC+SymantecCCIN节点必须调用.lsb文件。.lsb文件是通过外部编译器与CINTools工具结合将C代码编译生成的。下面我们通过一个StepbyStep的实例来看如何在LabVIEW中实现CIN节点调用,本例所用外部编译器为MicrosoftVisualC+6.0。第一步:在程序框图放置一个空CIN节点;CIN节点位于FunctionsPalette的Connectivity-
3、>Libraries&Executables->CodeInterfaceNode。第二步:创建CIN节点的输入输出端口;初始情况下,CIN只有一对端口:一个输入端口和一个输出端口。向下拉大节点边框或右击节点端口选择AddParameter,可以为节点增加输入输出端口。CIN节点的端口都是成对出现的,因为CIN节点端口传递的是指针,所以该参数既可以作为输入又可以作为输出。如果不需要输入,则可以右击该输入端口选择OutputOnly,这时候该对端口的左侧端口变为灰色,表明这对端口仅用作输出。本例实现的功能为c=a+b,因此需要两个输入端口:a,b;一个输出端口c。设置好端口后
4、,在前面板窗口创建两个NumericControl(分别命名为a和b)和一个NumericIndicator(命名为c)。分别将a,b与输入端口连接,c与输出端口连接,如图3所示。可以看到,端口会自动根据输入参量的类型与之匹配。图2设置CIN节点端口图3CIN节点端口与控件连接虽然控件与端口已经连接,但是此时的CIN节点并不具备任何功能,因为它还没有装载.lsb文件。因此此时VI是不可运行的,即Run按钮处于Broken状态c下面的任务就是创建.c源文件,并编译为.lsb文件,最后加载到节点上。第三步:创建.c源文件右击CIN节点选择Create.cFile,在弹出的对话框中保存文件,这里文件
5、名命名为CINExample_add.c。打开该文件可以看到LabVIEW已经自动添加了一些代码用于包含库以及函数声明等,内容如下:include"extcode.h"MgErrCINRun(float64*a,float64*b,float64*c);MgErrCINRun(float64*a,float64*b,float64*c)returnnoErr;用户可以在“”处添加函数所需的C代码。头文件“extcode.h”是LabVIEW自带的一个头文件,位于.LabVIEW8.2cintools目录下。它定义了CIN和外部程序所用到的基本数据类型和许多函数等。其中定义的
6、某些常量和数据类型可能会与系统头文件相冲突,因此在使用系统头文件并进行系统调用时,需要将cintools目录下的hosttype.h文件也包含进来。include“hosttype.h”必须紧跟着include“extcode.h”语句,然后才能用include语句包含系统头文件。当CIN节点执行时,LabVIEW将调用CINRun函数。CINRun函数将CIN节点的输入输出作为参数看待。此外,还可以添加一些其它的后台例行程序(Routines):CINLoad,CINSave,CINUnload,CINAbort,CINInit,CINDispose和CINProperties。它们分别在不
7、同的时刻执行。例如CINLoad在第一次载入VI时执行。缺省情况下是不执行任何内容的,如果你需要在VI载入时执行某段程序,则可以把该段程序添加在CINLoad例程中。编写CINLoad例程的代码如下:CINMgErrCINLoad(RsrcFilereserved)Unused(reserved);returnnoErr;通常情况下,我们只需要编写CINRun函数。本例中,只需要将.c源文件中的CINRun函数改写如下:MgErrCINRun(float64*a,float64*b,float64*c)*c=*a+*b;returnnoErr;改写后保存该文件就完成了.c源文件的编写,下面我们
8、通过VisualC+6.0集成开发环境来编译该源文件。第四步:编译.c源文件为.lsb文件1. 打开VC+6.0,在主窗口菜单中选择File->New.,在弹出的对话框选择Win32Dynamic-LinkLibrary,设置ProjectName为CINExample_add,并在Location栏设置该Project所在路径,如图4所示。点击OK按钮后,在接下来的对话框中选择Finish按钮,在接着弹出的信息提示对话框中点击OK,就成功创建了一个空的DLLProject图4VC中创建新DLLProject对话框2. 将前面创建的CINExample_add.c源文件与LabVIEW8
9、.2cintools目录下的cin.obj,labview.lib,lvsb.lib,lvsbmain.def添加到Project中。添加方法是在VC+主菜单中选择Project->AddToProject->Files。3. 选择Project->Settings,在弹出对话框的Settingsfor栏中选择AllConfigurations,然后选择C/C+tab页,选择Category栏为Preprocessor,将LabVIEW8.2cintools目录添加到Additionalincludedirectories中,如图5所示。图5将cintools目录添加到搜索目
10、录中4. 仍然在上面的对话框中选择Category为CodeGeneration,设置Structmemberalignment为1byte。设置Userun-timelibrary为MultithreadedDLL。5. 选择CustomBuildtab页,在Commands栏中输入:"cintools所在目录lvsbutil"$(TargetName)-d"$(WkspDir)$(OutDir)”,在Outputs栏中输入:”$(OutDir)$(TargetName).lsb:如图6所示。这一步就是利用LabVIEW的CINTools工具包中的lvsbuti
11、l工具将VC+生成的DLL文件转换为CIN节点能够使用的.lsb文件。图6设置CustomBuild为Ivsbutil6. 点击OK按钮完成配置后,点击VC+工具栏中的Build按钮,编译工程。编译过程中,VC+首先创建一个DLL文件,然后调用Ivsbutil工具将这个DLL文件转换为.lsb文件。编译完成后,打开工程目录下的Debug文件夹,我们可以看到新生成的.lsb文件:CINExample_add.lsb。下面就可以将该文件加载到CIN节点中了。第五步:加载.lsb文件到CIN节点回到LabVIEW程序中,右击第二步中创建的CIN节点,选择LoadCodeResource,在弹出的文件选择对话框中双击选择刚才创建好的CINExample_add.lsb文件,这就完成了.lsb文件的加载过程。这时候VI窗口工具栏中的Run按钮也变为可执行状态。运行VI可以得到预期结果,如图7所示。abc94=6图7利用CIN节点进行加法运算到此为止,我们就完成了一个CIN节点的创建过程。其实LabVIEW提供了大量的外部函数供CIN节点调用,这些函数涵盖了从底层字节操作到数据排序、内存管理等各个方面。这些函数都在一个称为Managers的库中管理。在C代码中通过调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年新区反电信网络诈骗入户宣传实务测试题
- 中国汽车无线传感SOC行业投资分析、市场运行态势研究报告-智研咨询发布
- 2026年福建司炉证考试复习资料
- 2026年养老产业用地优惠政策知识测试题
- 2026年商务部世界贸易组织事务岗面试热点
- 2026年住建局档案管理岗面试模拟题本
- 2026年各乡镇林区炼山造林题库
- 2026年外贸业务岗面试模拟题集
- 2026年文化创意产业发展趋势与挑战
- 2026年中小机场安全保障能力提升测试
- 介入诊疗技术操作规范和诊疗指南
- 2026年《必背60题》 马克思主义理论26届考研复试高频面试题包含详细解答
- 重庆辅警笔试题目及答案
- 【《5万吨年产量的苯酐生产工艺设计》27000字】
- 街舞老师全职合同协议
- 2025年西北农林科技大学强基计划生物科学专业考试试题集
- 泛光照明施工安全措施方案
- 企业流程优化与改进工作坊指南
- 2025年KET词汇表表格
- 两办关于进一步加强矿山安全生产意见
- 广东中考化学三年(2023-2025)真题分类汇编:专题06 金属和金属矿物(解析版)
评论
0/150
提交评论