Labview簇
簇是一種類似數(shù)組的數(shù)據(jù)結(jié)構(gòu),用于分組數(shù)據(jù)。簇和數(shù)組有著重要的差別,其中一個重要差別是,簇可以包含不同的數(shù)據(jù)類型,而數(shù)組僅可以包含相同的數(shù)據(jù)類型。例如,一個數(shù)組可以包含10個數(shù)字指示器,一個簇卻可以包含一個數(shù)字控件,一個開關(guān)和一個字符串控件。
本文引用地址:http://www.ex-cimer.com/article/201701/337003.htm盡管簇和數(shù)組的元素都是有序存放的,但訪問簇的元素最好是通過釋放的方法同時訪問其中部分或全部元素,而不是通過索引一次訪問一個元素。簇和數(shù)組的另一個差別是簇具有固定的大小。
簇通常用于將出現(xiàn)在框圖上的有關(guān)數(shù)據(jù)元素分組管理。因為簇在框圖中僅用唯一的連線表示,所以對于減少連線混亂和子VI需要的連接器端子個數(shù),使用簇有著積極的效果。可以將簇看做是一捆連線,線纜中每一個連線表示簇的不同元素。在框圖上,只有當(dāng)簇具有相同類型,相同元素數(shù)量和相同元素順序時,才可以將簇的子端連接。多態(tài)性應(yīng)用于簇時,只需要簇具有同樣順序,同樣數(shù)量的元素。
下面來向大家介紹簇的創(chuàng)建簇的創(chuàng)建框位于前面板中的控件→新式→數(shù)組,矩陣和簇→簇,如圖:
然后就可以往簇的框中添加各種類型的控件了,例如現(xiàn)在要建立一個學(xué)生的記錄信息,包括學(xué)生的姓名,學(xué)號,性別和年齡.這就需要在簇外殼里依次放入兩個字符串輸入控件,一個數(shù)字控件和一個布爾控件.如圖:
與數(shù)組的創(chuàng)建類似,簇也可以從程序框圖中創(chuàng)建,先在程序框圖上放置一個簇外殼,然后就可以在簇外殼里放置各種數(shù)據(jù)類型常數(shù)。如圖:
簇內(nèi)對象的大小是可以調(diào)整的,右擊簇邊界,在彈出的快捷菜單中可以選擇各種調(diào)節(jié)操作,如圖:
選擇調(diào)整為匹配大小,即可縮小簇的邊框,如圖為調(diào)整后的結(jié)果:
簇結(jié)構(gòu)中的元素排列是按照它們放置的先后來排序的,它與簇內(nèi)元素的位置無關(guān)。放入簇內(nèi)的第一個元素序號為0,第二個元素序號是1,依次向下排列。如果刪除了一個元素,序號將重新自動調(diào)整。簇的排序很重要,它直接影響著后面將要介紹的“捆綁”以及“接觸捆綁”函數(shù)的端口順序,如果你想將一個簇與另一個簇連接,這兩個簇的序和類型必須相同。
如果想要改變簇內(nèi)元素的排列順序,可以右擊簇結(jié)構(gòu)的邊框,在彈出的快捷菜單中執(zhí)行“重新排序簇中控件”,如圖:
這時鼠標(biāo)會變成一個帶“#”號的手柄箭頭,黑框指出新設(shè)置的排列序號,白框表示原先的排列序號,可以改變標(biāo)題欄上的“單擊設(shè)置”內(nèi)容,然后單擊簇元素即可設(shè)置新的序號。設(shè)置完畢后單擊工具欄上的“”按鈕確定更改,如果想恢復(fù)原先設(shè)定值,單擊“”取消設(shè)置。
b) 簇函數(shù)
簇函數(shù)的模版如圖:
簇函數(shù)中最主要的就是構(gòu)造打包生成簇的“捆綁”函數(shù),還有從簇中解包提取簇中元素的“解除捆綁”函數(shù)。它們是根據(jù)簇成員的順序來進(jìn)行操作的,這也說明了簇內(nèi)成員順序排列的重要性。
簇函數(shù)舉例:
- 創(chuàng)建簇,解包簇,再打包簇
該例的目的是學(xué)習(xí)使用簇的兩個基本函數(shù),如圖:首先放置一個簇外殼到前面板上,將標(biāo)簽內(nèi)容改為“輸入簇”
在簇外殼中依次放入字符串控件“Name”,布爾控件“Sex”,數(shù)字輸入控件“Pay”以及字符串控件“Address”,通過這些簇元素來組成某一公司內(nèi)一名員工的工資記錄。如圖:
切換到程序框圖,放置一個“解除捆綁”解包簇函數(shù),函數(shù)剛放入時,它的右側(cè)只有2個輸出端口,當(dāng)輸入端口與“輸入簇”端子相連后,右側(cè)端口會自動增加為簇元素的數(shù)目,端口從上向下排列的順序與簇內(nèi)元素的放置順序相對應(yīng),并且數(shù)據(jù)類型也是與簇元素數(shù)據(jù)類型相對應(yīng)。如圖:
同樣放置一個“捆綁”打包簇函數(shù),用定位工具將輸入端口的數(shù)目增加到4個,依次將它們與解包出來的4個簇元素相連,表示又把它們進(jìn)行打包生成一個新的簇。在輸出端口創(chuàng)建一個簇顯示器,把標(biāo)簽改為“輸出簇”,如圖:
- 替換簇成員
該例的目的是學(xué)習(xí)使用“按名稱捆綁”函數(shù)來替換簇內(nèi)的某些元素。
- 新建一個VI,在前面板上創(chuàng)建一個簇外殼,依次向簇內(nèi)添加一個數(shù)字輸入控件,一個布爾控件,一個字符串輸入控件,如圖:
- 打開程序框圖,選擇“按名稱捆綁”函數(shù),它的功能是按照名稱來替換簇成員的值。在函數(shù)剛放入時,它的左側(cè)只有一個輸入端口,將函數(shù)的“輸入簇”端口與創(chuàng)建的簇端子相連之后,左側(cè)端口會顯示簇內(nèi)第一個元素的名稱數(shù)值,用操作工具單擊它可以選擇其他的簇成員。如圖:
- 在前面板上創(chuàng)建一個輸入控件,將標(biāo)簽改為“輸入數(shù)字”,在程序框圖將它與“數(shù)值”端口相連,表示將用它來替換簇元素。如圖:
- 在“按名稱捆綁”函數(shù)后面創(chuàng)建輸出簇,完成后即可運行程序,如圖:
- 插接生成簇數(shù)組
該例的目的是學(xué)習(xí)使用“索引與捆綁簇數(shù)組”函數(shù)插接簇數(shù)組函數(shù)來生成一個簇數(shù)組。
- 新建一個VI,打開程序框圖,放置一個該函數(shù),剛放入時它只有一個輸入的端口,用定位工具拖拉它為3個輸入端口。
- 在程序框圖上放置三個數(shù)組外殼,然后分別添加字符串常量,數(shù)值常量和布爾常量,建立三個數(shù)組,如圖:
然后給他們賦如圖所示的值,如圖:
然后連線,并創(chuàng)建顯示控件,如圖:
運行,結(jié)果如圖:
說明:該函數(shù)從輸入的3個數(shù)組中依次取值,相同索引值的數(shù)據(jù)被攢程一個簇,所有的簇構(gòu)成一個一維數(shù)組。插接成的數(shù)組的長度與所有輸入數(shù)組中長度最短的一個相等,多余的數(shù)據(jù)被丟棄。
- 建立“數(shù)組的數(shù)組”
該例看起來好像是不可以實現(xiàn)的,因為在數(shù)組的學(xué)習(xí)中,已經(jīng)知道數(shù)組的成員不可以是數(shù)組。這里將學(xué)習(xí)把一維數(shù)組當(dāng)成一個簇,然后通過建立簇的數(shù)組,因為簇數(shù)組的每一個成員都是一個簇(即一維數(shù)組),從而實現(xiàn)建立“數(shù)組的數(shù)組”的目的。
- 先新建一個VI,打開程序框圖,放置一個“創(chuàng)建簇數(shù)組”函數(shù),該函數(shù)的功能是建立簇的數(shù)組,簇數(shù)組的每個成員都是一個簇。剛放入程序框圖時,函數(shù)只有一個輸入端口,用定位工具拖動它的邊框,使它具有3個輸入端口。
- 在程序框圖上創(chuàng)建3個數(shù)值型數(shù)組,分別對它們進(jìn)行賦值,第一個和第三個數(shù)組長度設(shè)定為5,第二個數(shù)組的長度設(shè)定為4。在“創(chuàng)建簇數(shù)組”函數(shù)的輸出端口創(chuàng)建一個簇顯示器,將簇顯示器的標(biāo)簽內(nèi)容改為“數(shù)組的數(shù)組”,如圖:
- 運行程序,即可在前面板上看到結(jié)果,如圖:
Error簇
Error簇是一類很重要的簇,許多的控件里都有“錯誤輸入”和“錯誤輸出”這兩個簇的端口,通常來講,當(dāng)一個VI中間出現(xiàn)錯誤而導(dǎo)致不能運行時,可以在出錯的控件的“錯誤輸出”端子創(chuàng)建一個顯示控件,則可以讓程序繼續(xù)運行,如圖所示,即為Error簇:
而Error簇更重要的應(yīng)用在于,它可以控制控件執(zhí)行的先后順序,也可以通過Error簇來控制循環(huán)的終止。如圖:
當(dāng)信號的發(fā)生出現(xiàn)錯誤的時候,就可以把循環(huán)停止。
評論