NI Documents在基礎原件上都寫得非常仔細,建議初學者可以多閱讀,對於程式的功力可以大大提升,以前我很喜歡看LabVIEW的Example,覺得程式寫得很精簡很乾淨;LabVIEW 內建的Queued Message Handler Template 是已經建好、彈性不錯的模板 。這篇不會針對基本的Queue功能做介紹,若想知道基本Queue的使用方法,可以參考之前的文章:
LabVIEW_Queue的教學_用法和範例、LabVIEW_Producer And Consumer_Queue簡單應用_多功能佇列應用、LabVIEW_多重迴路架構-Producer & Consumer架構教學範例、LabVIEW_Queued Enum Handler + Variant 架構介紹範例分享、LabVIEW_Queue State Machine with User Event程式架構介紹。必須先清楚明瞭Queue的使用方法,才能懂這篇的敘述唷~
使用Creat Project-->Queued Message Handler 來呼叫模板
這個模板的架構是使用Message Queued + User Event,以下拆這兩部份加上Error Handle來看這模組:
- Message Queued應用解釋
這裡的Queue元件將各功能包含Error處理做了整合成為SubVI,所以看起來會比較複雜,但是若將他對應到Queue,就會比較明瞭整個template結構。
由上圖的對應關係圖可以看出在此Template將原本只能一個Queue一個Queue新增的Enqueue功能改成For Loop改寫的Array Enqueue(圖中3號),而Error也獨立使用"Error"的Enqueue Element At Opposite End取代(圖中4號),其他的Queue功能和之前介紹的Producer and Consumer文章大同小異:LabVIEW_Producer And Consumer_Queue簡單應用_多功能佇列應用。
- User Event應用解釋
這裡的User Event 的應用很簡易,可以想像是一個觸發自訂Event的方法(觸發Producer Loop中的Event Case),由下圖的離開程序可以更知道其動作流程。
當Comsumer Loop的Exit Queue啟動後,送出User event到Producer Loop(上圖中的1)觸發Event的User Event Case,User Event內部程式將Loop做關閉(上圖中的2),最後整個User Event的註冊做釋放(上圖中的3)。
- Error Handle
如上Queue中提到,在圖中的4,為此Consumer Loop中出現Error時會觸發Comsumer Loop的 "Error" case(下圖中的1、2)最後在觸發Error Message和Exit Queue(下圖中的3)直接離開程式。
這裡須注意這SubVI的下方有接個True,這是對應到使用Enqueue Element At Opposite End.vi所以此Enqueue "Exit"會優先執行唷!
如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~
學習相關LabVIEW文章:
程式分享相關LabVIEW文章:
考取LabVIEW證照相關:
留言列表