您的位置 首页 发布

LabVIEW程序设计形式(五)—生产者/顾客形式(3)

简单而言,动态调用指的是通过程序控制另外一个程序的运行、停止、赋值和获取值等。LabVIEW提供了多种动态调用的方式,从底层而言是通过VI

简略而言,动态调用指的是经过程序操控别的一个程序的运转、中止、赋值和获取值等。LabVIEW供给了多种动态调用的办法,从底层而言是经过VI Server技能完成的。
图 31所示为LabVIEW中的Application Control选板,动态调用所运用的节点都坐落这个选板。当调用一个在硬盘、内存乃至是网络途径上的vi时,首要要运用Open VI Reference以将该VI载入内存并获取VI的“句柄(Reference)”;然后再运用该句柄进行其它的操控操作;最终再封闭该VI的句柄防止内存走漏,这就完成了一次对VI的调用。


图 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的输入输出接口,不然无法进行动态调用。


图 32 VI的动态调用
Open VI Reference的途径输入是一个多态的输进口,也能够运用String输入,如图 33所示。此刻被调用的VI有必要在内存中,且输入的是被调用VI的文件名。值得一提的是这种“文件名”调用办法在可履行程序中是无法被调用的,因而主张最好选用途径的调用办法。


图 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设置为可重入状况。


图 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的输入输出接口。


图 35 VI Method
图 36是该运用“特点节点和办法”完成动态调用的一个实例。在大多数运用程序发动时会显现一个发动画面用来显现版权、开发单位、软件版别等信息,等候2秒之后封闭发动界面并发动运用程序主界面。图中运用了动态调用的办法发动主程序(Main.vi)并使主程序独立运转,首要运转程序后设置2秒钟的延时;其次,将发动画面的界面设置为“躲藏”(并没有退出内存,仅仅躲藏了前面板),而且运用Open VI Reference获取VI的句柄;然后运用FP.Open特点翻开主程序的前面板(仅仅翻开了前面板并没有运转);运用Run VI办法运转主程序,将Wait Until Done设置为false,这样就能够确保被调用VI的独立运转;最终,封闭当时VI的前面板。


图 36 VI的动态调用
经过Highlight东西看出该VI的运转是独立的,并没有等候Main.vi运转完毕才持续履行。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/212347.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部