<source : greatway9999>

一、需求描述


二、程序流程圖 




三、程式撰寫

先寫在前頭。我們想讓subVI在執行時維持固定尺寸,因此後續會配合subVI撰寫的順序,在 VI properties (人機介面右上角icon點右鍵)進行以下設定。

Windows Appearance

以下設定為對subVI的設定。

目的為,當subVI被呼叫時,才秀出畫面,並可能會因使用者誤觸而引發程式錯誤的功能關掉,相關設定如下。






Windows Size

主程式 : 640 * 480
subVI : 480 * 360


Windows Run-Time Position

執行時,視窗的尺寸。



(一)、主程式

1.人機介面


2.Timeout

3.模式選擇


4.微波強度設定

5.微波時間設定



6.開始微波



7.重置


8.關閉


(二)、模式選擇 subVI

模式的狀態分別有:自定模式、飲料加熱、飯菜加熱、冷凍食品解凍、生食烹煮。

程式撰寫的架構為 "錯誤保護"的case 加上 各種狀態的Event。

錯誤保護分為若有錯誤,則直接傳出錯誤。若無錯誤則在由按鈕觸發各個Event狀態。

動作為各種功能按鈕觸發後,送出所選模式的文件到主畫面上。

人機介面如下 :



依上述邏輯,程式撰寫如下 :


1.錯誤發生


2.無錯誤下的各個狀態(模式)

(1)自訂模式


(2)飲料加熱


(3)飯菜加熱

(4)冷凍食品解凍

(5)生食烹煮

(6) Timeout




(三)、微波時間設定之subVI

此功能主要為設定微波的分鐘與秒數。程式撰寫的架構為一個錯誤保護的case 加上 撰寫時間設定內容的迴圈。

比較特別的是,為了讓時間數字的其中一個按鈕被按下時,其他的按鈕則不會動作,Radio Buttons是一個很好用的功能。


Radio Buttons的位置為 Control 面板 >> Boolean。用法很簡單,像cluster一樣,只要將數字按鈕塞進去,再把原本的Radio Selection刪掉即可。請留意,因為這個功能方塊中必須要有內容,所以無法先刪除Radio Selection再塞數字。

處理後,人機介面如下,相關的icon與接線,可依照自己需求設計 :




1.錯誤發生



2.若無錯誤,則執行時間設定

這部分比較特別的是,秒數以15為一個單位,而按鈕則是從0開始計數,因此會再乘上15,藉此獲得我們需要的資料。

(四)、微波強度設定之subVI

此功能主要為以數字按鈕設定微波的強度。程式撰寫的架構為一個錯誤保護的case 加上 狀態Event。

人機介面的設計同樣運用Radio Buttons,如下所示。相關的icon與接線,可依照自己需求設計 :


1.錯誤發生

2.若無錯誤,則執行火力設定

同樣透過Radio Buttons傳值,程式撰寫如下 :


另外,Timeout的內容如下呈現即可。

(五)、啟動畫面之subVI

這部分依照流程圖進行撰寫即可。Case架構中的狀態分別有 : 更新資訊、確認停止按鈕是否按下、更新計時器、確認計時器、結束。

技巧是利用 Enum去撰寫所需的條件 (狀態),為方便未來修改,記得要進行 Make Type Def.,再存成控制物件。

程式撰寫一樣分成錯誤發生和沒錯誤的動作,參考如下 :

1.錯誤發生


2.若無錯誤,則進行下列的條件

程式撰寫如下 :

(1)更新資訊



(2)確認停止按鈕是否按下


(3)更新計時器

這裡的技巧是將設定的分鐘和秒數,通通轉換為秒數,再透過抓取當前時間的程式方塊,進行相減,實現倒數的功能。


(4)確認計時器


(5)結束



至此,大功告成。

關閉所有的subVI,只留下主程式,執行後,就可以看到你的成果囉!

---

0 留言