VI的类型和跨平台特性
扫描二维码
随时随地手机看文章
关于VI的类型,即便在帮助文件中,我们也没有见到更多的解释和说明。我们只是在帮助文件中看到过这样的说法:严格类型VI。与严格类型VI相对应的是通用VI。它们之间的区别在那里呢?
2.6.1 通用类型VI
我个人理解,所谓通用类型VI应该是这样一些VI,它们能够独立完成程序执行结果(独立完成或演示一个任务),换句话说,它并不需要与其它VI进行数据交 换,所以它们也不需要定义连线板。NI所提供的许多例程就是以这种形式出现的。例如,NI的例程:》分析与信号处理》电平测量》基本幅值测量,参见下图。图 2-24 通用VI的例子——基本幅值测量(没有定义连线板)通用类型VI最明显的标志就是没有定义接线板。例程是供我们学习和模仿的,甚至我们可以略加修改就可以在程序中使用这些例程。
2.6.2 严格类型VI
严格类型VI更多的应用是作为子VI来使用,通过连线板它可以与其它VI进行有效的交换数据。比如理想滤波器就是严格类型VI。而例2-1所创建的VI是 通用VI。函数选版上的内置VI都是严格类型的VI,因为它们可以被开发者所调用。熟悉和了解这些内置VI的功能和使用方法是必须要做的事情之一,最好的 学习方式就是不断的进行实践。
所谓严格类型VI就是指它连线板上接线端的数据类型是已经定义完成,其它与它相连接的接线端的数据类型必须与此保持一致。如果二者数据类型不匹配,开发环境将会报错,直观的表现就是无法连接。
通用VI和严格类型VI只是在VI的动态调用时才会区分。一般的情况下,我们不太关心VI的类型。
2.6.3 VI的使用
严格类型子VI被拖拽放置到程序框图上时称为VI的静态连接。图形化程序设计基本上采用的都是这种方式。比如将函数选板中的内置VI或使用者库中的VI直 接拖拽到程序框图上进行程序设计就是VI的静态连接。这些放置在程序框图上的子VI会随着导入时同时加载到内存中。比如例2-2层次结构中的所有子VI都 会随着理想滤波器VI的导入而被加载到内存中。
如果程序中所使用的VI较多,且有些VI很大并属于基本上不太常用的VI,为避免占用内存的使用或减少程序的导入时间,也可以进行VI的动态调用。所谓动态调用是指在程序运行需要时再调入,运行完成后从内存中将其清除。VI的动态调用与VI的类型也有一定的关联。
关于VI的动态调用将在VI服务中详细说明。
2.6.4 VI的跨平台
目前计算机使用的操作系统基本上有三种:Windows、Mac OS、Linux。NI为这三种操作系统平台都提供相应的LabVIEW版本。这就意味着,VI是可以跨平台使用的。
所谓的“跨平台”就是说:“无论在那个操作系统平台上用NI LabVIEW开发环境设计出来的VI,在其它平台的LabVIEW下都可以正常运行。人们也称这种方式为:可移植性。 VI的跨平台特性增强了设计的灵活性和应用的广泛性。
VI为什么能够跨平台使用呢?其实,VI的本质是一种中间语言代码。
中间语言代码——是在各个操作系统平台上生成的,由NI制定的标准化的(图形化)语言代码。有了这种中间语言代码就完成了“跨平台”的第一步,确保在不同平台的LabVIEW开发环境下都可以打开和运行。
可是我们知道不同平台的底层运行机制是不一样的,如何保证中间语言代码能够在不同平台下运行呢?
实现“跨平台”操作的第二步,就是通过各个平台下LabVIEW Run_time (Run_time运行时)将VI(中间语言代码)编译转换成各个平台下的可执行代码,这样VI才能够得以顺利运行。所以,对于不同的操作系统 LabVIEW Run_time是不同的,其实对于不同的LabVIEW版本其LabVIEW Run_time也是不同的。
由此可见,各个操作系统下的LabVIEW Run_time是保证VI是可以跨平台运行的关键。所以,当将图形化程序代码打包成可执行文件时,我们也会看到LabVIEW Run_time也是包含在内。
跨平台的好处是:如果你的用户(协作者)使用的是Linux版的LabVIEW,那你在MS操作系统下设计的VI同样可以发给他,或者说与他进行交流、沟通。在网络时代这是一个极为有用的特点。
在LabVIEW 2009中,这个特点有了进一步的发挥,将VI制作成图形片断用来进行交流和传递。过去我们进行VI传递采用的是传递VI的实体,根本无法直接看到其基本 内容。只有在NI LabVIEW打开它才能看到它对我们是否有用。现在通过图片可以直接看到它的内涵,只要有用可以直接下载后拖拽到我们的程序框图中。真的是太好了!