在LabVIEW Synchornization大家族裡面有 Notifier、Queue、Semaphore、Rendezvous、Occurrences;其中因為Queue的彈性最為強大,所以也最被廣泛的使用和討論;不過其他家族裡面的成員其實也是在某些應用上滿方便的,這篇介紹的是俗稱"紅綠燈"的Semaphone的應用,Semphone在程式上的程序管控上,能夠發揮效應,但因為它的彈性相較於Queue較小,建議用於較小、簡單的應用上。有關Queue的教學可以參考:LabVIEW_Queue的教學_用法和範例。或者是應用集錦教學:Queue的應用

程式碼可在這邊(Download)下載 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

Semaphore 最基本的功能為Obtain Semaphore、Release Semaphore Reference、Release Semaphore、Acquire Semaphore。

Obtain Semaphore、Release Semaphore Reference 這兩個為最基礎的元件,可以解讀為宣告、結束;在使用時,一定要先"宣告",最後應用完後做"結束"的動作

Semaphore又戲稱紅綠燈,而Release Semaphore 可以視為綠燈,Acquire Sempaphore可以視為紅燈;

應用上如下圖,Loop2的Acuquire Sempaphore 會一直等待Loop1中程式1做完後經過Release Semaphore,才會接著做程式2也就是透過Semaphore,讓程式1永遠會比程式2先做,讓這兩段程式達到程序上的管控

下面有個範例,讓個位數從0-9遞增,每跑一輪就讓十位數加一,因為十位數的顯示必定是在個位數的0-9條件達成後,才會+1,這種有順序上的應用就可以使用Semaphore。

程式碼: 可以看出個位數每10次後,解開Loop2的Acquire Semaphore。

程式碼可在這邊(Download)下載 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

Queue應用

Synchornization學習

Array陣列

檔案讀寫

Listbox、Table元件

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

arrow
arrow

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