先看一下下面的程序框图。

Picture
      从程序框图上,我们猜测程序员的目的是把前面板上一些重要控件的引用打包成簇,然后在各个子VI中使用该簇传递所需控件的引用并通过引用修改控件的值或者其它属性,如颜色等等。

      我们知道,获取一个VI中控件的引用,在VI本身中是非常容易的,直接创建这个控件的引用就可以了,但是在在其它VI中获取另一个VI中控件的引用是比较 复杂的。理论上说,通过应用程序的引用,可以获取VI的引用。通过VI的引用可以获取VI前面板控件的引用,对于簇和选项卡这样的控件,控件本身是嵌套 的,获取其中单个控件的引用该更是非常非常困难。

      区别不同控件的重要标志是控件的标签(LABEL),相当于变量名,知道控件所属VI和LABEL名称,通过遍历的方法,可以获取控件的引用,如下图所示。

Picture
       上图可以获取前面板中单个控件的引用,但是如果大量频繁操作,如果控件众多,且有嵌套,比如簇中的控件,则必须首先得到簇的引用,然后再次循环遍历,找到特定控件的引用。

       如果只需要读取或者修改控件的值,则不需要查找控件的引用,通过VI方法节点可以直接操作,如下图所示。

Picture
      在具体运用中,一般我们只是对前面板上的特定控件进行频繁操作,这种情况下,我们需要知道的只是特定控件的引用,而不是全部。

      使用用户标签(TAG)是解决类似问题的比较好的方法,我们知道,VB控件中可以定义具体的TAG,用来表示控件的特定信息,LABVIEW中的VI和控件也是如此。LV提供了这样的函数,只是没有列入控件选板和文档中。几个重要的用户标签(TAG)VI需要自己查找,其所在文件夹如下图所示。

Picture
      这个文件夹中共包括六个V I,分为两组:VI标签和控件标签。
      VI标签函数,可以设置、获取和移除VI TAG.控件标签函数可以设置、获取和移除控件标签.对于固定不变的信息,可以直接存储在VI中,这种情况下,在后续操作中,只要读取TAG信息就可以了。

      标签中存储的是变体类型数据,因此可以存储各种数据类型。本文第一个图中存储的控件引用,可以直接存储在控件的用户标签(USER TAG)中,这样就不需要在各个VI中通过端子传递引用数据了,如下图所示。

Picture
      在其它VI中只要获取主VI的引用和指导USER TAG名称就可以读取这些特定的控件引用并进行操作了,如下图所示。

Picture
Picture
labview7i
1/24/2010

这个真的很好!很有含金量!

Reply



Leave a Reply.