新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > LABVIEW深入探索---reference(參考)和refnum(參考號(hào))

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

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
看到今天的評(píng)論,建議我寫一點(diǎn)有關(guān)REFERENCE的文章,的確早就想寫點(diǎn)這部分內(nèi)容,但是不太容易,因?yàn)镹I這方面的中文資料很少,我甚至無(wú)法準(zhǔn)確地翻譯REFERENCE。

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

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

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


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

LV的參考是什么那?我個(gè)人理解就是對(duì)象的指針。我在一篇文章中提到,LV本身是基于數(shù)據(jù)流的,不過(guò)它的前面板控件卻是典型的面向?qū)ο蟮念惖睦^承關(guān)系。LV的對(duì)象就是指向各種類的指針(當(dāng)然不僅僅是控件,菜單,文件等也是用參考進(jìn)行參數(shù)傳遞的)。


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

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




我們以CONTROL REFERENCE為例,當(dāng)我們?cè)谇懊姘迳蛇@個(gè)控件的時(shí)候,該控件未指向任何特定的控件,甚至未指向任何特定的數(shù)據(jù)類型,比如BOOLEAN ,NUMERIC等等。

從C語(yǔ)言的角度,更像定義了一個(gè)void *pVar;(當(dāng)然,它已經(jīng)指定的范圍,是控件的參考)

我們可以認(rèn)為它指向的是控件的基本類,但是是未初始化的,未指向特定對(duì)象。

LABVIEW的每一個(gè)REFERENCE都有一個(gè)編號(hào),稱為REFERENCE NUMBER,簡(jiǎn)寫RefNum,RefNum是對(duì)象(可能是控件,面板,文件,菜單等)的唯一標(biāo)識(shí)符號(hào),這個(gè)標(biāo)識(shí)符號(hào)如果理解成指針應(yīng)該是個(gè)I32表示的內(nèi)存地址。

對(duì)于C語(yǔ)言,未初始化的的指針一般讓它指向0,看LV是否如此那?




對(duì)于前面兩個(gè),控件參考和菜單參考,因?yàn)槲粗赶蛉魏翁囟▽?duì)象,所以他們的REFNUM的值是0,而下面的NUMERIC REFNUM,因?yàn)榭丶旧硪呀?jīng)存在了,因此它的值是存在的,這和C語(yǔ)言是類似的。

一個(gè)未指向任何對(duì)象的指針?lè)Q作空指針,那么未指向任何對(duì)象的參考也可以稱作空參考。



可以看出,未指向任何對(duì)象的參考號(hào)REFNUM的值是0,LV判斷它是一個(gè)空的或者非法的REFNUM.

對(duì)于兩個(gè)指向同一特定控件的REFERENCE,它們的REFNUM是相同的。



由此可以得出結(jié)論,在加載前面板后,控件對(duì)象已經(jīng)實(shí)際存在,指向同一控件的參考,他們的參考號(hào)是相同的。得到控件的參考號(hào)就可以控制控件的所有屬性,如是否可見,閃爍等。

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: LABVIEWreferencerefnu

評(píng)論


技術(shù)專區(qū)

關(guān)閉