2012年3月7日 星期三

Case Structure

在這篇我們將介紹 LabVIEW 的 Case Structure。

如果你學過其它程式語言,你可能已經熟悉 If-Then-Else 或 Switch 這些條件結構,這些結構是用來選擇要執行哪一段程式碼,在 LabVIEW 裏要做同樣的事是用叫一個作 Case Structure 的結構。底下我們將說明如何使用 Case Structure。

認識 Case Structure

我們來看底下這支程式:

2012-01-29 15h34_09 

這支程式是一個很簡單的程式,它可以讓使用者利用 Button 來控制 LED 的開關。如下圖左,當 Button 被按下時 LED 燈就會打開;而當你再按一下 Button,LED 燈就會變成關閉的狀態,如下圖右:

2012-01-29 15h34_47 2012-01-29 16h10_03

假如我們不想讓 LED 總是在按下 Button 時才打開,假如我們想讓使用者自行決定 LED 在按下 Button 時打開或是關掉,那麼這時候 Case Structure 就可以派上用場。

在使用 Case Structure 前,我們先刪除 Button 和 LED 之間的連線:

2012-01-29 15h54_57

接著切到 Block Diagram,打開 Function Palette,點選 Structures,然後你就會在下圖的位置找到 Case Structure:

image

點選 Case Structure,然後在 Button 和 LED 之間畫出 Case Structure,像這樣:

2012-01-29 15h55_38

在預設情況下,所產生的會是 True/False 的 Boolean Case Structure。在 True Case,我們希望程式邏輯和原來一樣,在按下 Button 時 LED 打開,所以我們只要像下圖這樣把連線接起來:

2012-01-29 15h56_14

接著點一下 Case Structure 上方切到 False Case:

image

你會看到 False Case 現在是空白的,現在我們在 False Case 放個 Boolean > Not,然後照下圖把線接起來:

2012-01-29 16h35_10

Case Structure 是利用下圖所示的 Case Selector 決定要執行哪一段程式碼:

image

所以現在我們在 Front Panel 上放個 Boolean > Vertical Toggle Switch 以便讓使用者決定 LED 是在按下 Button 時為開或關:

image

現在我們唯一要做的事是把 Toggle Switch 連接到 Case Selector 上:

image

接著,當我們按下 Run 鈕執行程式,由於 Toggle Switch 預設是 False,因為 Case Structure 會選擇執行 False Case 的程式碼,所以如下圖左,你會看到 Button 和 LED 的狀態是相反的: Button 未按下時 LED 是開的,而 Button 按下時 LED 則是關的,如下圖右:

2012-01-29 16h45_37  2012-01-29 16h45_53

當我們把 Toggle Switch 切到 True,因為 Case Structure 會選擇執行 True Case 的程式碼,所以現在 Button 和 LED 的狀態就會變成是同步的,Button 按下時 LED 開,而 Button 未按下時 LED 關:

2012-01-29 16h50_27 2012-01-29 16h50_43

其它種 Case Structure

除了 True/False 的 Case Structure 外,LabVIEW 也支援 Numeric, String 和 Enum  的 Case Structure。

我們以底下的例子來介紹 Numeric Case Structure 的用法:

2012-01-29 17h32_20

底下是目前的程式碼:

2012-01-29 17h18_02

在這支程式中 Front Panel 上有 Green, Yellow 和 Red 三個 LED,我們想讓使用者透過 Numeric Control 來決定要亮哪一顆 LED,如果是 1 就亮 Green LED,2 就亮 Yellow LED,如果是 3 就亮 Red LED,其它情況全部不要亮。所以,現在我們加個 Case Structure 到程式中:

2012-01-29 17h18_39

預設產生的是 True/Fase Case Structure,接著我們把 Numeric Control 連接到 Case Selector,你會發現 Case Structure 會變成 Numeric 的,而且會自動產生 0 和 1 兩個 Cases:

image

由於我們需要 1, 2 和 3 這三個 Cases,所以我們在 Case Structure 上方按右鍵,點選 Add Case After,點選兩次:

2012-01-29 17h27_00

這樣會產生 2 和 3 這兩個 Cases。現在我們切到 0 這個 Default Case,然後在這個 Case 裏放個 False Constant,並且連接到三個 LED,這會讓三個 LED 在預設狀況下都是關的:

2012-01-29 17h33_11

接著切到 1 的 Case,在裏面放一個 True Constant 和一個 False Constant,因為 1 的 Case 要亮 Green LED,所以我們把 True Constant 接到 Green LED,而 False Constant 連到 Yellow 和 Red LED:

2012-01-29 17h30_34

而 2 的 Case 是要亮 Yellow LED,所以把 True Constant 接到 YellowLED,而 False Constant 連到 Green 和 Red LED:

2012-01-29 17h31_23

最後是 3 的 Case,因為這個 Case 是要亮 Red LED,所以我們把 True Constant 接到 RedLED,而 False Constant 連到 Green 和 Yellow LED

2012-01-29 17h35_03

現在,當我們按 Run 鈕執行這支程式,你會發現如果 Numeric 為 0 或者 Numeric 為 1, 2 和 3 以外的數值,在 Default Case 下三顆 LED 都會是關的:

2012-01-29 17h40_40 2012-01-29 17h40_52

如果 Numeric 為 1 時只有 Green LED 會亮,Numeric 為 2 時只有 Yellow LED 會亮:

2012-01-29 17h41_02 2012-01-29 17h41_12

而當 Numeric 為 3 時,就只有 Red LED 會亮:

2012-01-29 17h41_20

以上簡單介紹了 LabVIEW 的 Case Structure 的使用方法。

動動腦

依照衛生署訂的標準,收縮血壓正常應該低於 120,121 – 140 是高血壓前期,而收縮血壓高於 140 則算是高血壓。

現在,請利用前面的 LED 程式做個練習,試著將程式改成判斷血壓標準的程式,讓使用者可以輸入收縮血壓,然後程式根據使用者輸入的收縮血壓判斷身體健康與否,假如血壓是正常的,就讓程式亮 Green LED:

2012-01-29 17h51_18

假如收縮血壓介於 121 與 140 之間,則亮 Yellow LED 以提醒使用者是高血壓前期:

2012-01-29 17h51_38

而如果血壓高於 140,就亮 Red LED 以警告使用者可能已經有高血壓:

2012-01-29 17h51_53

提醒:如果要判斷數值是否落在某個範圍裏,只要利用".." 這個符號即可,例如要判斷數值是否在 1 到 100 之間,請在 Case 上輸入 1..100 即可。

參考資料

0 意見: