關於Queue的用法問題

各位大大,有人能幫講解一下這個Labview範例嗎?有點不太懂它的意思。

 

不好意思,因為對於Queue還不是很了解,希望知道的人可以大概說明一下,謝謝各位大大了。Queue Multiplexer.vi

其實他的說明很清楚,就是 Many into one的概念。

多個資料來源可以進去同一個佇列。

本範例有三個迴圈,可產生3個不同的SIN波資料,
且同時被放入Data 這個佇列中。

另一個迴圈可取出Data佇列中的資料,畫在圖上。


有一點我不了解,就是為何3個不同的SIN波資料最後變成Plot 0一筆資料,而非Plot 0~2三筆資料?

![](upload://3GMwd3EuAi3ZJ6Vq4dbywmKK99m.jpeg)

[QUOTE=DonWang]

有一點我不了解,就是為何3個不同的SIN波資料最後變成Plot 0一筆資料,而非Plot 0~2三筆資料?

![](upload://3GMwd3EuAi3ZJ6Vq4dbywmKK99m.jpeg)

[/QUOTE]

大概是因為,都是從同一個佇列取出資料來畫圖的。

你在右邊取值畫圖的這個迴圈中加上 wait函數,設定為 100ms,
這時就會看到,chart畫圖的順序是一個一個點依序畫出,

而且大致上的順序是:

之前迴圈3產生的資料->迴圈2產生的資料->迴圈1產生的資料
->3->2->1->3->2->1...

感覺是在取同一個資料庫的值來畫圖,只是資料值跳來跳去的。


![](upload://uXl0TAuX1VXC59SzhdTtE3GTne1.png)

做個不太專業的比喻好了,
這就好像,有三輛屬於不同旅行團的遊覽車,載遊客到了花博參觀,
分別是國小學生畢旅團、阿桑進香團、大學正妹團,
導遊叫他們自己買票進去,但是售票口只有一個,

這時三輛遊覽車上的乘客陸陸續續下車,走到售票口排隊買票,
那麼售票口前一定會有排隊買票的隊列,而且是三種遊客前後參雜在一起;
這樣遊客買到票的順序,就會跟排隊的順序一樣。
先去排隊的,就可以先買到票! 

但是順序可能就是小學生->阿桑->大學生->小學生->阿桑->大學生...

這大概就是佇列先進先出(FIFO)的特性吧!


沒錯
因為資料都進同一個佇列
所以都被當作同一通道的資料

如果把上圖的點換成線
則會看到其實三個通道的資料是混雜一起送出來的,
而佇列本身就是先進先出
所以才會被MIX成同一個通道

他的優點在於可以當作某種程度的區域變數
但是可以因為程式處理時序的不同而有所堆疊
使得處理較慢的程式有可以處理的空間
而處理較快的程式也可以把資料排在後頭
但是要注意其先進先出的順序以及BUFFER大小的限制