<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > labview棧和隊列

labview棧和隊列

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò ) 收藏

同步控制技術(shù)----棧與隊列

本文引用地址:http://dyxdggzs.com/article/201701/337150.htm

(其中有很多圖片不是馬上就能看到的,查看方法是:鼠標右擊不可看圖片,選擇復制圖片地址,然后在瀏覽器中打開(kāi)即可。因為本文是摘錄的,給各位朋友帶來(lái)不便,請多諒解!)

在計算機編程中棧是一個(gè)很重要的概念,尤其在匯編語(yǔ)言中,需要不斷進(jìn)棧和出棧的操作.棧是限定在一個(gè)表的尾端進(jìn)行插入(進(jìn)堆棧)和刪除(出堆棧)的線(xiàn)性表.是后進(jìn)先出結構(LIFO).

隊列的定義和棧的定義是類(lèi)似的,區別是數據是先進(jìn)先出(FIFO)

labview還有一個(gè)概念緩沖區BUFFER,典型的比如CHART,它默認保存數據長(cháng)度是1024.BUFFER的概念和隊列是非常相似的,都是一個(gè)先進(jìn)先出的結構.如果我們設定隊列的數據長(cháng)度也是1024.比較一下他們的區別.

區別一:未達到設定

開(kāi)始的時(shí)候,隊列和緩沖區中都是沒(méi)有數據的,當有數據進(jìn)入的時(shí)候,隊列和緩沖區中的數據在不斷地增加,對于緩沖區,因為未達到它最大許可的長(cháng)度 1024,因此數據是不斷第增加的,隊列則不同,它的數據是否增加取決于是否有讀隊列的過(guò)程,就是所說(shuō)的出隊,如果出隊的速度大于入隊的速度,隊列中則根本不會(huì )有數據.如果沒(méi)有出隊的過(guò)程或者出隊的速度小于入隊的過(guò)程,隊列中的數據也是不斷地增加的.這是第一個(gè)區別.

區別二:到達設定值

當隊列和BUFFER都達到了1024個(gè)數據后,這是再有新的數據要進(jìn)來(lái),隊列和BUFFER的表現是不同的,對于BUFFER,它將自動(dòng)擠出(形象的說(shuō)法,當然也是編程實(shí)現的)最早進(jìn)入BUFFER的數據,所謂先進(jìn)先出.而隊列則不同.要求進(jìn)入隊列的線(xiàn)程只能被動(dòng)等待,一直到隊列中有別的線(xiàn)程取出數據,隊列中有空閑位置.所以隊列有調節讀寫(xiě)速度線(xiàn)程的能力.

相同點(diǎn)一:數據進(jìn)入都是在尾部,(隊列插入如果在頭部,就編程上面所說(shuō)的棧了)

相同點(diǎn)二:對于中間數據都實(shí)現了有效的封裝,你無(wú)法直接提取中間的某個(gè)數據,你可以讀出中間的數據,但是不能改變當前BUFFER和隊列的值.

LABVIEW提供的隊列的功能函數(包括棧),在逐點(diǎn)分析庫提供了DBL型的BUFFER,我在另外的日志中專(zhuān)門(mén)提到了,這里就不多說(shuō)了.

LV隊列的函數是基本函數,無(wú)法進(jìn)行深入跟蹤,估計應該是采用C++的算法然后封裝的,我實(shí)際測試過(guò),它的運行效率遠高于用數組的方式構成的隊列,為了詳細說(shuō)明隊列和棧的細節,我還是用數組的形式,然后在介紹LV的隊列函數.

首先看看如何用數組實(shí)現棧的功能:

棧的操作是非常簡(jiǎn)單的,只有壓棧和出棧兩個(gè)操作(PUSH AND POP)

我們用AE來(lái)實(shí)現它.分成三個(gè)action: Init,Push ,Pop

首先嚴格自定義ENUM,表示三個(gè)動(dòng)作.

這樣我們就完成了棧的AE的制作過(guò)程。

看看它的調用過(guò)程。

10次循環(huán),棧中的數據應該是0,1,2,3,4,5,6,7,8,9。棧的彈出次序應該是9,8,7,6,5,4,3,2,1,0

運行結果確實(shí)如此。

與棧相反,隊列是一個(gè)先入先出的數據結構,我們對棧的過(guò)程稍微修改一下,就可以得到隊列。就不多介紹了。

下面重點(diǎn)介紹一下LV提供的隊列的具體功能。

分別介紹這8個(gè)節點(diǎn)的具體功能:
1:獲得隊列(實(shí)際是得到隊列的參考)它有5個(gè)數據端子

name:String
隊列在LV系統中是名稱(chēng)來(lái)區分的,LV系統自己維護一個(gè)包含的目前所有隊列的表,當你運行這個(gè)函數的時(shí)候,它首先會(huì )查找表中是否已經(jīng)存在這個(gè)隊列參考,如果存在,就直接返回這個(gè)參考,如果不存在,就建立一個(gè)新的隊列,并將隊列參考加入表中進(jìn)行維護。這樣做的好處是非常明顯的,允許我們在任何子VI中,只需要知道隊列的名稱(chēng)就可以運行這個(gè)函數直接得到隊列參考,不用通過(guò)全局變量或者數據流輸入來(lái)得到參考,在一個(gè)層層嵌套的VI中想傳遞一個(gè)數據很不容易,也不利于模塊化。

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: labview棧隊

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>