2012年2月28日 星期二

For Loops

這篇我們將介紹 LabVIEW 的 For Loops。

For Loop 跟 While Loop 一樣,可以讓一段程式重覆的執行,然而 For Loop 與 While Loop 有一些差別,While Loop 會不斷地重覆執行一段程式直到遇到一個符合 Stop Condition 的條件成立時才停止,而 For Loop 則可以事先決定迴圈要執行的次數。

如果你事先已經知道迴圈要跑多少次,那麼使用 For Loop 是比較好的選擇。

建立 For Loops

在 Block Diagram 上按滑鼠右鍵打開 Functions Palette,然後點選 Structures,前兩個選項就是常見的迴圈 For Loop 和 While Loop:

image_thumb 

現在我們要在程式裏用 For Loop。所以請選 For Loop,然後在 Block Diagram 上畫出一個 For Loop,並且把想要放在迴圈裏的程式整個包住。像底下這樣,我們已經建立了一個 For Loop:

 image 

For Loop 左上角的 Loop Count,也可以稱作 Count (N) Terminal,是用來指定迴圈要執行的次數。所以,假設要讓這個 For Loop 跑 10 次數,那麼我們就在 Count (N) Terminal 上按右鍵,然後點選 Create Constant:2012-01-28 21h32_52

接著輸入 10:

2012-01-28 21h33_08

這樣便建立了一個可以重覆跑一段程式跑 10 次的 For Loop。

而 For Loop 左下角的 Loop Iteration,或稱作 Iteration Terminal,則可以提供目前迴圈已執行次數的資訊。所以,為了顯示迴圈目前已執行的次數,請在 Iteration Terminal 上按右鍵,然後點選 Create Indicator:

2012-01-28 21h43_14

完成後會產生一個 Numeric Indicator 的 Terminal:

2012-01-28 21h44_59

同時在 Front Panel 上會自動產生一個 Numeric Indicator:

2012-01-28 21h45_18

讓我們把它改名為 Loop Iteration:

2012-01-28 21h47_29  2012-01-28 21h47_39

現在,當你按下 Run 鈕執行程式,For Loop 迴圈會執行 10 次,而 Loop Iteration 最後則會顯示 9 (i 從 0 開始):

2012-01-28 21h48_29

為了看清楚 Loop Iteration 的變化,我們可以打開 Function Palette,點選 Timing > Wait (ms) 在迴圈裏放個 Wait (ms) function,並且輸入常數 1000:

2012-01-28 21h50_45

Wait (ms) 的單位是 miliseconds,所以輸入 1000 就是會等待 1 秒鐘。現在再跑這支程式,你就會看到 Loop Iteration 從 0 到 9 的變化,而且每隔 1 秒鐘遞增 1,下圖是 For Loop 跑到第 7 圈時的截圖:

2012-01-28 21h52_46
▲ 迴圈跑到第 7 圈時的截圖

讓 Loop Iteration 從 1 開始算起

由於 Loop Iteration 是從 0 開始,每跑完迴圈一次會加 1,這在某些情況下可能不太方便,我們可以讓 Loop Iteration  從 1 開始算起,方法是在 Iteration Terminal 和 Loop Iteration (Indicator) 中間的接線上按右鍵,然後點選 Insert > Numeric Palette > Add:

image

這樣會在 Loop Iteration 前插入一個 Add function:

image

接著我們在 Add function 上按右鍵選 Create Constant,建立一個 1 的常數,這樣就可以了。完成後的程式如下:

2012-01-28 22h12_04

現在,當我們再執行這支程式,就會看到 Loop Iteration 會從 1 數到 10,而不再是從 0 到 9:

2012-01-28 22h10_02

參考資料

0 意見: