4.2.3 VI的类型
1、VI的类型介绍
前面我们提到过VI的类型,是在涉及到VI的动态调用时,我才看到VI分成通用VI和严格类型VI,见例图中的说法。可是我从来也没有看到通用VI和严格类型VI的定义或说明。
为了解答这个问题我开始分析VI和例程,慢慢地好像有些明白这两种VI的不同。
2、通用类型vi
通用类型VI是不能作为子vi来使用的,原因就是我们没有对它进行类型定义(除非你将它定义为严格类型vi)。通用类型VI通常是一个独立的VI(或者称 为:例程),它不能和其它VI进行直接的数据交换(可以通过全局变量来传递数据),可以独立作为一个程序运行,通常在导入时就将前面板打开。 为了更清楚的讨论这个问题,以LabVIEW开发环境中提供的一个例子来进一步说明。该例程可以通过“NI范例查找器”在路径为:硬件输入输出 /信号分析和处理/FFT和频率分析/Advanced Harmonic Analyzer Measurement.vi下获得。它的程序框图见下图。
下图是它的前边板图。
从“Advanced Harmonic Analyzer Measurement.vi”的程序框图可以看到,它是由3个子vi组成的。它到底是什么类型的VI呢?
从vi的“三件套”来看,它只有“连线板”没有进行过任何定义,那么应该是属于通用类型VI。
3、严格类型vi
严格类型vi就是可以被其它VI调用的子vi(静态链接子vi)。进一步说LabVIEW提供的“函数”选板上的 vi都是严格类型vi。严格类型的vi能够和其它VI通过连接板的定义与其进行直接的数据交换,既可以独立运行也可以作为子vi使用。下面我们在看一个例子,以“Advanced Harmonic Analyzer Measurement.vi”例程框图中的“Create Test Signal"vi为例,看看它的“三件套”是什么样的?
它的“连线板”是被明确定义过的,所以它可以作为子vi使用,它属于严格类型vi。
4、小结
我们了解清楚了什么是通用类型vi和严格类型的vi,二者最本质区别就是:是否明确地定义了“连线板”(意味着能否被作为子vi使用)。
通常通用类型vi我习惯称之为:例程,而严格类型的vi被称为: vi和子vi。
vi的类型在vi的动态调用时也会涉及到,后面会在次讨论、分析。