LABVIEW的深入探索之已鏈接控件引用與未鏈接控件引用
是否可以這樣說(shuō):在控件所屬的vi中,使用屬性、方法節(jié)點(diǎn)不需要?jiǎng)?chuàng)建引用;
從上圖看高老師的說(shuō)法有局限性,在控件所屬VI中,也可能需要?jiǎng)?chuàng)建引用來(lái)使用屬性、方法節(jié)點(diǎn)。
三、為什么要用為鏈接控件的引用(通用引用)
任何編程軟件都強(qiáng)調(diào)模塊化的重要性,為了簡(jiǎn)化上圖中的程序框圖,我們希望把上圖中的FOR循環(huán)容封裝在一個(gè)子VI中。
主VI的程序框圖簡(jiǎn)化為:
下面我們?cè)黾右粋€(gè)“李老師”顯示控件,子VI不需要任何改動(dòng)。程序框圖和運(yùn)行效果圖如下所示:
從上面兩個(gè)程序框圖中,我們可以領(lǐng)會(huì)到這個(gè)子VI功能是非常強(qiáng)大的,子VI是如何實(shí)現(xiàn)的那?下圖是子VI的前面板和程序框圖。
子VI的輸入端子為未鏈接的數(shù)字控件引用數(shù)組,輸出為雙精度數(shù)組。我們通過(guò)未鏈接控件的引用成功地操作了調(diào)用VI中的三個(gè)數(shù)字控件:高老師、李老師、CSXCS_366.
而在子vi中如果需要向該控件傳值,則必須使用該控件的引用
高老師實(shí)際的意思應(yīng)該是這樣的,如果在“在子VI中操作主VI中的控件,則必須使用該控件的引用”,高老師的這個(gè)說(shuō)法是完全正確的。
LV有關(guān)引用有幾個(gè)重要的特點(diǎn):
1、數(shù)據(jù)流意味著是傳值方式而不是傳引用(地址)方式,在C語(yǔ)言中,值傳遞和引用傳遞都是支持的。
2、鏈接到特定控件的引用代表一個(gè)地址,因此同一控件的多個(gè)引用,它們的值(地址)肯定是相同的。
3、未鏈接到特定控件的引用(通用引用),它的值為0,相當(dāng)于C語(yǔ)言中空指針。
4、運(yùn)行時(shí),未鏈接到特定控件的引用可以指向同類型(嚴(yán)格類型)的特定控件。
引用無(wú)處不在,應(yīng)用程序引用、VI引用、窗格引用、控件引用,如果我們獲得了一個(gè)控件的引用,我們就可以控制這個(gè)控件的一切。如果在控件所屬VI中控制這個(gè)控件,我們自然不需要未鏈接控件的引用,但是如果需要在子VI中控制,則必須在主VI中先獲取這個(gè)控件的引用,并把這個(gè)引用(地址值)按照值傳遞的方式傳遞到子VI中,這樣子VI直接獲得的是主VI中控件的引用(地址值)。
評(píng)論