<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > LabVIEW程序設(shè)計(jì)模式(五)—生產(chǎn)者/消費(fèi)者模式(5)

          LabVIEW程序設(shè)計(jì)模式(五)—生產(chǎn)者/消費(fèi)者模式(5)

          作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
          結(jié)合狀態(tài)機(jī)模式、事件結(jié)構(gòu)和動(dòng)態(tài)調(diào)用技術(shù),能夠歸納出針對(duì)較復(fù)雜應(yīng)用程序的通用設(shè)計(jì)模式。對(duì)常見(jiàn)的測(cè)試測(cè)量程序而言,主要由數(shù)據(jù)采集、數(shù)據(jù)分析、外圍菜單項(xiàng)響應(yīng)、報(bào)表生成、數(shù)據(jù)顯示這五個(gè)部分組成。其中數(shù)據(jù)采集是相對(duì)獨(dú)立和長(zhǎng)時(shí)間運(yùn)行的一個(gè)模塊,可以與其它的模塊同時(shí)運(yùn)行。因此,在大多數(shù)持續(xù)采集的程序設(shè)計(jì)中需要將它單獨(dú)作為一個(gè)模塊運(yùn)行。與此同時(shí),子程序也需要一條數(shù)據(jù)通道發(fā)送一些反饋命令給主程序。于是可以構(gòu)成如圖 44所示的一個(gè)通訊回路。


          圖 44 通訊回路
          LabVIEW提供了多種主程序與子程序之間的通訊方式,如隊(duì)列、Reference、事件等。為了介紹這些方式的具體使用方法,將結(jié)合最常用的數(shù)據(jù)采集實(shí)例進(jìn)行闡述。
          【應(yīng)用7】
          本例以“計(jì)算機(jī)組件測(cè)試”為應(yīng)用介紹消費(fèi)者和生產(chǎn)者循環(huán)的具體使用方法和數(shù)據(jù)交互過(guò)程。例子并不是為了說(shuō)明計(jì)算機(jī)組件測(cè)試的過(guò)程和方法,而是重在強(qiáng)調(diào)對(duì)該應(yīng)用而言應(yīng)該采用什么樣的程序設(shè)計(jì)模式。因此,例子中使用了多種數(shù)據(jù)交互方式,這些交互方式的選擇并不是唯一的,可以根據(jù)實(shí)際情況選擇合適的數(shù)據(jù)交互方法。
          假設(shè)計(jì)算機(jī)的整個(gè)測(cè)試過(guò)程由CPU、RAM、CDROM、Power….等等數(shù)項(xiàng)子測(cè)試項(xiàng)組成,程序需要充分考慮可擴(kuò)展性要求,使得后期增加新的待測(cè)組件時(shí)對(duì)主程序的影響不大或者沒(méi)有影響。測(cè)試過(guò)程應(yīng)能夠?qū)崿F(xiàn)暫停和提前停止的功能,并且測(cè)試過(guò)程不受其它界面操作的影響。
          根據(jù)以上的測(cè)試要求,可以把整個(gè)測(cè)試程序分為兩個(gè)部分:控制部分和執(zhí)行部分。其中前者是用戶主界面,用來(lái)響應(yīng)用戶界面事件以及控制測(cè)試流程的執(zhí)行;后者是執(zhí)行程序,用來(lái)根據(jù)控制命令運(yùn)行測(cè)試流程并且產(chǎn)生測(cè)試結(jié)果。系統(tǒng)的結(jié)構(gòu)如圖 45所示。


          圖 45 “計(jì)算機(jī)組件測(cè)試系統(tǒng)”結(jié)構(gòu)
          從上圖可以看出,該應(yīng)用與消費(fèi)者和生產(chǎn)者模式是相符的,不同的是還涉及到消費(fèi)者(執(zhí)行部分)向生產(chǎn)者(控制部分)的數(shù)據(jù)傳輸。本例使用的是隊(duì)列型的生產(chǎn)者和消費(fèi)者模式,而反向的數(shù)據(jù)傳輸使用了“用戶自定義事件”和“Reference”方法。當(dāng)然,也可以使用隊(duì)列等其它的方式。
          程序的主界面如圖 46所示,包括菜單欄,測(cè)試控制按鈕和測(cè)試項(xiàng)列表3大部分。背面板如圖 47所示,生產(chǎn)者部分采用狀態(tài)機(jī)和事件結(jié)構(gòu)相結(jié)合的設(shè)計(jì)模式,共包含5大類(lèi)的狀態(tài)。


          圖 46 PC Test前面板

          圖 47 PC Test背面板
          在PInitialize狀態(tài)中,主要實(shí)現(xiàn)前面板控件的初始化以及調(diào)用待測(cè)組件,如圖 48所示。為了滿足測(cè)試系統(tǒng)的可擴(kuò)展性要求,將目前的測(cè)試組件統(tǒng)一集中放置到TestItems目錄中。如果后續(xù)需要增加測(cè)試組件項(xiàng),只需要編寫(xiě)相應(yīng)的測(cè)試組件代碼并且放置到TestItems目錄中即可。


          圖 48 PInitialize狀態(tài)
          在DInitialize、Run、Pause和Stop狀態(tài)中都使用到了PCTest_Execute_Controller.vi程序,該VI用來(lái)啟動(dòng)和控制消費(fèi)者循環(huán),如圖 49所示。圖中使用了新建隊(duì)列函數(shù),并且將該隊(duì)列和主程序有關(guān)控件的Reference通過(guò)VI Server方法傳遞給了消費(fèi)者循環(huán)。

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

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();