




已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
5.2 LabVIEW設(shè)計(jì)模式主從設(shè)計(jì)模式和生產(chǎn)者消費(fèi)者設(shè)計(jì)模式 在上一節(jié)中曾經(jīng)談到過(guò),NI LabVIEW 中提供了六種最基本的設(shè)計(jì)模式。本節(jié)首先介紹其中的兩種: 主從設(shè)計(jì)模式與生產(chǎn)者消費(fèi)者設(shè)計(jì)模式(Master/Slave design pattern 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)。 圖 5.2-1 主從設(shè)計(jì)模式 圖 5.2-2 生產(chǎn)者消費(fèi)者設(shè)計(jì)模式5.2.1 主從設(shè)計(jì)模式(Master/Slave design pattern) 與主從設(shè)計(jì)模式的相關(guān)內(nèi)置函數(shù)(Notifier_通知)參見(jiàn)下圖所示。 圖 5.2.1-1 主從設(shè)計(jì)模式內(nèi)置函數(shù)(通知) 關(guān)于這些內(nèi)置函數(shù)的定義和使用方法請(qǐng)參考LabVIEW Help文件,這里就不再進(jìn)行討論了。 對(duì)于絕大多數(shù)LabVIEW的學(xué)習(xí)者來(lái)講,僅僅依據(jù)這些主從操作提供的內(nèi)置函數(shù)(通知),即便是借助于幫助文件也很難理解和設(shè)計(jì)出正確的應(yīng)用程序代碼或基本架構(gòu)。因?yàn)?這些內(nèi)置函數(shù)的內(nèi)部程序代碼是不對(duì)外開(kāi)放的、不公開(kāi)的,所以我們也就很難理解的更準(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è)While循環(huán)(上面為主循環(huán)、下面的為從循環(huán))和若干個(gè)“通知”內(nèi)置函數(shù)(Notifier)構(gòu)成。主 循環(huán)中的Case結(jié)構(gòu)用來(lái)確定是否向從循環(huán)發(fā)出通知。 該設(shè)計(jì)模式支持圖形化代碼的多種數(shù)據(jù)類型的數(shù)據(jù)輸入(圖 5.2-1中的數(shù)據(jù)類型為:字符串);并且用一個(gè)Stop按鍵來(lái)控制這兩個(gè)While循環(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è)While之間,依據(jù)While循環(huán)的數(shù)據(jù)流工作原理,我們的確很難理解數(shù)據(jù)是如何在兩個(gè)While循環(huán)之間傳遞的 。這使得這種結(jié)構(gòu)的兩個(gè)While循環(huán)之間傳遞數(shù)據(jù)的關(guān)系看起來(lái)有點(diǎn)象全局變量(或本地變量)。 其實(shí),它與全局變量功能上是相近的,但還是有些區(qū)別。其中最主要區(qū)別在于:負(fù)責(zé)產(chǎn)生信息的主循環(huán)必須保持循環(huá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ú)止境的輪詢中的時(shí)間。另外,全局變量破壞了數(shù)據(jù)流的關(guān)系,而這里則完全保證了數(shù)據(jù)流 的關(guān)系。 主從設(shè)計(jì)模式主要用來(lái)解決兩個(gè)或多于兩個(gè)的同時(shí)發(fā)生的并且擁有不同運(yùn)行速率的線程的通信應(yīng)用中或者在運(yùn)行于同一臺(tái)機(jī)器的兩個(gè)VI之間通信的工具。這種方式一般用來(lái)同步 兩個(gè)獨(dú)立的進(jìn)程,所以它的這些內(nèi)置函數(shù)是分類在函數(shù)選板的同步模版中。 其實(shí),在數(shù)據(jù)采集和處理中,更需要這種主從構(gòu)架的應(yīng)用。比如,在連續(xù)數(shù)據(jù)采集和分析、處理中,我們可能會(huì)將采集、分析、處理放在一個(gè)While循環(huán)內(nèi)。那么While 循環(huán)運(yùn)行一次的時(shí)間就是采集、分析、處理這三部分運(yùn)行時(shí)間之和。如果任務(wù)中需要快速采集和實(shí)時(shí)處理,顯然這種在采集、分析、處理同放在一個(gè)While循環(huán)中的方式很不好, 很可能導(dǎo)致數(shù)據(jù)采集的不連續(xù)性(數(shù)據(jù)時(shí)間上出現(xiàn)間斷點(diǎn)),也就是采集完后將等待分析、處理完成后才能再次進(jìn)行采集。 如果真的不希望這種情況發(fā)生,那就可以通過(guò)采用主從設(shè)計(jì)模式來(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)Send Notification有效時(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 是該程序的程序框圖。 圖 5.2.1-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ù)恼_性。1、主循環(huán)定時(shí):150ms,從循環(huán)定時(shí):150ms 圖 5.2.1-3 主循環(huán)、從循環(huán)定時(shí)均為150ms 從圖 5.2.1-3可以看出數(shù)據(jù)傳遞是準(zhǔn)確可靠的。2、主循環(huán)定時(shí):200ms,從循環(huán)定時(shí):150ms 圖 5.2.1-4 主循環(huán)定時(shí)200ms、從循環(huán)定時(shí)為150ms 從圖 5.2.1-4也可以看出數(shù)據(jù)傳遞是準(zhǔn)確可靠的。3、主循環(huán)定時(shí):150ms,從循環(huán)定時(shí):200ms 圖 5.2.1-5 主循環(huán)定時(shí)150ms、從循環(huán)定時(shí)為200ms 從圖 5.2.1-5可以看出數(shù)據(jù)傳遞明顯出現(xiàn)丟失數(shù)據(jù)的現(xiàn)象。數(shù)據(jù)沒(méi)有傳遞完是由于我們終止了運(yùn)行。 還有一個(gè)問(wèn)題,從循環(huán)的停止是來(lái)自于主循環(huán)提供的錯(cuò)誤信息,那么如果從循環(huán)內(nèi)發(fā)生錯(cuò)誤如何報(bào)錯(cuò)? 鑒于這些原因存在,這也是主從循環(huán)設(shè)計(jì)模式被使用的比較少的原因之一。那么有沒(méi)有更好的解決方法呢?這就是我們下節(jié)所要介紹的“生產(chǎn)者、消費(fèi)者設(shè)計(jì)模式”。5.2.2 生產(chǎn)者消費(fèi)者設(shè)計(jì)模式(Producer/Consumer design pattern) 可以說(shuō):生產(chǎn)者、消費(fèi)者設(shè)計(jì)模式是圖形化程序設(shè)計(jì)中最廣泛使用的設(shè)計(jì)模式。 與生產(chǎn)者、消費(fèi)者設(shè)計(jì)模式的相關(guān)內(nèi)置函數(shù)(Queue_隊(duì)列)參見(jiàn)下圖所示。 圖 5.2.2-1 生產(chǎn)者消費(fèi)者設(shè)計(jì)模式內(nèi)置函數(shù)(隊(duì)列) 在圖 5.2-2中,就是基于數(shù)據(jù)流的圖形化代碼生產(chǎn)者消費(fèi)者設(shè)計(jì)模式的表達(dá)形式或架構(gòu)。 它的構(gòu)成與上面所討論的主從設(shè)計(jì)模式基本相同,只是使用的內(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)。隊(duì)列的數(shù)據(jù)存儲(chǔ)是開(kāi)辟一個(gè)緩存區(qū),依據(jù)先進(jìn)先出的原則 進(jìn)行的。新來(lái)的元素總是被加入隊(duì)尾(即不允許加塞),每次離開(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 是該程序的程序框圖。 圖 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 圖 5.2.2-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.2.2-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 圖 5.2.2-5 主循環(huán)定時(shí)150ms、從循環(huán)定時(shí)為200ms 從圖 5.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)者/消費(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編寫的DAQmxBase的實(shí)例(僅用于Mac數(shù)據(jù)采集應(yīng)用)。 圖 5.2.2-6
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 7679.5-2025礦山機(jī)械術(shù)語(yǔ)第5部分:破碎粉磨設(shè)備
- GB/T 28090-2025假蒼耳檢疫鑒定方法
- GB/T 22046-2025地理標(biāo)志產(chǎn)品質(zhì)量要求洋河大曲
- 汽輪機(jī)模擬與仿真技術(shù)考核試卷
- 起重機(jī)械產(chǎn)業(yè)鏈延伸與價(jià)值鏈提升考核試卷
- 鎳氫電池在太陽(yáng)能光伏儲(chǔ)能中的應(yīng)用考核試卷
- 西藥批發(fā)企業(yè)運(yùn)營(yíng)管理效率改進(jìn)考核試卷
- 小學(xué)生冬季疾病預(yù)防
- Mal-Cyclohexyl-PEG3-Biotin-生命科學(xué)試劑-MCE
- 郵輪旅游市場(chǎng)旅游住宿報(bào)告:2025年艙位類型與旅客選擇分析
- 2025-2030中國(guó)顯示驅(qū)動(dòng)芯片行業(yè)競(jìng)爭(zhēng)風(fēng)險(xiǎn)及前景發(fā)展創(chuàng)新研判報(bào)告
- 2024年昆明市公安局招聘勤務(wù)輔警真題
- 口腔實(shí)習(xí)生崗前培訓(xùn)課件
- 小學(xué)生數(shù)學(xué)學(xué)習(xí)習(xí)慣的培養(yǎng)講座
- DeepSeek+AI大模型賦能制造業(yè)智能化供應(yīng)鏈解決方案
- 自動(dòng)生成的文檔-202504081202-70
- 2025河南省豫地科技集團(tuán)有限公司社會(huì)招聘169人筆試參考題庫(kù)附帶答案詳解析集合
- 鋼結(jié)構(gòu)檢測(cè)管理制度
- T/SHPTA 030-2022民用航空器用聚氟乙烯基阻燃耐候復(fù)合裝飾膜
- T/CCOA 45-2023氣膜鋼筋混凝土球形倉(cāng)儲(chǔ)糧技術(shù)規(guī)程
- 吊車吊籃高空作業(yè)施工方案
評(píng)論
0/150
提交評(píng)論