上一篇介紹Synchronization家族裡面的Semaphore紅綠燈來做到程序上管控,這篇要介紹Synchronization家族中另外一個成員-->Notifier,比起Sempaphore,Notifier更像Queue的應用,他不僅可以做到程序上的管控,另外也可以做到資料的傳遞,讓他的彈性比起Semaphore更為有彈性。關於Sempaphore可以參考:LabVIEW_Synchornization-Semaphone(紅綠燈)教學範例。有關Queue的教學可以參考:LabVIEW_Queue的教學_用法和範例。或者是應用集錦教學:Queue的應用。
程式碼可在這邊(Download)下載 , 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~
前面有提到Notifier除了程序上的管控,另外也能做到資料的傳遞,但是比起Queue,Notifier一次只能傳遞一筆資料,一次只容許攜帶一筆資料的Notifier在應用上就造成了不少限制,而且在應用上也要特別小心封包丟失的問題,因為一次只攜帶一筆資料時,當下一筆資料進入時因為原本的資料還未被消化,會造下一筆資料無法被攜帶而丟失。
Notifier中的基本功能為 Obtain Notifier、Send Notification、Wait on Notification、Release Notifier。
Obtain Notifier、Release Notifier, 這兩個為最基礎的元件,可以解讀為宣告、結束;在使用時,一定要先"宣告",最後應用完後做"結束"的動作。
Send Notfication、Wait on Notification 一個是傳遞資料端,一個是接受資料端;而Send Notification 就是傳送資料,Wait on Notification 會一直等待資料,直到等到資料後,程式才會繼續,否則程式會停頓在Wait on Notification。
應用上如下圖,Loop2的Wait on Notification 會一直等待Loop1中程式1做完後經過Send Notfication,才會接著做程式2;也就是透過Notifier,讓程式1永遠會比程式2先做,讓這兩段程式達到程序上的管控。另外透過Notifier,也可以將資料從Loop1傳遞到Loop2
下面有個範例,讓個位數從0-9遞增,每跑一輪就讓十位數加一,因為十位數的顯示必定是在個位數的0-9條件達成後,才會+1 。
程式碼: 可以看出個位數每10次後,解開Loop2的Wait on Notification,並將Loop1所得到的十位數傳遞到Loop2做資料的顯示。
其實這個範例和上一篇所介紹的Sempaphore相同,可以看出因為Notifier有傳遞資料的功能,所以可以直接將資料從Loop1傳遞到Loop2。
程式碼可在這邊(Download)下載 , 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~
學習相關LabVIEW文章:
進階程式學習
基礎程式學習
專題學習_LVOOP
專題學習_動態載入
Queue應用
Synchornization學習
Array陣列
檔案讀寫
Listbox、Table元件
程式分享相關LabVIEW文章:
基礎程式分享
進階程式分享
股票程式分享
考取LabVIEW證照相關:
CLAD
CLD
CLA準備、CLA考題分析