新聞中心

EEPW首頁 > 測試測量 > 設計應用 > LABVIEW深入探索---reference(參考)和refnum(參考號)

LABVIEW深入探索---reference(參考)和refnum(參考號)

作者: 時間:2017-01-09 來源:網(wǎng)絡 收藏
看到今天的評論,建議我寫一點有關REFERENCE的文章,的確早就想寫點這部分內容,但是不太容易,因為NI這方面的中文資料很少,我甚至無法準確地翻譯REFERENCE。

REFERENCE的常規(guī)翻譯是參考,目前國內有關LV的書籍也是這樣翻譯的,但是從我個人理解還是翻譯成引用比較好。

為了準確理解引用的概念有必要先解釋一下C語言中指針的概念。

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


當我們聲明了var整型變量后,在計算機的內存中就分配了四個字節(jié)的連續(xù)內存空間(與編譯器有關,早期是兩個字節(jié)),pVar是一個指向整型變量的指針,它本身就是32位整型數(shù),自然也占四個字節(jié)的內存空間,不過這四個字節(jié)的內容是VAR的內存地址。

LV的參考是什么那?我個人理解就是對象的指針。我在一篇文章中提到,LV本身是基于數(shù)據(jù)流的,不過它的前面板控件卻是典型的面向對象的類的繼承關系。LV的對象就是指向各種類的指針(當然不僅僅是控件,菜單,文件等也是用參考進行參數(shù)傳遞的)。


C語言的指針有兩種情況,一是未指向任何變量的指針( int *pVar,此時,只是定義了指針,未指向任何變量或者對象),二是指向了特定的變量或者對象(pVar=&var)

實際上,LV的參考也分成這兩種情況,我們可以通過兩種方式來創(chuàng)建控件的參考。




我們以CONTROL REFERENCE為例,當我們在前面板生成這個控件的時候,該控件未指向任何特定的控件,甚至未指向任何特定的數(shù)據(jù)類型,比如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 下一頁

關鍵詞: LABVIEWreferencerefnu

評論


技術專區(qū)

關閉