使用LabVIEW生产dll
Labview 自动生成程序及应用程序
Labview 自动生成程序及应用程序周青教主2011.12.28一自动生成程序的功能 (1)二相关背景 (1)三实际开发应注意以下几点: (1)四相关函数介绍及具体范例 (2)1.相关函数 (2)2.具体范例 (3)2.1 最简单的一段代码如图 3所示: (3)2.2 在While循环里面添加Add函数 (4)2.3在前面板放置RoundButton控件 (4)2.4在前面板放置簇,并在簇里面放置数值控件 (4)2.5生成一个显示随机数的波形图表程序,并自动运行 (5)2.6 将E的程序添加自动整理框图功能 (5)2.7 连线前面板控件与接线端 (5)2.8 前面板接线端样式介绍 (5)3.小结 (5)五自动生成应用程序 (5)六应用示例 (6)1.自动生成一个时钟的应用程序并自动生成相应EXE (6)2.注意 (6)Labview 自动生成程序及应用程序一自动生成程序的功能在使用Labview过程中,我们能接触到各种项目设置、生成向导。
如:创建仪器驱动项目向导,创建Labview实时项目向导等。
使用向导可以减少用户的学习曲线时间,并能快速、准确和动态的生成代码。
Labview VI脚本(VI Scripting)有助于通过编程,生成、编辑并检测Labview代码,便于开发向导程序。
通过LabVIEW 脚本可以实现编程创建、修改并运行LabVIEW 代码。
它包含多种新的VI 服务器类、属性和方法,有助创建、移动并连接对象(包括前面板、程序框图、和图标),有助编辑连线板,有助创建新型动态VI。
二相关背景1.什么是VI Scripting?●VI Scripting 是Labview中功能强大的特性之一,它允许用户通过程序去创建或修改Labview程序●基于VI Server●从Labview8.6开始提供给用户使用2.为什么我们需要VI Scripting?●制作向导——能通过简单的对话框自动生成代码,减少学习曲线并且增加生产率●支持VI检查——能获取VI内容并检查●创建编译器——方便把其它G或C代码转化为G代码3.用VI Scripting,我们能做什么?●理论上,我们应该能做任何Labview编辑器能做的事情●事实上,你能做如下事情等:⏹创建新的VI⏹添加新的对象到前、后面板⏹修改前、后面板上的对象⏹将前面板控件和接线面板相关联三实际开发应注意以下几点:1)利用Labview VI脚本(VI Scripting)创建Labview向导程序,此向导程序用于动态生成VI;2)向导中必须包括选择项以及可设置的配置参数3)编程风格及代码可读性。
关于LabVIEW产生的DLL被C调用的问题
关于LabVIEW产生的DLL被C调用的问题1 LabVIEW的工作1.1 工程项目从LV8.0开始,想要生成exe、安装程序或DLL就必须首先创建1个工程,然后把所有有关的VI全部添加到工程中,如图1:图1 LV项目为了使目录结构清晰,最好把最后需要输出的VI放置在一起,把子VI放置在一起,如图1中,虚拟目录Top Level Vis用来存放3个输出的VI(可以把它想像成DLL中的函数)、虚拟目录Dynamic Vis存放子VI、虚拟目录Support Files存放支持文件(位图、光标等)。
1.2 VI设置如同在LV中一样,有些VI完全是作为计算模块使用的(调用时不会弹出界面,如图1中的acquire.vi、analyze.vi),而有些是用来显示界面的(调用时弹出对话框,如图1中的present.vi)。
那么如何设置1个输出VI是否显示界面呢?想要产生界面调用的函数,请配置Window Appearance(如图2),然后确保红线圈住的地方必须被选中:图2 VI界面设置1.3 输出配置(Build Specification)右击Build Specification选择New->DLL,弹出DLL输出配置对话框,其有以下对话框需要配置:1.3.1 基本信息(Information)图3∙Build specification name—指定唯一的生成模板名称(出现在项目管理页面中),用以和其他模板相区别∙Target filename—指定输出的DLL名称∙Destination directory—指定生成文件的输出路径∙Build specification description—描述该生成模板的相关信息。
1.3.2 输出源指定(Source Files)图4∙Project Files窗口—显示项目窗口My Computer下列举的项目(如图1),使用图4中的左/右箭头可将My Computer下列举的项目移入/移出Exported VIs和Always Included窗口。
LabVIEW下国产数据采集卡DLL的设计
文章编号:1008-1658(2003)03-0009-05Lab V I E W 下国产数据采集卡DLL 的设计王少红,徐小力(北京机械工业学院机电系统测控实验室,北京100085)摘要:L ab V I E W 是一个高效的图形化程序设计环境,在测量、测试及工业控制领域已有广泛的应用,但所用数据采集卡必须有N I (N ational I nstru m ents )公司提供的驱动程序,大大限制了用户的选择。
分析L ab V I E W 调用外部程序代码的途径,采用调动态链接库的方法编写L ab V I E W 环境下国产数据采集卡的驱动程序。
实验证明,效果良好,满足测试要求,利用动态链接库调用外部程序代码是增强L ab-V I E W 整体性能的一条有效途径。
关键词:虚拟仪器;数据采集卡;动态链接库DLL中图分类号:TP 274文献标识码:A The desi g n of Dllf or t he dom estic DA O card i n l abV I E WW ANG S hao -hon g ,XU X iao -li(L aborator y o f m easure m ent and C ontro l of m echan ical and E lectrical S y ste m ,B e i j i n g I nstitute o f m ach i ner y ,B e i j i n g 100085,Ch i na )Abstract :V irt ual I nstru m ent develo p m ent p latf or m L ab V I E Wis a hi g h efficienc y g ra p hical p lat-f or m W it h extensi ve a pp lication i n m easuri ng ,testi n g and i ndustries contro l real m.But t he DAG (D ata A c C uisition )card needs t he com p an y o f N I (N ational I nstru m ents )to p rovi de dri ve ,Whichg reatl y li mits t he cho ice o f t he custom ers .C alli n g external code m et hod i n L ab V I E Wis dis-cussed ,and DLL (D y na m io L i nk L i brar y )dri ve f or t he dom estic data ac C uisition card is devel-o p ed.It has been p roved t hat t he m et hod is efficient ,p racticable ,and is a g ood W a y to i m p rove t he overall p erf or m ance o f L ab V I E W.K e y words :virt ual i nstru m ent ;DAG card ;DLL虚拟技术、计算机通讯技术与网络技术是信息技术最重要的组成部分,它们被称为21世纪科学技术中的3大核心技术。
LabVIEW 调用 C-C++ Dll 详解
LabVIEW 调用C/C++ Dll 详解LabVIEW 在配上NI 的采集卡或者别的第三方的硬件,约等于神器(虽然有时候贵了点)。
这样你可以比较集中精力的专注于数据处理了,就不用学习麻烦的Win32 的GUI 编程, 也不用关注和你自己搞的采集板之间的通信了。
对于每一个测控行业的程序来说,基本上都是:初始化-->数据采集-->数据处理-->数据显示-->数据保存-->结束的一个过程。
当然如果是实时的,那么采集,处理,显示就是在一个loop 里面。
当然为了保证实时性,数据处理和数据采集不一定在一个线程里,因为处理的时候把采集给block 住也挺傻的。
LabVIEW 很容易帮你搞定:初始化-->数据采集-->数据处理-->数据显示-->数据保存-->结束但是数据处理部分,是和你的学科紧密相关的,有时候算法会诡异到你很难用VI来实现,那么你就要有C++”target=“_blank”>C++code来搞了。
那么C/C++ 是如何与LabVIEW 交互的呢,本文来较详细的阐述一下,因为准备采用总分总的写作手法...所以先来个概括...1. 把C/C++ code 编译成Dll。
2. 用LabVIEW 的call library node 来调用。
难点在于:如何把LabVIEW 的数据类型和C/C++ 的来对应。
控件x 相当与一个double,当然其类型也是可以选择的(如右图所示)。
boolean 按理说应该是一个bool, 但是传入call library node 的时候,一般要转成unsigned int 型。
cluster 其实就是个struct ,左图的cluster 是:struct tCluster{ double x11; // 类型都可以向右图那样自己配置double x2; int x3;};对于string,这里要着重讲一下,labview 的string 类型里面是包含长度信息的,它不是一个简单的char *它是个LStrHandle 类型:定义咋extcode.h 里面(可以在labview 目录下搜到)typedef struct {int32 cnt;uChar str[1];} LStr, *LStrPtr, **LStrHandle;cnt 就是含有多少个字符,str 这个指针所指的就是数据区的第一个字符。
LabVIEW 8.6报表工具包生成和调用DLL问题分析及对策
LabVIEW 8.6报表工具包生成和调用DLL问题分析及对策摘要:针对LabVIEW8.6调用报表工具包生成的DLL过程中出现“NI_Word.lvclass”路径无法找到的问题,做了详细描述和分析,并提供了相应的解决方案。
关键词:LabVIEW 8.6 Word 动态链接库报表工具包面向对象LabVIEW是美国国家仪器(NI)公司推出的专门用于虚拟仪器开发的图形化软件编程平台,吸引了大批开发者追随,NI也根据市场需求每年推出一个新版本。
但新技术的引用不可避免的也带来了新的问题和BUG,尤其是升级后,很多硬件驱动不得不更新。
LabVIEW 8.6版本是NI推出的所有版本中,大部分用户公认比较成熟稳定的版本。
NI 报表工具包从1.1.3开始采用面向对象技术,重新设计,1.1.3和1.1.4版本是专为LabVIEW 8.6而定制使用的,而以前的版本如1.1.1、1.1.2(面向过程技术)在LabVIEW 8.6下与自带的Report函数不兼容。
1 问题描述应用开发环境以及报表工具包版本:LabVIEW 8.6 + Report Generation Toolkit 1.1.3。
在LabVIEW 8.6新建工程项目文件,并按照图1和图2建立相应的VI和文件。
当运行main.vi或Main.exe时,出现下面(图3)报错框。
而单独运行1.vi或1.exe时,却能正常运行。
2 问题分析根据问题报错框描述,问题可能出现在“Get LV Class Default Value.vi”的上一层文件“Word class path.vi”传递出的NI_Word.lvclass 路径,图4为报表工具包自带的“Word class path.vi”程序框。
利用LabVIEW自带诊断和调试工具,可获得“Word class path”显示的文件路径,如表1所示。
(1)当运行main.vi时,由于是“Develo- pment system”环境下,根据路径的分离规则,“NI_Word.lvclass”文件路径应在当前DLL文件的下层目录,并且布尔量选择为False,即“..\1.dll\word\ NI_Word.lvclass”。
LABVIEW的DLL与API调用
LABVIEW的DLL与API调用LABVIEW的DLL与API调用一.实验目的1.熟悉LabVIEW调用动态链接库的过程2.学会编写用LabVIEW调用WINDOWS的API函数二.实验器材1.计算机(带有声卡)2.LABVIEW8.20软件三.实验原理在开发自动测量系统时,经常遇到计算机与仪器的通信问题,涉及仪器控制及数据处理问题,LabVIEW语言在这一领域的应用有着独到的优势。
为了在LabVIEW中能够充分利用其他编程语言的优势,LabVIEW提供了外部程序接口能力,包括动态链接库(DLL)、C语言接口(CIN)、ActiveX和Matlab等。
动态链接库是基于Windows程序设计的一个非常重要的组成部分。
LabVIEW 开发中使用DLL,可以使代码更简洁,内存资源的使用更经济,而且可以便捷地利用仪器厂商或第三方提供的仪器控制子程序加速开发进程。
而windows平台包含有大量的API函数,这些API函数提供了大量在Windows环境下可操作的功能,它们位于Windows系统目录下的多个DLL文件中,因此在LabView中调用API 函数和DLL的方法是一致的。
在LabVIEW中,利用库函数节点可以较容易地实现对DLL的调用,从而提高了程序的开发效率。
使用调用库函数节点,可以调用Windows标准的动态连接库,也可以调用用户自己编制的DLL。
LabView中动态链接库的调用可在程序框图的函数选板中选取“调用库函数节点”来完成,该节点位于:互连接口->库和可执行程序->调用库函数节点。
将选择好的调用库函数节点图标放在程序框图中,然后通过对它的节点图标进行配置,可以指定DLL模块中与LabVIEW数据交换的相应的驱动函数。
在调用DLL时,首先要找到找到头文件(*.h)或者函数原型声明,确定你需要调用的函数,注意函数的参数是否包含了原始数据类型参数比如int,char, double,等等或者是否包含了复杂数据类型比如clusters。
VC调用labview生成的DLL
VC调用LabVIEW生成的DLL文件刚才介绍了LabVIEW调用DLL文件的方法,使用VC调用LabVIEW生成的DLL 文件也很简单。
还是以之前生成Scale 的DLL文件为例,不同的是采集电压程序使用的是C语言的例程,但和LavVIEW实现的功能相同。
首先将先前生成Scale DLL文件时,路径下所有的文件全部复制粘帖到C语言例程的文件夹下。
打开连续采集程序,点击状态栏的Project——Settings,在Project Settings对话框中加载入Scale.lib的静态链接库。
在程序中键入#include "Scale.h",以便引入该DLL函数。
下面是C程序的代码,功能是有限点采集电压,通过Scale.dll文件实现采样值放大10倍的功能。
加粗部分是因为调用DLL文件所做的改动。
#include <stdio.h>#include "NIDAQmx.h"#include "Scale.h"#define DAQmxErrChk(functionCall)if( DAQmxFailed(error=(functionCall)) ) goto Error; elseint main(void){int32 error=0;TaskHandle taskHandle=0;int32 read;float64 data[1000];char errBuff[2048]={'\0'};int i=0;double x10=0;/*********************************************/// DAQmx Configure Code/*********************************************/DAQmxErrChk (DAQmxCreateTask("",&taskHandle));DAQmxErrChk(DAQmxCreateAIVoltageChan(taskHandle,"Dev1/ai0"/*Config correct device*/,"",DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Volts,NULL));/ /DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_V al_FiniteSamps,1000));/*********************************************/// DAQmx Start Code/*********************************************/DAQmxErrChk (DAQmxStartTask(taskHandle));/*********************************************/// DAQmx Read Code/*********************************************/DAQmxErrChk(DAQmxReadAnalogF64(taskHandle,1000,10.0,DAQmx_Val_GroupByChannel,dat a,1000,&read,NULL));printf("Acquired %d points\n",read);for(i=0;i<1000;i++){Scale(data[i], &x10);printf("the %d Value is : %f \n",i,x10);}Error:if( DAQmxFailed(error) )DAQmxGetExtendedErrorInfo(errBuff,2048);if( taskHandle!=0 ) {/*********************************************/// DAQmx Stop Code/*********************************************/DAQmxStopTask(taskHandle);DAQmxClearTask(taskHandle);}if( DAQmxFailed(error) )printf("DAQmx Error: %s\n",errBuff);printf("End of program, press Enter key to quit\n");getchar();return 0;}所以,使用LabVIEW不仅可以方便地调用各种编译软件生成的DLL文件,自己也能生成DLL文件供其他编译软件调用。
在LabVIEW中利用DLL实现数据采集
在LabVIEW中利用DLL实现数据采集Realization of Data Acquis ition with DLL in LabVIEW班级学号:0704114-23姓名:杨鹏摘要:随着计算机技术及虚拟仪器技术的迅速发展, 虚拟仪器正逐渐成为测试领域的发展方向。
本文介绍了在LabVIEW 环境下驱动普通数据采集卡的重要方法- - 动态链接库机制(DLL), 并结合具体实例介绍了一种利用LabVIEW 提供的Call LibraryFunction (CLF)节点实现对动态链接库(DLL)调用的关键技术及步骤, 实现LabV IEW 与普通数据采集卡的结合, 丰富LabVIEW 对硬件的控制能力。
并将数据库技术应用于虚拟测试系统中, 建立了Access 数据库, 实现数据的存储和自动管理,从而拓展了虚拟测试系统的功能。
关键词:动态链接库(DLL); 数据采集;1 绪论目前, 电子测试仪器的发展方向正在从简单功能组合向以个人计算机(PC)为核心的通用虚拟测试平台过渡, 从硬件模块向软件包形式过渡。
建立在PC 机和数据采集设备上的虚拟仪器系统, 由于其特有的灵活和强大的功能, 也越来越广泛的应用于实验室研究和工业控制中的测试及测量领域。
从简单的仪器控制, 数据采集到尖端的测试和工业自动化, 从大学实验室到工厂, 从探索研究到技术集成, 人们都可以发现LabVIEW 应用的成果和开发的产品。
LabVIEW采用基于流程图的图形化编程方式, 也被成为G 语言(graphical language)。
G 语言编程和虚拟仪器技术已经成为工业界和学术界关注的热点技术之一。
数据采集是LabVIEW 的核心技术之一, 也是LabVIEW 与其他编程语言相比的优势所在。
使用LabVIEW 的DAQ 技术,可以编写出强大的DAQ 应用软件。
NI 公司生产的系列数据采集卡借助LabVIEW 内部的DAQ 库的驱动,可以在LabVIEW环境下运行。
如何使用LabVIEW调用C#编写的DLL
如何使用LabVIEW调用c#编写的DLL最近在做一个项目时,需要在Labview中列出可用的磁盘驱动器,我们可以使用互连接口》库与可执行程序》执行系统命令vi,但是在程序运行时会弹出命令提示符窗口,对于计算机菜鸟用户而言,他们或许会以为那是在执行病毒程序,为了增加用户的好感度,本文采用调用DLL的方式来解决问题。
在调用DLL之前,我们先来创建一个DLL,打开VS2008,新建一个类库项目,如下图:点击确定后进入代码编写窗口。
编写好的代码如下图所示:选择VS2008的生成》配置管理器,打开配置管理器,如下图所示:在活动解决方案配置下拉框中选择Release,然后点击关闭。
选择生成》生成DrivesInfoDll,然后生成一个DLL文件。
在项目的的bin\Release目录下面可以找到生成的DLL文件,如下图所示:我们把它复制我要使用它的地方,如下图:现在,打开LabVIEW2012,新建一个VI,切换到程序框图,选择下图的构造器节点到程序框图:此时将自动打开选择.NET构造器:点击浏览按钮,选择要调用的DLL:点击确定后在对象中选择Class1:,如下图所示:点击确定按钮关闭对话框。
选择下图的调用节点到程序框图:将构造器节点的“新引用”输出端与调用节点的“引用”输入端连接起来,然后在调用节点的“方法”上点击,选择我们要使用的方法,这里选择GetDrivesInfo()。
选择下图的关闭引用到程序框图并连接调用节点的“引用输出”输出端到关闭引用的“引用”输入端。
然后创建一个字符串数组,显示GetDrivesInfo方法的执行结果。
完整的程序框图如下:运行后的前面板结果如下:这说明程序是执行成功了的。
Labview调用dll详解(C语言DLL
Labview调用dll详解(C语言DLLLabview调用dll详解(C语言DLL)之一labview中提供了两个C接口,一个是CLF,一个是CIN。
本帖子讨论DLL的调用,也就是CLF。
由于C的强大功能,本帖子讨论C创建的DLL的调用。
首先简单解释一下DLL,也就是动态链接库。
DLL 的好处是屏蔽底层的细节,用户不用也不能打开DLL,便于资源代码数据共享,节省内存等。
一般情况下labview是不需要调用DLL的。
DLL分两类,一类是API,一类是自己创建的DLL。
这两者本质都一样,但是调用一般来说是有区别的。
R) {$ f0 x7 @3 B 要调用DLL必须要有DLL,也就是所谓的路径。
这个一般不会出错的,不用解释了。
其次是选择函数,这个也不难。
线程一般选择UI线程,任意线程的DLL和UI线程DLL有颜色上的区别,其次在源代码中也有区别(这个不是DLL调用失败的主因,不用过多纠缠)。
接下来是调用设置:Ccall和standcall。
一般来说,windows API采用的是standcall,自己创建的采用Ccall。
两种调用区别在于参数进入栈的顺序不同。
这里随便说一下,栈由系统自动分配内存,类似C语言的int a都是分配的栈内存;new分配的是堆内存。
栈内存由系统负责回收,堆内存一般程序员负责释放,所以要注意系统的内存泄漏。
labview的初始化数组也会分配内存,所以不宜频繁调用。
8 h. p8 V/ m, J- D4 X 接下来是最重要的参数配置,也是最复杂的参数配置。
首先要知道函数原型,C语言里面叫导出函数类。
一般在include文件下面的头文件里面。
下面是一个典型的函数原型:extern "C" ZLDS10X_DLL_API SENSOR_HANDLE ZLDS10X_DLL_stdcall ZLDS10X_Open(char * portnum , int baud , int timeout , int address); 值得注意的是,很多人会把函数原型看错。
LabVIEW动态链接库DLL基础知识
0.参考示例:LabVIEW1.调用库函数节点2.配置参数2.1.返回参数类型:有Void,Numeric和String三种,如下图所示。
(1)VoidVoid is only available for return type and is not available for other parameters. Use Void for the return type if your function does not return any values.Even if the function you call returns a value, you can use Void for the return type. When the function returns a value and you select Void as the return type, the value returned by the function is ignored.(2)Numberic(pointer-sized integer),以winpcap.dll为例,如下图。
另外数据类型中的“指针大小整型”帮助文档的解释如下:(3)String目前还没碰到过,等遇到时再补充。
2.2.输入(出)参数其类型共有9种,常用的有数值、数组、字符串和匹配值类型。
2.2.1.数值需要注意的是,其传递选项有“值”和“指针”两种,分别对应值传递和指针传递。
a. 数据类型为int32函数原型为void LVint32(int32 input, int32 *output);本函数计算输入值的平方,然后将结果显示在“输出”中。
返回类型为void,input类型为int32,值传递output类型为int32,指针传递注:如将结果返回至某个控件,该控件本身即可为返回数据提供必要的内存空间。
b. 数据类型为float64函数原型为void LVfloat64(float64 input, float64 *output);本函数计算输入值的平方,然后将结果显示在“输出”中。
Labview调用DLL时接口类型匹配简介
调用DLL时接口类型匹配简介1、数值类型Data type:选择数值的类型。
Pass:选择采用传值方式还是传引用方式。
2、布尔类型a. 方法一:使用数值类型作为输入输出。
在连接输入的时候将布尔值转换为数值。
在输出的时候使用判断是否等于0来获取布尔值。
b. 方法二:类型中选择“Adapt to Type”(匹配至类型),数据格式选择“Handles by Value”。
在程序中,直接接入布尔数据,接线端会自动变为布尔类型。
3、字符串类型由于需要为字符串分配内存空间,对于字符串输出,需要为其在输入的一端接入初始字符串。
当初始字符串长度不够时,程序会因为内存内存越界而出错。
4、一维数值数组a. 当生成dll的时候采用“Array Data Pointer”时,参数中会自动增加一个“len”的数值参数:在“Length Input”中会默认设置为此参数值,用以表示数组的长度。
在调用此dll时,对于数组类型,在“Array format”中设置为Array Data Pointer。
同时需要将数组的长度值接至len端上:b. 当生成dll的时候采用“Array Handle Pointer”时,这时输入输出对应的是指向句柄的指针,可执行系统级的操作。
程序可以自动获取数组的长度,所以将不会有“len”参数出现。
在调用此dll时,在“Array format”中选择Array Handle Pointer即可。
在程序中不再需要为数组指定长度。
5、二维数值数组当参数为二维数值数组的时候,在LabVIEW下生成dll时类型只能选择为指向句柄的指针。
调用的方法与4.b类似,只需将“Dimensions”设置为2即可:6、不包含数组的簇数据类型设置为“Adapt to Type”,数据格式设置为“Handles by Value”。
将簇直接接入即可。
7、包含数组的簇、调用方法与调用一维数组类似。
a. 当参数类型为句柄时(一般情况下这种dll是不能使用LabVIEW生成的),在调用dll 的时候,类型设置与不含数组的簇一样:由于需要为这种簇分配内存空间,所以需要将簇的输出接入对应的数据:b. 当参数类型为指向句柄的指针时,将数据格式设置为“Pointers to Handles”。
第8章 LabVIEW程序生成规范
8.2.4 Zip压缩文件发布
压缩文件用于以单个可移植文件的形式发布多 个文件或整套LabVIEW项目
一个Zip文件包括可发送给用户使用的已经压缩 了的多个文件,可用于把驱动程序文件或已选 定的源代码文件发给其他LabVIEW用户使用
37
8.2.4 Zip压缩文件发布
配置Zip压缩文件发布
Windows共享库以.Dll为扩展名,Mac OS共享库 以.framework为扩展名,Linux共享库以.so为 扩展名
31
8.2.3 共享库发布
Windows共享库的创建
共享库通常以某个函数为源文件,极少涉及显示面板 创建简单应用程序 创建一个只具备两个数加、减、乘、除四种运算过程的运算器 定义输入/输出连接端子
Zip压缩文件了
41
8.2.5 Windows安装程序发布
Windows安装程序用于发布独立应用程序、共享 库和通过应用程序生成器创建的源代码发布等
创建Windows安装程序必须首先创建独立应用程 序、共享库或源代码发布
Байду номын сангаас42
8.2.5 Windows安装程序发布
配置Windows安装程序发布
在程序生成规范新建选项中选择“安装程序” 在弹出的“我的安装程序 属性”对话框中配置源代码发布相关参
数
43
8.2.5 Windows安装程序发布
“源文件”页 配置安装程序的源文件
44
8.2.5 Windows安装程序发布
34
8.2.3 共享库发布
定义VI原型 在“源文件”页中选择需要导出的函数将弹出“定义VI原型”对话框
35
8.2.3 共享库发布
“定义VI原型”配置 当定义了VI的端口后,LabVIEW会自动识别各个端口的数据类型 ,并创建相应的接口。 上图中保持默认值不变,当然也可以设置X和Y以指针(或者是地 址)方式传递,而不以值方式传递。 此外,一个DLL文件中也可以包含多个函数。
Labview中dll 制作和使用
Labview 下建立dll及其使用1、建立动态连接库的C代码调用1.1建立函数原形1)后面框图程序中,调用CLF节点;2)配置一个函数原形,比如long add2(long a,long b),设置调用规程为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个函数,add 和mult2./* Call Library source file */#include "extcode.h"extern "C"{_declspec(dllexport) long add2(long a, long b);_declspec(dllexport) long mult2(long a, long b);}_declspec(dllexport) long add2(long a, long b){/* Insert code here 加法*/return(a+b);}_declspec(dllexport) long mult2(long a, long b){return(a*b); /* 乘法*/}2、VC++中编译产生dll1)建立project ,file→new-> win32 Dyna,mic Link Library,输入工程名,选择an empty dll project;2)添加code.cpp到source file,添加extcode.h platdefines.hfundtype.h到head files里面;3)设置dll参数project→settings→c/C++中设置参数:category:code generation ;根据函数要求可以选择1Byte\4 Byte\ 8Byte,采用默认就可以;multithread;其余默认可以;自己也可以微调;4)Build Build code.dll;5)Ok!3采用Labview测试验证。
使用LabVIEW生产dll
如何使用LabVIEW生产dll文件
在此需要首先说明的是dll的调用就是子函数的调用,所以首先要明白在LabVIEW中子VI 的含义,如果大家知道了什么是子VI那么咱们就开始了。
第一步,建立一个项目,这个比较简单就不附图了。
第二步,在已经建立的项目里面建立一个简单的VI作为子VI,在此一定要将其输入和输出端标出,如图1所示
注意右上角的连接处。
第三步,在程序生产规范里面选择新建——共享库,得到如图2所示的界面
第三步,定义VI原型,在第二步执行之后会出现一个属性对话框选择源文件就可以将需要
生产dll的文件加载进去,同时生产定义VI原型对话框,查看一下是否和你的原VI一致。
第四步,点击生产dll就可以了。
置于如何调用dll网上有很多例子,这里只附图说明一下。
双击调用函数库节点出现下图
选择需要调用的dll的位置以及函数名称,有些dll还需要你自己配置参数,这里需要说明一下这些参数最好都是英文的。
最后在输入输出端连线就可以了。
LabView动态创建数据源LCL
Labview动态创建数据源在LabView中LabSQL操作数据库是通过ODBC连接,用户需要在ODBC中指定数据源名称和驱动程序。
因此在使用LabSQL之前,首先需要在Windows操作系统中的ODBC 数据源中创建一个DSN(Data Source Name,数据源名)。
LabSQL与数据库之间的连接就是建立在DSN 基础之上的。
但是这种过于麻烦,在生成操作程序时不便于安装,于是需要一种可以在LabView中直接创建数据源的方法。
通过资料查证和编程验证确定了在LabView中更改注册表的方法可以实现动态创建数据源。
一、首先了解手动配置数据源的步骤:1、打开控制面板—>管理工具—>数据源(ODBC),如下图所示:2、开始创建数据源:数据源德驱动有很多种类,创建一个数据源需要确定数据源名称DSN(data source name),驱动程序,数据源位置等,在数据源管理器中的操作步骤是:点击添加,选择数据源驱动程序,这里选择Microsoft Access Driver(*.mdb),如下图所示:点击完成,然后输入数据源名称也就是DSN了,如下图所示:然后点击选择,指定数据库文件的位置,这里选择文件myfirst.mdb,然后点击确定,再确定就创建完成了,可以在ODBC数据源管理器中看到新建了数据源demo。
二、下面开始验证数据源和注册表的关系,点击“开始”,在“运行”中输入“REGEDIT”打开注册表,刚才创建的是用户DSN所以注册表位于HKEY_CURRENT_USER下,打开[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI]可以看都下面有很多项,如图所示:可以看到这些项中有,“myDB”,“myfirstdatabase”这些名字均在图1的数据源管理器中出现,也就是这些都是已经建立好的数据源,同时也到看到“demo”数据源。
下面有一个ODBC Data Sources数据源项,打开可以看到里面有很多项目,刚才的数据源名称也存在,其实,这个项表示数据源所使用的驱动程序,如打开“demo”可以看到它的驱动程序为“Microsoft AccessDriver(*.mdb)”。
VC调用labview生成的DLL
VC调用LabVIEW生成的DLL文件刚才介绍了LabVIEW调用DLL文件的方法,使用VC调用LabVIEW生成的DLL 文件也很简单。
还是以之前生成Scale 的DLL文件为例,不同的是采集电压程序使用的是C语言的例程,但和LavVIEW实现的功能相同。
首先将先前生成Scale DLL文件时,路径下所有的文件全部复制粘帖到C语言例程的文件夹下。
打开连续采集程序,点击状态栏的Project——Settings,在Project Settings对话框中加载入Scale.lib的静态链接库。
在程序中键入#include "Scale.h",以便引入该DLL函数。
下面是C程序的代码,功能是有限点采集电压,通过Scale.dll文件实现采样值放大10倍的功能。
加粗部分是因为调用DLL文件所做的改动。
#include <stdio.h>#include "NIDAQmx.h"#include "Scale.h"#define DAQmxErrChk(functionCall)if( DAQmxFailed(error=(functionCall)) ) goto Error; elseint main(void){int32 error=0;TaskHandle taskHandle=0;int32 read;float64 data[1000];char errBuff[2048]={'\0'};int i=0;double x10=0;/*********************************************/// DAQmx Configure Code/*********************************************/DAQmxErrChk (DAQmxCreateTask("",&taskHandle));DAQmxErrChk(DAQmxCreateAIVoltageChan(taskHandle,"Dev1/ai0"/*Config correct device*/,"",DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Volts,NULL));/ /DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_V al_FiniteSamps,1000));/*********************************************/// DAQmx Start Code/*********************************************/DAQmxErrChk (DAQmxStartTask(taskHandle));/*********************************************/// DAQmx Read Code/*********************************************/DAQmxErrChk(DAQmxReadAnalogF64(taskHandle,1000,10.0,DAQmx_Val_GroupByChannel,dat a,1000,&read,NULL));printf("Acquired %d points\n",read);for(i=0;i<1000;i++){Scale(data[i], &x10);printf("the %d Value is : %f \n",i,x10);}Error:if( DAQmxFailed(error) )DAQmxGetExtendedErrorInfo(errBuff,2048);if( taskHandle!=0 ) {/*********************************************/// DAQmx Stop Code/*********************************************/DAQmxStopTask(taskHandle);DAQmxClearTask(taskHandle);}if( DAQmxFailed(error) )printf("DAQmx Error: %s\n",errBuff);printf("End of program, press Enter key to quit\n");getchar();return 0;}所以,使用LabVIEW不仅可以方便地调用各种编译软件生成的DLL文件,自己也能生成DLL文件供其他编译软件调用。
labview中model interface 的用法
labview中model interface 的用法
LabVIEW中的Model Interface是用于将仿真模型和控制算法集成到LabVIEW环境中的一个工具包。
使用Model Interface,用户可以方便地将Simulink模型代码生成为DLL文件,并将其导入到LabVIEW中进行调用。
这一过程通常涉及以下几个步骤:安装Model Interface Toolkit (MIT):这是一个附加软件,需要与VeriStand Model Framework一起使用。
安装VeriStand时,MIT模块会一并安装。
创建Simulink模型:在MATLAB中建立所需的Simulink模型,并进行相应的设置。
生成DLL文件:利用Model Interface将Simulink模型转换为DLL文件。
这通常在MATLAB环境中完成,通过Model Interface Toolkit的相关功能来实现。
在LabVIEW中调用DLL:确保MIT模块已正确安装后,在LabVIEW中通过控制与仿真菜单下的Model Interface选项来调用生成的DLL文件。
LabVIEW 2020社区版本引入了接口类型(Interfaces)这一新编程技术,为LabVIEW编程者提供了更高层次的抽象工具和多继承的代码开发能力。
综上所述,Model Interface的使用可以帮助工程师和研究人员将复杂的仿真模型和控制算法与LabVIEW系统集成,从而实现更加灵活和高效的测试、验证和控制系统设计。
在实际应用中,这种集成可以大大提高开发效率,特别是在需要进行实时仿真和控制的场景中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何使用LabVIEW生产dll文件
在此需要首先说明的是dll的调用就是子函数的调用,所以首先要明白在LabVIEW中子VI 的含义,如果大家知道了什么是子VI那么咱们就开始了。
第一步,建立一个项目,这个比较简单就不附图了。
第二步,在已经建立的项目里面建立一个简单的VI作为子VI,在此一定要将其输入和输出端标出,如图1所示
注意右上角的连接处。
第三步,在程序生产规范里面选择新建——共享库,得到如图2所示的界面
第三步,定义VI原型,在第二步执行之后会出现一个属性对话框选择源文件就可以将需要
生产dll的文件加载进去,同时生产定义VI原型对话框,查看一下是否和你的原VI一致。
第四步,点击生产dll就可以了。
置于如何调用dll网上有很多例子,这里只附图说明一下。
双击调用函数库节点出现下图
选择需要调用的dll的位置以及函数名称,有些dll还需要你自己配置参数,这里需要说明一下这些参数最好都是英文的。
最后在输入输出端连线就可以了。