上一篇介紹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考題分析

arrow
arrow

    安伯伯 發表在 痞客邦 留言(0) 人氣()