LabVIEW程序設計模式五—生產者消費者模式生產者消費者模式擴展_第1頁
LabVIEW程序設計模式五—生產者消費者模式生產者消費者模式擴展_第2頁
LabVIEW程序設計模式五—生產者消費者模式生產者消費者模式擴展_第3頁
LabVIEW程序設計模式五—生產者消費者模式生產者消費者模式擴展_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、LabVIEW程序設方f模式(五)一生產者/消費者模式(5)_生產者/消費者模式擴展結合狀態機模式、事件結構和動態調用技術,能夠歸納出針對較復雜應用程 序的通用設計模式。對常見的測試測量程序而言,主要由數據采集、數據分析、 外圍菜單項響應、報表生成、數據顯示這五個部分組成。其中數據采集是相對獨 立和長時間運行的一個模塊,可以與其它的模塊同時運行。因此,在大多數持續 采集的程序設計中需要將它單獨作為一個模塊運行。與此同時,子程序也需要一 條數據通道發送一些反饋命令給主程序。于是可以構成如圖44所示的一個通訊回路。圖44通訊回路LabVIEW提供了多種主程序與子程序之間的通訊方式,如隊列、Refe

2、rence 事件等。為了介紹這些方式的具體使用方法,將結合最常用的數據采集實例進行 闡述。【叵用7本例以“計算機組件測試”為應用介紹消費者和生產者循環的具體使用方 法和數據交互過程。例子并不是為了說明計算機組件測試的過程和方法,而是重 在強調對該應用而言應該采用什么樣的程序設計模式。因此,例子中使用了多種 數據交互方式,這些交互方式的選擇并不是唯一的,可以根據實際情況選擇合適 的數據交互方法。假設計算機的整個測試過程由 CPU、RAM、CDROM、Power,.等等數項子 測試項組成,程序需要充分考慮可擴展性要求,使得后期增加新的待測組件時對 主程序的影響不大或者沒有影響。測試過程應能夠實現暫

3、停和提前停止的功能, 并且測試過程不受其它界面操作的影響。根據以上的測試要求,可以把整個測試程序分為兩個部分:控制部分和執行 部分。其中前者是用戶主界面,用來響應用戶界面事件以及控制測試流程的執 行;后者是執行程序,用來根據控制命令運行測試流程并且產生測試結果。系統 的結構如圖45所示。圖45 ”計算機組件測試系統”結構從上圖可以看出,該應用與消費者和生產者模式是相符的,不同的是還涉及到消費者(執行部分)向生產者(控制部分)的數據傳輸。本例使用的是隊列型 的生產者和消費者模式,而反向的數據傳輸使用了 “用戶自定義事件”和“Reference方法。當然,也可以使用隊列等其它的方式。程序的主界面如

4、圖46所示,包括菜單欄,測試才S制按鈕和測試項列表 3大 部分。背面板如圖47所示,生產者部分采用狀態機和事件結構相結合的設計模 式,共包含5大類的狀態。PC Test圖46 PC Test前面板圖47 PC Test背面板在PInitialize狀態中,主要實現前面板控件的初始化以及調用待測組件,如 圖48所示。為了滿足測試系統的可擴展性要求,將目前的測試組件統一集中放 置到Testitems目錄中。如果后續需要增加測試組件項,只需要編寫相應的測試 組件代碼并且放置到Testitems目錄中即可。圖 48 PInitialize 狀態在 DInitialize、 Run、 Pause和 St

5、op 狀態中都使用到了 PCTest_Execute_Controller.vi程序,該VI用來啟動和控制消費者循環,如圖 49 所示。鹵中使用/新建隊列函數,并且將該隊列和主程序有關控件的Reference通過VI Server方法傳遞給了消費者循環。圖 49 PCTest_Execute_Controller.vi消費者循環采用典型的狀態機模小,如圖- 50所示。使用Testitems字符串 記錄需要執行的vi的名字(與測試組件相對應),Testindex表示當前運行的測 試項的Index值,該值可以用于記錄當前的運行狀態以暫停程序的運行。圖50消費者循環消費者共有3種運行狀態:運行(Ru

6、n)、暫停(Pause和停止(Stop), 在每一種狀態下主程序前面板控件的顯示均會有所不同,因此消費者會根據不同 的運行狀態修改生產者程序前面板上控件的屬性(通過Reference。圖51所示為Run狀態的執行代碼,程序首先選擇當前的測試組件并且調用相應的測試代 碼;然后將Testindex加1,不斷地調用Run狀態直至收到其它的控制指令(如 Stop或Pause或者測試項執行完畢。圖51消費者Run狀態整個程序的退出與其它的設計模式略有不同,其退出流程如圖52所示。關鍵在于確保消費者循環能夠順利退出,然后再退出生產者循環。因為消費者的 Reference均是來源于生產者,一旦生產者先于消費者退出,則會導致消費者循 環報錯。這里重點強調退出的順序主要是為了避免程序報錯和系統資源沒有釋 放。圖52

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論