2011年5月21日,第一稿
2011年8月14日,第二稿
2011年8月14日,第二稿
6.4 VI引用
同样,我们通过创建的方法所获得的VI引用,只针对本VI的操控。使用打开VI引用函数可以打开其它VI的引用(包括本机或其它计算机上VI的引用)。现在我们就看看打开VI引用函数。
6.4.1 打开VI的引用
通过打开VI引用函数,我们就可以操控其它的VI。具体操作是:
在程序框图中,鼠标右键空白处,在弹出的快捷菜单中选择:
》函数
》编程
》应用程序控制
》打开VI引用
将打开VI引用函数拖拽到程序框图中,参见下图中红色框内的部分。
在程序框图中,鼠标右键空白处,在弹出的快捷菜单中选择:
》函数
》编程
》应用程序控制
》打开VI引用
将打开VI引用函数拖拽到程序框图中,参见下图中红色框内的部分。
运行上图中的程序,结果会在桌面上打开一个全局变量(已存在)的前面板,且令打开的前面板居中显示。
通过这个实例是想说明,使用打开VI引用函数不仅可以打开VI,还可以打开全局变量引用以及自定义控件引用(指定自定义控件的路径即可)。
注意:打开VI引用函数需与关闭引用函数配对使用。
我们再看一个打开另一台计算机上VI的例子。
在Windows计算机的C盘下,已经放置了一个名字为:OK.vi的VI。现在我们希望通过另一台Apple电脑来打开它。Apple电脑下设计的程序框图,参见下图。
通过这个实例是想说明,使用打开VI引用函数不仅可以打开VI,还可以打开全局变量引用以及自定义控件引用(指定自定义控件的路径即可)。
注意:打开VI引用函数需与关闭引用函数配对使用。
我们再看一个打开另一台计算机上VI的例子。
在Windows计算机的C盘下,已经放置了一个名字为:OK.vi的VI。现在我们希望通过另一台Apple电脑来打开它。Apple电脑下设计的程序框图,参见下图。
1、通过打开应用程序引用打开另一台计算机上的应用程序引用
2、通过应用程序的引用再打开VI(OK.vi)的引用
3、通过VI的方法节点,打开OK.vi的前面板,并使其居中
4、关闭引用
程序在Apple电脑上运行,我们会看到另一台Windows电脑上的OK.vi突然被打开,并居中显示。如果你不断的打开和关闭这个VI,你的同事真的可能会感到莫名奇妙。这有些象黑客,前提是那台计算机的VI服务器允许你访问(它的LabVIEW必须是打开的)。
6.4.2 VI的动态调用
通常在我们编程过程中,放置在程序框图中的VI都属于VI的静态调用。这些静态调用的VI当我们打开引用程序时,所有静态VI都会导入内存()包括它们所使用的子程序。
如果有的静态VI占用内存很大且又不经常使用,我们可以采用VI动态调用的方法,也就是在该VI使用时调入,执行完成后自动清除该VI。这样就可以解决内存被大量占用的问题。
现在,我们设计一个程序命名为:查看内存中的VI.vi。它的程序框图和前面板以及运行结果,参见下图所示。
如果有的静态VI占用内存很大且又不经常使用,我们可以采用VI动态调用的方法,也就是在该VI使用时调入,执行完成后自动清除该VI。这样就可以解决内存被大量占用的问题。
现在,我们设计一个程序命名为:查看内存中的VI.vi。它的程序框图和前面板以及运行结果,参见下图所示。
从该程序的运行结果来看,内存中只有一个VI,也就是我们现在所使用的查看内存中的VI.vi。
假如我们随便打开一个范例VI,TDMS-快速读取数据(时域),查看结果参见下图所示。
假如我们随便打开一个范例VI,TDMS-快速读取数据(时域),查看结果参见下图所示。
保留查看内存中的VI.vi这个VI,以后用来查看内存中的VI。
6.4.3 动态调用VI方法之一——通过引用节点调用
使用通过引用节点调用VI,可以实现VI的动态调用。但是,需要注意是它所调用的VI必须是严格类型VI。关于VI的类型我们在2.6.2节已经做过介绍。
我们还是先看看这种动态调用的方式,假如我们有一个字体设置.vi,参见下图。
我们还是先看看这种动态调用的方式,假如我们有一个字体设置.vi,参见下图。
现在我们通过引用节点来调用这个VI。参见下图。
我们期待在VI(通过引用节点调用VI)的前面板上显示版本,上图中通过动态调用字体设置.vi来实现。
1、打开VI引用
给出需要被调用字体设定.vi的路径
将字体设定.vi拖拽到“类型说明符VI引用句柄“处,建立连线板关系(会同时出现在通过引用节点调用中)
2、连接通过引用节点调用
创建版本字符串的引用,连接到“通过引用节点调用”的连线端
3、关闭引用
这种动态调用的数据流运行机制将是执行完被调用VI后结束。这种动态调用可以实现与被调用VI间的数据交换,这种方式更适用于某些数据的计算处理,比如误差拟合计算、滤波器设计、频谱分析等插件。
通过运行查看内存中的VI.vi其结果参见下图所示。
1、打开VI引用
给出需要被调用字体设定.vi的路径
将字体设定.vi拖拽到“类型说明符VI引用句柄“处,建立连线板关系(会同时出现在通过引用节点调用中)
2、连接通过引用节点调用
创建版本字符串的引用,连接到“通过引用节点调用”的连线端
3、关闭引用
这种动态调用的数据流运行机制将是执行完被调用VI后结束。这种动态调用可以实现与被调用VI间的数据交换,这种方式更适用于某些数据的计算处理,比如误差拟合计算、滤波器设计、频谱分析等插件。
通过运行查看内存中的VI.vi其结果参见下图所示。
通过查看,我们发现内存中只有两个VI,而被动态调用的VI并不在于内存之中。
6.4.4 动态调用VI方法之二——通过调用节点调用
动态调用的另一种方式就是通过调用(方法)节点来实现VI的动态调用。我们先看看这种动态调用方式的基本特点。
适合于任何类型的VI
可以用来控制程序的运行流程
实际上在程序设计中这种动态调用方式更常见。下面我们就分别来进行讨论。
主——从,方式的动态调用
主——从,方式的运行机制是:首先主VI动态的调用从VI,即打开从VI的前面板并运行从VI,关闭动态调用的参考(从VI一直运行),然后通过方法节点关闭主VI。
这种运行方式意味着整个程序运行的控制权将从主VI通过动态调用后转交给从VI。这种情况多用于各程序之间的连接调用。
下面看一个例子。
比如我们有一个Top VI.vi,运行时前面板参见下图。
适合于任何类型的VI
可以用来控制程序的运行流程
实际上在程序设计中这种动态调用方式更常见。下面我们就分别来进行讨论。
主——从,方式的动态调用
主——从,方式的运行机制是:首先主VI动态的调用从VI,即打开从VI的前面板并运行从VI,关闭动态调用的参考(从VI一直运行),然后通过方法节点关闭主VI。
这种运行方式意味着整个程序运行的控制权将从主VI通过动态调用后转交给从VI。这种情况多用于各程序之间的连接调用。
下面看一个例子。
比如我们有一个Top VI.vi,运行时前面板参见下图。
下面来看看它的程序框图,参见下图。
分析该程序框图:
当然,我们还需要有一个应用程序.vi,很简单仅仅用了一个While循环,参见下图。
- For循环主要为演示所用,与动态调用无关
- 创建被动态调用VI(应用程序.vi)的路径
- 根据路径打开被调用VI的引用
- 设置调用节点FP.Open(前面板有效、标准状态)
- 设置调用节点Run VI(无须等待被调用VI执行结束、自动销毁打开的引用)
- 通过调用节点关闭本VI
- 错误处理
当然,我们还需要有一个应用程序.vi,很简单仅仅用了一个While循环,参见下图。
运行Top VI程序10秒后,它动态调用应用程序.vi,并将Top VI的前面板关闭。应用程序VI将一直运行,直到按下[演示停止]。当然,也可以通过动态调用其它的VI,使程序持续执行。
程序运行的前后可以使用查看内存中的VI程序查看内存,实际情况这里就不给出了。
主——从——主,方式的动态调用
这种方式的运行机制与通过引用节点调用的方式类似,动态调用某VI直到它结束后返回主VI。比如我们有一个应用程序菜单,我们就可以使用这种方式来控制选择不同的应用程序运行。
下面看看Top VI-2.vi的程序框图,参见下图。
程序运行的前后可以使用查看内存中的VI程序查看内存,实际情况这里就不给出了。
主——从——主,方式的动态调用
这种方式的运行机制与通过引用节点调用的方式类似,动态调用某VI直到它结束后返回主VI。比如我们有一个应用程序菜单,我们就可以使用这种方式来控制选择不同的应用程序运行。
下面看看Top VI-2.vi的程序框图,参见下图。
- For循环主要为演示所用,与动态调用无关
- 创建被动态调用VI(应用程序.vi)的路径
- 根据路径打开被调用VI的引用
- 设置调用节点FP.Open(前面板有效、标准状态)
- 将主VI的前面板隐藏
- 设置调用节点Run VI(等待被调用VI执行结束、自动销毁打开的引用)
- 通过调用节点关闭被调用VI
- 恢复主VI前面板显示
- 演示用对话框
- 错误处理
给出示例的程序代码,供下载。
| 2010.rar | |
| File Size: | 37 kb |
| File Type: | rar |














