LABVIEW中的條件結(jié)構(gòu)
選擇結(jié)構(gòu)相當(dāng)于文本語言中的條件語句。LabVIEW 8 中新增加的 Diagram Disable Structure,
Conditional Disabled Structure 類似 C 語言中的條件宏定義語句。
一. 程序框圖禁用結(jié)構(gòu)(Diagram Disable Structure)
在調(diào)試程序時(shí)常常會用到程序框圖禁用結(jié)構(gòu)。程序框圖禁用結(jié)構(gòu)中只有 Enabled 的一頁會在運(yùn)行時(shí)執(zhí)
行,而 Disabled 頁是被禁用、即不會執(zhí)行的;并且在運(yùn)行時(shí),Disable 頁面里的 SubVI 不會被調(diào)入內(nèi)存。
所以,被禁用的頁面如果有語法錯誤也不會影響整個程序的運(yùn)行。這是一般選擇結(jié)構(gòu)(Case Structure)無
法做到的。
圖1、2:使用程序框圖禁構(gòu)
例如圖 1、2 中的示例,如果我們在運(yùn)行程序的時(shí)候暫時(shí)不希望將 test 寫入到文件里,但又覺得有可
能以后會用到。此時(shí),就可以使用程序框圖禁用結(jié)構(gòu)把不需要得程序禁用掉。需要注意的是程序框圖禁用
結(jié)構(gòu)可以有多個被禁用的框架,但必須有且只能有一個被使用的框架。在被使用的框架中,一定要實(shí)現(xiàn)正
確的邏輯,比如上圖的例子中,在被使用的框架中一定要有連線把前后的文件句柄和錯誤處理聯(lián)接好。
二. 條件禁用結(jié)構(gòu)(Conditional Disabled Structure)
條件禁用結(jié)構(gòu)則根據(jù)用戶設(shè)定的符號(symbol)的值來決定執(zhí)行哪一頁面上的程序。其他方面與程序
框圖例如圖 1、2 中的示例,如果我們在運(yùn)行程序的時(shí)候暫時(shí)不希望將 test 寫入到文件里,但又覺得有可
能以后會用到。此時(shí),就可以使用程序框圖禁用結(jié)構(gòu)把不需要得程序禁用掉。需要注意的是程序框圖禁用
結(jié)構(gòu)可以有多個被禁用的框架,但必須有且只能有一個被使用的框架。在被使用的框架中,一定要實(shí)現(xiàn)正
確的邏輯,比如上圖的例子中,在被使用的框架中一定要有連線把前后的文件句柄和錯誤處理聯(lián)接好。
二. 條件禁用結(jié)構(gòu)(Conditional Disabled Structure)
條件禁用結(jié)構(gòu)則根據(jù)用戶設(shè)定的符號(symbol)的值來決定執(zhí)行哪一頁面上的程序。其他方面與程序
框圖禁用結(jié)構(gòu)相同。
程序中所使用的符號,可以在項(xiàng)目或是運(yùn)行目標(biāo)機(jī)器(例如“My Computer”)的屬性里設(shè)置。
值得注意的是:程序框圖禁用結(jié)構(gòu)與條件禁用結(jié)構(gòu)都是靜態(tài)的,如果需要在運(yùn)行時(shí)決定執(zhí)行哪一部分
的程序可以使用選擇結(jié)構(gòu)。
程序框圖禁用結(jié)構(gòu)和條件禁用結(jié)構(gòu)的一種實(shí)用案例可以參考:《其它常用調(diào)試工具和方法》
三. 選擇結(jié)構(gòu)(Case Structure)
在一般情況下,選擇結(jié)構(gòu)類似于 C 語言的 switch 語句。當(dāng)輸入為 bool 數(shù)據(jù)類型或 error 數(shù)據(jù)類型
時(shí),選擇結(jié)構(gòu)類似于 C 語言中的 if 語句。
圖4:枚舉類型的 Case Selector
有輸出時(shí),則每一個框架中都必須連一個數(shù)據(jù),當(dāng)然也可以選擇“Use Default If Unwired”。選擇“Use
Default If Unwired”會有一定的風(fēng)險(xiǎn),因?yàn)槟憧赡軙浟诉B線,這時(shí)候 LabVIEW 并不會提醒你,程序就
可能得到不可預(yù)料的結(jié)果。
如圖5所示,鼠標(biāo)右擊數(shù)據(jù)輸出隧道,可以選擇是否使用“Use Default If Unwired”