LabVIEW程序设计模式(五)—生产者/消费者模式(3)

发布者:美好的人生最新更新时间:2015-08-05 关键字:LabVIEW  程序设计模式  动态调用 手机看文章 扫描二维码
随时随地手机看文章
简单而言,动态调用指的是通过程序控制另外一个程序的运行、停止、赋值和获取值等。LabVIEW提供了多种动态调用的方式,从底层而言是通过VI Server技术实现的。
图 31所示为LabVIEW中的Application Control选板,动态调用所使用的节点都位于这个选板。当调用一个在硬盘、内存甚至是网络路径上的vi时,首先要使用Open VI Reference以将该VI载入内存并获取VI的“句柄(Reference)”;然后再使用该句柄进行其它的控制操作;最后再关闭该VI的句柄避免内存泄漏,这就完成了一次对VI的调用。

LabVIEW程序设计模式(五)—生产者/消费者模式(3)_LabVIEW程序的动态调用 - statemice - Change
31 Application Control选板
图 32是一个动态调用的具体实现代码,首先使用Open VI Reference获取被动态调用VI的Reference(例子中是C:average.vi);再使用Call By Reference Node节电动态运行该VI;最后关闭VI的Reference。在使用Call By Reference Node时需要事先指定被调用VI的输入输出接口,也就是说这种动态调用的前提是必须知道被调用VI的输入输出接口,否则无法进行动态调用。

LabVIEW程序设计模式(五)—生产者/消费者模式(3)_LabVIEW程序的动态调用 - statemice - Change
32 VI的动态调用
Open VI Reference的路径输入是一个多态的输入口,也可以使用String输入,如图 33所示。此时被调用的VI必须在内存中,且输入的是被调用VI的文件名。值得一提的是这种“文件名”调用方式在可执行程序中是无法被调用的,因此建议最好采用路径的调用方式。

LabVIEW程序设计模式(五)—生产者/消费者模式(3)_LabVIEW程序的动态调用 - statemice - Change
33 Open VI Reference的多态性
应用5
本例将使用LabVIEW的动态调用方式实现斐波那契数列(Fibonacci数列)。斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21…… 这个数列从第三项开始,每一项都等于前两项之和。在数学上表述为:f(n)=f(n-1)+f(n-2),其中n>=3,f(1)=f(2)=1。
显然这是一个比较熟悉的递归调用,但是在LabVIEW中似乎很难实现。由于LabVIEW不允许同名的VI同时在内存中,因此一个VI是无法VI调用本身的。但是,通过VI的可重入技术和动态调用技术却可以实现VI的递归调用。
图 34所示为Fibonacci数列在LabVIEW中递归的实现方式。case结构有两个分支,当n<=2时直接输出f(n)=1;当n>=3时,输出f(n)=f(n-1)+f(n-2)。此时需要把VI设置为可重入状态。

LabVIEW程序设计模式(五)—生产者/消费者模式(3)_LabVIEW程序的动态调用 - statemice - Change
34 Fibonacci数列
同理我们也可以使用这种递归的方式实现f(n)=n!的算法,从数学上可以写作f(n)=n*f(n-1),其中n>=1,f(0)=1。具体的实例将不再详述。此外,递归算法的效率比较低,在实际应用中应谨慎使用。
打开Highlight工具,在Call By Reference Node运行时,程序是处于等待状态的,只有被调用的VI运行完毕,主程序才会继续执行。这似乎无法解决在本节开头提到的问题,那么是否存在一种动态调用方式使被调用的VI与主VI之间分别独立运行呢?答案是肯定的。
VI本身是有很多的属性和方法的,如图 35所示。使用这些方法就可以动态控制VI的运行、停止和赋值,各个属性节点和方法的具体含义见LabVIEW的帮助文档。使用这种方式动态调用VI时,并不需要知道VI的输入输出接口。

LabVIEW程序设计模式(五)—生产者/消费者模式(3)_LabVIEW程序的动态调用 - statemice - Change
35 VI Method
图 36是该使用“属性节点和方法”实现动态调用的一个实例。在大多数应用程序启动时会显示一个启动画面用来显示版权、开发单位、软件版本等信息,等待2秒之后关闭启动界面并启动应用程序主界面。图中使用了动态调用的方式启动主程序(Main.vi)并使主程序独立运行,首先运行程序后设置2秒钟的延时;其次,将启动画面的界面设置为“隐藏”(并没有退出内存,只是隐藏了前面板),并且使用Open VI Reference获取VI的句柄;然后使用FP.Open属性打开主程序的前面板(只是打开了前面板并没有运行);使用Run VI方法运行主程序,将Wait Until Done设置为false,这样就可以保证被调用VI的独立运行;最后,关闭当前VI的前面板。

LabVIEW程序设计模式(五)—生产者/消费者模式(3)_LabVIEW程序的动态调用 - statemice - Change
36 VI的动态调用
通过Highlight工具看出该VI的运行是独立的,并没有等待Main.vi运行结束才继续执行。
关键字:LabVIEW  程序设计模式  动态调用 引用地址:LabVIEW程序设计模式(五)—生产者/消费者模式(3)

上一篇:LabVIEW程序设计模式(五)—生产者/消费者模式(4)
下一篇:LabVIEW程序设计模式(五)—生产者/消费者模式(2)_VI的可重入性

推荐阅读最新更新时间:2024-03-30 23:02

Labview生成exe可执行文件后相对路径无法使用的问题解决
在LabVIEW编程过程中,常常用到 当前VI路径 模块,将其和 创建路径 模块结合使用,就可以得到VI所在目录下的任何一个路径。然而当把vi文件打包成exe文件之后,因为labview回把exe视作是额外的一层目录,因此会导致依赖相对路径的各部分功能无法运转。 解决办法: 针对要生成exe的vi文件,将与相对路径相关的部分进行修改,在 当前VI路径 模块后面额外增加一个 拆分路径 模块,即比正常调试时多使用一个 拆分路径 ,如此生成后,只要将依赖相对路径的文件按照原先vi与文件的路径关系放置好,exe即可正常运行。 不过这样改过以后原先的vi中的相对路径就不对了,如果要一劳永逸,可以写一个简单的路径处理的子vi,放在 当前
[测试测量]
利用NI LabVIEW和PXI进行诊断声纳
The Challenge: 创建一个用于快速采集面向高级无损探伤应用的超声相控阵列回波信号的、可伸缩的、低成本系统。 The Solution: 利用NI PXI 控制器与机箱、多通道高速量化仪和可重新配置的I/O FPGA 实时控制器,以及NI LabVIEW 软件,设计一个具有严格定时与同步的可扩展的采集系统,以执行面向实时超声图像处理的相控阵列数据采集。 "PXI-5105 所提供的解决方案可以扩展以满足客户的需求,并具有提供简单的软件移植方式的记录功能。" 背景 超声相控阵列已经在医学图像处理领域内应用多年,但由于成本和复杂度的限制,该技术直到最近才在无损探伤(NDE)领域实现有限的成功应用。诊断声纳有限
[测试测量]
基于Labview的自动化精密阻抗分析系统构架
0 引言 随着科学技术的进步,各类实验研究的对象和方法也越来越复杂,相对应的实验系统及实验平台的复杂度也成几何增长。传统的人工操作在精确度及重复性上已远远不能满足要求。于是仪器设备的高度可集成化和可自动化已成为当代仪器必不可少的特性。但不同实验系统所要求的测量参数和步骤均不同,因此所需要的实验仪器系统同时也应该是可模块化并且可自主集成的。虚拟仪器(VIs)概念的提出使得可以利用传统的仪器设备来搭建不同的实验平台。并且由于VI是可编程和可程控的,这样可以依据不同的实验要求来改变实验平台的设计。基于VI的平台相比较于商业化的集成平台有着显著的优势:a.利用各类传统仪器即可搭建复杂的系统;b.平台的功能可以通过程序的改变而简单地变换;
[测试测量]
基于<font color='red'>Labview</font>的自动化精密阻抗分析系统构架
基于LabVIEW的多点温度采集实验开发系统设计
摘要:文中运用LabVIEW灵活的图形化可视化编程技术,将单片机课程与虚拟仪器技术相结合,设计了基于LabVIEW的多点温度采集处理演示及实验系统。该系统以DS18B20为温度传感器,利用单片机为核心控制器设计了多点温度数据采集下位机系统;利用LabVIEW设计出具有良好界面的多点温度数据采集上位机控制系统。该系统具有实时数据采集、数据显示、数据处理与分析、超限报警以及数据回放等功能。该系统交互性较好,可激发学生的学习兴趣和创新意识。 在对多类型、多通道信号同时进行检测和控制中,传统的测控系统能力有限。如何将计算机与各种设施、设备结合。简化人工操作并实现自动控制,满足社会的需求,成为一个很迫切的问题。温度检测是现代检测技术的重
[测试测量]
基于<font color='red'>LabVIEW</font>的多点温度采集实验开发系统设计
NI盛夏邀你去冰城共享高校电子教学盛宴
盛夏时节,酷暑难耐。美国国家仪器有限公司(National Instruments,简称NI)公司借暑假之际在凉爽的哈尔滨布置好大舞台,邀请全国电子和测试方面的老师和同学们共赴冰城参加一年一度的NI全国高校教师交流会,同时现场观摩第三届全国虚拟仪器大赛决赛的盛况。 两年一届的第三届全国虚拟仪器大赛决赛将于2015年7月13-14日在哈尔滨工业大学举行。全国虚拟仪器大赛始于2011年,由中国仪器仪表学会、教育部高等学校仪器类专业教学指导委员会主办,哈尔滨工业大学承办,美国国家仪器公司(NI)协办。作为由高校、行业协会和全球知名科技公司携手共建的拔尖创新人才的培养载体和卓越工程师的孕育平台,该大赛是全国工科类院校公认的
[测试测量]
CompactRIO和LabVIEW控制心脏模拟器设计
3D模拟器 挑战:开发一个逼真、可靠和可重新配置测试环境,帮助最新的心脏辅助装置进行提高和改善,而无需进行动物试验。 解决方案:利用NI CompactRIO创建一个独立的硬件在环(HIL)测试环境。该测试环境可以把人工机械心脏与循环血流模型相结合,创造一个包含真实血液动力环境的生动的解决方案。 CompactRIO提供了一个坚固、可靠、独立的平台,使我们的团队能够进行持续性测试,这在普通的计算机上是不可能实现的。 由心脏病导致的死亡占发达国家所有死亡人口的将近一半。心脏移植仍然是治疗心脏病最有效的方式,但捐献的器官远远及不上需求。为了解决这种不平衡情况,目前人们正在研究使用。利兹大学正在开发的一种新颖的机械人工心脏
[测试测量]
CompactRIO和<font color='red'>LabVIEW</font>控制心脏模拟器设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved