LABVIEW深入探索---reference(参考)和refnum(参考号)

2015-08-26 10:04:43   来源:eefocus   

关键字: LABVIEW  reference  refnum

看到今天的评论,建议我写一点有关REFERENCE的文章,的确早就想写点这部分内容,但是不太容易,因为NI这方面的中文资料很少,我甚至无法准确地翻译REFERENCE。

REFERENCE的常规翻译是参考,目前国内有关LV的书籍也是这样翻译的,但是从我个人理解还是翻译成引用比较好。

为了准确理解引用的概念有必要先解释一下C语言中指针的概念。

int var;
int *pVar;
pVar=&var;


当我们声明了var整型变量后,在计算机的内存中就分配了四个字节的连续内存空间(与编译器有关,早期是两个字节),pVar是一个指向整型变量的指针,它本身就是32位整型数,自然也占四个字节的内存空间,不过这四个字节的内容是VAR的内存地址。

LV的参考是什么那?我个人理解就是对象的指针。我在一篇文章中提到,LV本身是基于数据流的,不过它的前面板控件却是典型的面向对象的类的继承关系。LV的对象就是指向各种类的指针(当然不仅仅是控件,菜单,文件等也是用参考进行参数传递的)。


C语言的指针有两种情况,一是未指向任何变量的指针( int *pVar,此时,只是定义了指针,未指向任何变量或者对象),二是指向了特定的变量或者对象(pVar=&var)

实际上,LV的参考也分成这两种情况,我们可以通过两种方式来创建控件的参考。




我们以CONTROL REFERENCE为例,当我们在前面板生成这个控件的时候,该控件未指向任何特定的控件,甚至未指向任何特定的数据类型,比如BOOLEAN ,NUMERIC等等。

从C语言的角度,更像定义了一个void *pVar;(当然,它已经指定的范围,是控件的参考)

我们可以认为它指向的是控件的基本类,但是是未初始化的,未指向特定对象。

LABVIEW的每一个REFERENCE都有一个编号,称为REFERENCE NUMBER,简写RefNum,RefNum是对象(可能是控件,面板,文件,菜单等)的唯一标识符号,这个标识符号如果理解成指针应该是个I32表示的内存地址。

对于C语言,未初始化的的指针一般让它指向0,看LV是否如此那?




对于前面两个,控件参考和菜单参考,因为未指向任何特定对象,所以他们的REFNUM的值是0,而下面的NUMERIC REFNUM,因为控件本身已经存在了,因此它的值是存在的,这和C语言是类似的。

一个未指向任何对象的指针称作空指针,那么未指向任何对象的参考也可以称作空参考。



可以看出,未指向任何对象的参考号REFNUM的值是0,LV判断它是一个空的或者非法的REFNUM.

对于两个指向同一特定控件的REFERENCE,它们的REFNUM是相同的。



由此可以得出结论,在加载前面板后,控件对象已经实际存在,指向同一控件的参考,他们的参考号是相同的。得到控件的参考号就可以控制控件的所有属性,如是否可见,闪烁等。
[1] [2]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

推荐阅读

编辑:什么鱼
本文引用地址: http://www.eeworld.com.cn/Test_and_measurement/2015/0826/article_12932.html
[发表评论]
[加入收藏]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]
小广播
每日新闻
最热点击
本周热门资源推荐
EEWORLD独家
论坛精华
精选博文