现在我们来谈谈输入控件和显示控件的一些特点。因为它们在图形化代码中起着极其重要的作用,同时它们也是数据流编程中一个非常重要的环节。

当然也是想借此机会解答在上个单元最后部分所提出的一些问题。
将输入控件和显示控件单独拿出来说事,是因为控件选版上还有另一类控件——修饰控件(Decorations)。显然修饰控件与图形化代码和数据流间毫无任何关联。而在下面在谈到输入控件和显示控件的共有特性时,我们将使用“控件”这个词来表示二者。

控件的基本特征
  • 控件是前面版中对象的一个实例:控件是前面版中某个对象的实例,它本身具有名称、形状、大小、色彩等等属性。而端子则是控件在程序框图中的映射或者说是前面板中某个对象在程序框图上的映射。控件在前面板上可以隐藏(设定为:可视/不可视),而在程序框图上的映射则一直是可视的。
  • 控件类似一个容器:它具有属于自己的数据类型,并只接受或发出相对应数据类型的数据。大多数控件有保存、纪录数据的功能,但容器控件除外(它仅有自己的数据类型,并不能纪录保存数据)。其中数据是控件中最重要的参数,也是我们最感兴趣的参数。
  • LabVIEW中包含的所有数据类型或数据结构都是通过控件来定义和表现的。所以,图形化程序中定义数据类型是通过控件来实现的。数据结构定义了复杂的、特殊的数据类型(如波形数据)。控件具有确定性的数据类型或数据结构。
  • 控件不是C语言中的变量:它是一个复杂的结构体,但它包含数据在内。我们可以通过属性节点来查看它的数据。
  • 控件具有指向性:由于控件具有指向性(对偶性),所以可以选择设定是输入控件或是显示控件。控件之所以具有指向性完全是由于数据流编程方式的需要所致。
下面我们讨论上面的一些基本观点,主要围绕在:控件是否类似于C语言中的变量和LabVIEW中有没有变量这两个方面。
 
控件不是C语言中的变量

这里面包含了两层意思:
第一、C语言与LabVIEW图形化语言本质上不同,所以只能类比不能一一对比。
第二,C语言中涉及到数据就定其为变量(这点我是自己感觉的,不一定正确),而LabVIEW中数据只体现在控件中,而控件并不是变量。控件只纪录保存数据,如果要获得控件中的数据最基本的方法是通过属性节点(不包含在一个VI内的还需要通过控件的引用来获得)。
 

LabVIEW中的有变量吗?

回答是肯定的,在同一个VI中使用的局部变量、在不同VI中实用的全局变量以及可在不同计算机上使用的共享变量就是LabVIEW中的真正变量。

大家应该注意到:无论是局部变量还是全局变量都是来自控件,也就是说只有通过控件来创建。所以我们说控件是数据的容器。

这里需要说明:共享变量我没有创建、使用过,所以没有更多的解释。但JKI在他的书中谈到,全局变量与共享变量相类似。
 
上面这些仅仅是我的个人观点,敬请指正!
 
讨论也可以在QQ群里进行!在我的个人主页上有我所在的5个群的QQ号。

 




Leave a Reply.