下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、5.2 LabVIEW設(shè)計(jì)模式一一主/從設(shè)計(jì)模式和生產(chǎn)者/消 費(fèi)者設(shè)計(jì)模在上一節(jié)中曾經(jīng)談到過(guò),N1 LabVIEW中提供了六 種最基本的設(shè)計(jì)模式。本節(jié)首先介紹其中的兩種:主/從設(shè)計(jì)模式與生產(chǎn)者/消費(fèi)者設(shè)計(jì)模式(Master/Slave designpattern and Producer/Consumer design pattern)。這是由 于這兩 種設(shè)計(jì)模式在結(jié)構(gòu)上極為相似(使用的內(nèi)置函數(shù)不同),所以我們?cè)谶@里將一起來(lái)討論(基本結(jié)構(gòu)參見(jiàn)圖5.2-1、圖5.2-2 ) oMitt*- z iwhRiaTi 1 i訂“4邛.遜K2- (T-|To*;址嚴(yán)石97圖5. 2-1主/從設(shè)計(jì)模式Pr
2、oduOM/ConwrTZ Deii jr Pattern (Datdl PfoducerConbunerDt:d 4.vi Block. Diagram TrcCcxrE2D 0圖5. 2-2生產(chǎn)者/消費(fèi)者設(shè)計(jì)模式5. 2 1主/從設(shè)計(jì)模式(Master/Slave design pattern )3IIT|z.jrf11f rr:石二彳Elart 料rjEFTf * I WF Zot-iair r J ra叫PrDE訂Tng Oa*fCcmrnviiiEiTi&qonriKEiiiMITyConftFDD: pn H SimLilstiaxAddend是不對(duì)外開(kāi)放勺、不公開(kāi)勺,所以
3、我們也就很難理解勺更準(zhǔn)確或更全 面。那么如何正確勺使用它們呢?通常有兩個(gè)最簡(jiǎn)單、最直接勺方法可以解決這個(gè)問(wèn)題:一是,查看NI給出勺設(shè)計(jì)模式或例程;二 是,查看其它使用者所提供勺實(shí)用例程。其實(shí),這里也再次間接勺告訴大家,更多查看和理解其它LabVIEW開(kāi)好者所提供的實(shí)用例程是學(xué)習(xí)LabVIEW勺最好方 法之一。通過(guò)圖5.2-1,就可以初略地領(lǐng)會(huì)到NI基于數(shù)據(jù)流的圖形化代碼主/從設(shè)計(jì)模式的表達(dá)形式或架構(gòu)。從圖5. 2-1中,可以看到主/從設(shè)計(jì)模式的基本構(gòu)成是:包括了兩個(gè)WMle循環(huán)(上面為主循環(huán)、下面的為從循環(huán))和若 干個(gè)“通知”內(nèi)置函數(shù)(Notifier)構(gòu)成。主 循環(huán) 中的Case結(jié)構(gòu) 用來(lái)確
4、定是否向從循環(huán)發(fā)出通知。該設(shè)計(jì)模式支持圖形化代碼的多種數(shù)據(jù)類(lèi)型的數(shù)據(jù)輸入(圖5. 2-1中的數(shù)據(jù)類(lèi)型為:字符串);并且用一個(gè)Stop按鍵來(lái)控 制這兩個(gè)Wh訂e循環(huán)的停止。如果用“高亮執(zhí)行”方式來(lái)查看它的數(shù)據(jù)流運(yùn)行狀 態(tài)時(shí),我們會(huì)發(fā)現(xiàn):當(dāng)主循環(huán)中的Case結(jié)構(gòu)的條件輸入端為:F時(shí),主 循環(huán)不會(huì)發(fā)出通知,從循環(huán)也不執(zhí)行任何操作;當(dāng)主 循環(huán)中的Case結(jié) 構(gòu)的條件輸入端為:T時(shí),主循環(huán)發(fā)岀通知,從循環(huán)執(zhí)行相應(yīng)的操作。當(dāng)我們按下“Stop ”鍵時(shí),主循環(huán)停 止并利用錯(cuò)誤簇(表現(xiàn)為:岀現(xiàn) 錯(cuò)誤)通知 從循環(huán)也停止。主/從設(shè)計(jì)模式工作時(shí),數(shù)據(jù)(元素)傳遞是發(fā) 生在兩個(gè)WMle之間,依據(jù)Wh訂e循環(huán)的數(shù)據(jù)流
5、工作原理,我 們的確很難理 解數(shù)據(jù)是如何在兩個(gè)Wh訂e循環(huán)之間傳遞的。這使得這種結(jié)構(gòu)的兩個(gè)Wh訂e循環(huán)之間傳遞數(shù)據(jù)的關(guān)系看起來(lái)有 點(diǎn)象全局變量(或本地變 量)。其實(shí),它與全局變量功能上是相近的,但還是有些區(qū)別。其中最主要區(qū)別在于:負(fù)責(zé)產(chǎn)生信息的主循環(huán)必須保持 循環(huán)查詢(xún) 數(shù)據(jù)是否發(fā)生變化。在數(shù)據(jù)沒(méi)有發(fā)生改變的時(shí)候,從循環(huán)結(jié)構(gòu)則完全 停止執(zhí)行,只有當(dāng)新數(shù)據(jù)可用時(shí)才重新啟動(dòng)(通知)。這就會(huì)使計(jì)算機(jī) 減少浪費(fèi)在無(wú)止境的輪詢(xún)中的時(shí)間。另外,全局變量破壞了數(shù)據(jù)流的關(guān) 系,而這里則完全保證了數(shù) 據(jù)流的關(guān)系。主/從設(shè)計(jì)模式主要用來(lái)解決兩個(gè)或多于兩個(gè)的同時(shí)發(fā)生的并且擁有不同運(yùn)行速率的線程的通信應(yīng)用中或者在運(yùn)行于
6、同一臺(tái)機(jī) 器的兩個(gè)VI之間通信的工具。這種方式一般用來(lái)同步兩個(gè)獨(dú)立的進(jìn) 程,所以它的這些內(nèi)置函數(shù)是分類(lèi)在函數(shù)選板的同步模版中。其實(shí),在數(shù)據(jù)采集和處理中,更需要這種主/從構(gòu)架的應(yīng)用。比如,在連續(xù)數(shù)據(jù)釆集和分析、處理中,我們可能會(huì)將采集、分析、處理放在一個(gè)WMle循環(huán)內(nèi)。那么WMle循 環(huán)運(yùn)行 一次的時(shí)間就是采集、分析、處理這三部分運(yùn)行時(shí)間之 和。如果任務(wù)中 需要快速采集和實(shí)時(shí)處理,顯然這種在采集、分析、處理同放在一個(gè)Wh訂e循環(huán)中的方式很不好,很可能導(dǎo)致數(shù)據(jù)采集的不連續(xù)性(數(shù)據(jù) 時(shí)間上出現(xiàn)間斷點(diǎn)),也就是采集完后將等待分析、處理完成后才能 再次進(jìn)行采集。如果真的不希望這種情況發(fā)生,那就可以通過(guò)采
7、用主/ 從設(shè)計(jì)模式來(lái)解決這樣類(lèi)似的問(wèn)題。比如,將數(shù)據(jù)釆集放到主循環(huán)中, 分析和處理放置到從循環(huán)中。由于我們不是LabVIEW內(nèi)置函數(shù)的設(shè)計(jì)者,所以不清楚主/從設(shè)計(jì)模式的數(shù)據(jù)存儲(chǔ)方式,所以我們只能認(rèn)定:這種工作方 式當(dāng)SendNotification有效時(shí),元素被存儲(chǔ),當(dāng)Wait on Notification有效時(shí),元素被讀取,從而實(shí)現(xiàn)主/從 結(jié)構(gòu)間的數(shù)據(jù)傳 遞。這樣做就會(huì)高枕無(wú)憂了嗎?其實(shí)不然!這種構(gòu)架的缺點(diǎn)是:如果取走元素的速度慢,而發(fā)送元素的速度快,則會(huì)發(fā)生元素漏掉的情形。為了驗(yàn)證這樣的說(shuō)法,我們做一個(gè)簡(jiǎn)單的驗(yàn)證程序。例5. 2. 1-1主從結(jié)構(gòu)數(shù)據(jù)傳遞試驗(yàn)圖5 2.1-2是該程序的程序
8、框圖*Th ( ? .*h叩沖LLBJ忡利別審bTnr和 2 也y. i E-Irfiur .dhiilJM 4 -M利hu i R:審斛TftvifiirHTIch”圖521-2主/從模式數(shù)據(jù)傳輸試驗(yàn)程序框圖主循環(huán)產(chǎn)生一個(gè)隨機(jī)數(shù)并發(fā)送到從循環(huán),在每個(gè)循環(huán)中各放置一個(gè)Chat圖形顯示器來(lái)觀察隨機(jī)數(shù)發(fā)送和接收的情況。主/從循環(huán)各放置一個(gè)定時(shí)器,選擇不同的定時(shí)時(shí)間來(lái)驗(yàn) 證數(shù)據(jù)傳輸?shù)恼_性。tfiuu. &n Nsl! rl c Bfl *Ti IZJ1、主循環(huán)定時(shí):150ms從循環(huán)定時(shí):150ms521-3主循環(huán)、從循環(huán)定時(shí)均為150ms從圖5. 2.1 -3可以看岀數(shù)據(jù)傳遞是準(zhǔn)確可靠的2
9、、主循環(huán)定時(shí):200ms從循環(huán)定時(shí):150ms3、主循環(huán)定時(shí):從循環(huán)定時(shí):200ms循環(huán)定時(shí)200ms從循環(huán)定時(shí)為150msWnyk76 代 XSL njDGPraminingAddonsFa worit&sUstr Libra只是使用的內(nèi)置函數(shù)不同。同樣我們也不介紹內(nèi)置函數(shù)的定義和使用方式。同時(shí),生產(chǎn)者/消費(fèi)者設(shè)計(jì)模式的基本工作原理 也就不多介紹了面主要介紹它們之間的不同之處。它們之間最大的不同就是數(shù)據(jù)存儲(chǔ)和傳輸方式的不同。生產(chǎn)者/消費(fèi)者設(shè)計(jì)模式采用了隊(duì)列的數(shù)據(jù)存儲(chǔ)方式(FIFO)0隊(duì)列的數(shù)據(jù)存儲(chǔ)是開(kāi)辟一個(gè)緩存區(qū),依據(jù)先進(jìn)先出的原 則進(jìn)行的。新來(lái)的元素總是被加入隊(duì)尾(即不允許加塞),
10、 每次離開(kāi)的元素總是隊(duì)列頭上的(即不允許中途離隊(duì)),當(dāng)前最老 的元素離隊(duì)。這樣就保證了數(shù)據(jù)傳遞過(guò)程中基本上不會(huì)發(fā)生數(shù)據(jù) 丟失的現(xiàn)象。為了驗(yàn)證這樣的說(shuō)法,我們還是同樣做一個(gè)簡(jiǎn)單的驗(yàn)證程序。例5. 2. 2-1生產(chǎn)者/消費(fèi)者結(jié)構(gòu)數(shù)據(jù)傳遞試驗(yàn)圖5. 2. 2-2是該程序的程序框圖產(chǎn)者/消費(fèi)者模式數(shù)據(jù)傳輸試驗(yàn)生產(chǎn)者循環(huán)產(chǎn)生一個(gè)隨機(jī)數(shù)并發(fā)送到消費(fèi)者循環(huán),在每個(gè)循環(huán)中各放置一個(gè)Chat圖形顯示器來(lái)觀察隨機(jī)數(shù)發(fā)送和 接收的情況。生產(chǎn)者/消費(fèi)者循環(huán)各放置一個(gè)定時(shí)器,選擇不同的定時(shí)時(shí)間來(lái)驗(yàn)證 數(shù)據(jù)傳輸?shù)恼_性。1生產(chǎn)者循環(huán)定時(shí):150ms消費(fèi)者循環(huán)定時(shí):150ms訊習(xí)訊習(xí)ir LLruui-TiilK.k.J,
11、r./ i ?r I圖522-3生產(chǎn)者循環(huán)、消費(fèi)者循環(huán)定時(shí)均為150ms從圖5. 2. 2-3可以看岀數(shù)據(jù)傳遞是準(zhǔn)確可靠的2、生產(chǎn)者循環(huán)定時(shí):200ms消費(fèi)者循環(huán)定時(shí):150ms& & 5 5 3 3 J J a.fl.0a.fl.0 a a a aPMQLLPMQLLOP3OP3QEQErm vSNHI0WW4rr Cl- irt 2L叮a缶Timi. e圖522-4生產(chǎn)者循環(huán)定時(shí)200ms消費(fèi)者循環(huán)定時(shí)為150ms從圖5. 2. 2-4可以看出數(shù)據(jù)傳遞也是準(zhǔn)確可靠的。3、生產(chǎn)者循環(huán)定時(shí):150ms消費(fèi)者循環(huán)定時(shí):200ms主循環(huán)定時(shí)150ms從循環(huán)定時(shí)為200ms從圖5.
12、2. 2-5可以看出數(shù)據(jù)傳遞也沒(méi)有出現(xiàn)數(shù)據(jù) 丟失的現(xiàn)象。實(shí)際上,由于數(shù)據(jù)傳遞被強(qiáng)行停止,所以后面的數(shù)據(jù)沒(méi)有被全 部完全傳遞出來(lái)。解決這個(gè)問(wèn)題的方法是在程序 設(shè)計(jì)中添加一些處理 程 序,這部分內(nèi)容可參考:LabVIEW網(wǎng)絡(luò) 講壇系列第三季運(yùn)籌帷幄一一生產(chǎn)者圖5. 2. 2-5/消費(fèi)者循環(huán)。還是那個(gè)問(wèn)題,從循環(huán)的停止是來(lái)自于主循環(huán)提供的錯(cuò)誤信息,從循環(huán)內(nèi)如果發(fā)生錯(cuò)誤如何報(bào)錯(cuò)?下面給出一個(gè)使用Mac版LabVIEW編寫(xiě)的DAQmxBas的實(shí)例(僅用于Mac數(shù)據(jù)采集應(yīng)用)。圖522-6 Mac電腦用于數(shù)據(jù)采集的生產(chǎn)者/消費(fèi)者例程(DAQmxBaSe.CiBvta KM F. #:.i拿nrii. fcr p* STM?*:S .Zfit?irv ihi A X.門(mén)RE 山JlIT1. 亠亠ML 0 i*uri kJ LX- iiv 1J Uu*fti Fjaad - IXhp BL *ur c tir-a jfihv El1 XXBih drill 1FGTIrI勺曲Ib4 KqaMfllt-fli T X If g ! taitSaSQDnun
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025小區(qū)停車(chē)位租賃合同多例
- 2025勞動(dòng)合同主體變更協(xié)議
- 三方協(xié)商產(chǎn)品銷(xiāo)售代理合同
- 全新轉(zhuǎn)讓合同編號(hào)下載
- 小工程施工安全合同協(xié)議書(shū)
- 2025有關(guān)耕地租賃合同范本
- 2025旅游合作合同參考
- 2025網(wǎng)上購(gòu)物合同是什么時(shí)候建立的等額本金提前還款
- 建筑電氣安裝工程
- 建筑工程進(jìn)度管理
- 2025年度廚師職業(yè)培訓(xùn)學(xué)院合作辦學(xué)合同4篇
- 《組織行為學(xué)》第1章-組織行為學(xué)概述
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(kù)380題(含答案)
- 高校圖書(shū)館服務(wù)
- 環(huán)衛(wèi)一體化運(yùn)營(yíng)方案
- 科技進(jìn)步類(lèi)現(xiàn)代軌道交通綜合體設(shè)計(jì)理論與關(guān)鍵技術(shù)公
- 源代碼審計(jì)報(bào)告模板
- 干式變壓器知識(shí)大全課件
- 重大危險(xiǎn)源公示牌(完整)-2
- 初一英語(yǔ)英語(yǔ)閱讀理解專(zhuān)項(xiàng)訓(xùn)練15篇
- 高中地理學(xué)情分析方案和報(bào)告
評(píng)論
0/150
提交評(píng)論