亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于面向?qū)ο蠹夹g(shù)的信集閉系統(tǒng)監(jiān)控分站軟件設(shè)計(jì)

        2014-04-29 00:00:00涂帥

        摘 要:介紹了一種基于面向?qū)ο蠹夹g(shù)和設(shè)計(jì)模式的信集閉系統(tǒng)監(jiān)控分站KJF8002嵌入式軟件設(shè)計(jì)方法描述了面向?qū)ο蠹夹g(shù)和設(shè)計(jì)模式的實(shí)現(xiàn)機(jī)制,分析了面向?qū)ο蠛湍J皆谇度胧杰浖O(shè)計(jì)中的應(yīng)用和優(yōu)點(diǎn),并給出了基于面向?qū)ο蟮那度胧杰浖O(shè)計(jì)的模型。

        關(guān)鍵詞:面向?qū)ο?;設(shè)計(jì)模式;嵌入式;KJF8002

        中圖分類(lèi)號(hào):TD355.4

        隨著計(jì)算機(jī)的發(fā)展,嵌入式技術(shù)已經(jīng)在諸多行業(yè)得到廣泛的應(yīng)用,而嵌入式軟件又是嵌入式產(chǎn)品中尤為重要的一部分。由于其自身的特殊性,以往嵌入式軟件的設(shè)計(jì)都采用面向過(guò)程的技術(shù)和方法,但面向過(guò)程的技術(shù)和方法本身的缺陷使得嵌入式軟件設(shè)計(jì)產(chǎn)生了諸如模塊化程度低、代碼重用困難、維護(hù)成本高、可擴(kuò)展性差等諸多問(wèn)題。面向?qū)ο蟮念?lèi)、封裝、繼承等方法可以很好地解決由于面向過(guò)程的方法自身的缺陷所帶來(lái)的諸多問(wèn)題,設(shè)計(jì)模式族的應(yīng)用可以大幅提高代碼重用度,避免重復(fù)開(kāi)發(fā),縮短開(kāi)發(fā)周期。

        本文介紹了將面向?qū)ο蠹夹g(shù)和方法應(yīng)用到KJF8002監(jiān)控分站嵌入式軟件設(shè)計(jì)的方法和過(guò)程,描述了面向?qū)ο蠛湍J皆谠O(shè)計(jì)中的實(shí)現(xiàn)機(jī)制,并給出了一種基于面向?qū)ο蠛湍J降那度胧杰浖O(shè)計(jì)的模型。

        1 KJF8002軟件與模式架構(gòu)

        KJF8002監(jiān)控分站的軟件架構(gòu)采用自底向上分層封裝的形式,如圖1所示,底層向上一層提供相應(yīng)的服務(wù),并接受上層的訪(fǎng)問(wèn)。在業(yè)務(wù)層將處理不同業(yè)務(wù)功能的模塊分別封裝成子類(lèi),將處理各自功能的接口封裝在類(lèi)內(nèi)部,使得各業(yè)務(wù)類(lèi)之間耦合度降低,已達(dá)到高內(nèi)聚低耦合的效果,同時(shí)把將來(lái)有可能變化的信息進(jìn)行單獨(dú)封裝隔離,在有變化時(shí)可使代碼修改量達(dá)到最少,降低了代碼的維護(hù)成本,且不會(huì)因?yàn)樽兓K的修改而影響其他模塊。

        業(yè)務(wù)層與硬件層之間封裝了一層HAL(硬件抽象層)層,HAL充當(dāng)了BSP(板級(jí)支持包)的角色,使應(yīng)用與具體的硬件相隔離,不會(huì)因?yàn)榈讓佑布母膭?dòng)而影響應(yīng)用層。同時(shí)將硬件驅(qū)動(dòng)單獨(dú)封裝,驅(qū)動(dòng)層的代碼采用統(tǒng)一標(biāo)準(zhǔn)化的設(shè)計(jì),在采用同系列硬件設(shè)計(jì)的產(chǎn)品上可以不做修改或做少量修改的應(yīng)用。

        圖1 KJF8002監(jiān)控分站軟件架構(gòu)

        2 設(shè)計(jì)模式實(shí)現(xiàn)機(jī)制

        2.1 硬件代理模式

        硬件代理模式,為應(yīng)用程序提供一種硬件代理來(lái)負(fù)責(zé)訪(fǎng)問(wèn)或控制硬件設(shè)備。如圖2所示,為硬件代理模式的結(jié)構(gòu)。通常,硬件代理模式應(yīng)該包括對(duì)某種硬件設(shè)備的所有操作接口,一般情況下一種硬件代理只能用在一種硬件設(shè)備上,但區(qū)分開(kāi)不同的硬件設(shè)備意味著可以分別獨(dú)立的對(duì)它們進(jìn)行維護(hù),并且能夠靈活的應(yīng)對(duì)將來(lái)的變化。

        圖2 硬件代理模式結(jié)構(gòu)

        協(xié)作角色:

        Hardware Device—具體的硬件設(shè)備。

        Access()—為應(yīng)用程序提供訪(fǎng)問(wèn)具體設(shè)備的方法。

        Configure()—提供配置具體設(shè)備的方法。

        Control()—提供控制具體設(shè)備的方法。

        Disable()—上層應(yīng)用調(diào)用此接口關(guān)閉對(duì)某個(gè)設(shè)備的訪(fǎng)問(wèn)。Initialize()—用于初始化具體設(shè)備。

        應(yīng)用效果:

        該模式結(jié)構(gòu)簡(jiǎn)單且易于實(shí)現(xiàn),它具有封裝硬件接口以及編碼細(xì)節(jié)的所有優(yōu)點(diǎn)。封裝完全隱藏了底層的實(shí)現(xiàn)細(xì)節(jié),使底層硬件與上層應(yīng)用相隔離,這為將來(lái)硬件接口的改變提供了靈活性。

        2.2 輪詢(xún)模式

        KJF8002監(jiān)控分站下屬子設(shè)備眾多,對(duì)子設(shè)備的管理和訪(fǎng)問(wèn)采用輪詢(xún)模式,輪詢(xún)模式結(jié)構(gòu)如圖3,輪詢(xún)是從硬件設(shè)備或傳感器獲取數(shù)據(jù)和信號(hào)的一種常用模式。KJF8002監(jiān)控分站采用對(duì)稱(chēng)機(jī)會(huì)輪詢(xún)和定期輪詢(xún)相結(jié)合的方式,除電子顯示牌等不需要經(jīng)常詢(xún)問(wèn)的設(shè)備采用定輪詢(xún)外,其他設(shè)備均采用對(duì)稱(chēng)機(jī)會(huì)輪詢(xún)。

        圖3 輪詢(xún)模式結(jié)構(gòu)

        2.2.1 協(xié)作角色

        Poller—管理并維護(hù)一個(gè)輪詢(xún)?cè)O(shè)備的循環(huán)鏈表和兩個(gè)接口函數(shù),其中,LinkList設(shè)備鏈表管理和維護(hù)設(shè)備的類(lèi)型、起始地址、終止地址以及當(dāng)前巡檢設(shè)備的種類(lèi)、地址等情況;CurrentPollDeviceSearch接口函數(shù)用于查找當(dāng)前應(yīng)該巡檢的設(shè)備;DevicePolling接口函數(shù)啟動(dòng)設(shè)備巡檢,并對(duì)機(jī)會(huì)輪詢(xún)模式和定期輪詢(xún)模式進(jìn)行裁決。

        PollDataClient—封裝了設(shè)備數(shù)據(jù)處理接口DeviceDataHandle和設(shè)備狀態(tài)處理接口DeviceStateHandle。

        硬件代理—輪詢(xún)模式可以與硬件代理及中介者模式相結(jié)合使用,在訪(fǎng)問(wèn)底層硬件設(shè)備時(shí),Poller并不是直接訪(fǎng)問(wèn)底層硬件設(shè)備,而是通過(guò)硬件代理間接訪(fǎng)問(wèn)。同時(shí)獲得的數(shù)據(jù)狀態(tài)信息可以通過(guò)中介者供其他設(shè)備使用,也可通過(guò)中介者獲取自身感興趣的信息。

        2.2.2 應(yīng)用效果

        輪詢(xún)模式能夠同時(shí)監(jiān)測(cè)多種設(shè)備的狀態(tài)和數(shù)據(jù)信息的改變,由于本文介紹的KJF8002監(jiān)控分站應(yīng)用的場(chǎng)合均為數(shù)據(jù)輪詢(xún)時(shí)間加設(shè)備反應(yīng)時(shí)間小于設(shè)計(jì)的最終期限,所以不需要考慮由于數(shù)據(jù)到達(dá)快于輪詢(xún)時(shí)間而造成的數(shù)據(jù)丟失現(xiàn)象。

        2.3 狀態(tài)機(jī)模式

        狀態(tài)機(jī),是由狀態(tài)、轉(zhuǎn)換、動(dòng)作這三個(gè)主要元素組成的有向圖。KJF8002監(jiān)控分站在獲取子設(shè)備的狀態(tài)、數(shù)據(jù)信息時(shí)采用狀態(tài)機(jī)模式,其結(jié)構(gòu)如圖4所示,狀態(tài)機(jī)模式的采用可以是與特定狀態(tài)相關(guān)的行為局部化,并將不同的狀態(tài)行為相互隔離開(kāi)來(lái),可以大幅度的降低維護(hù)難度和提高擴(kuò)展性。

        圖4 狀態(tài)機(jī)模式結(jié)構(gòu)

        2.3.1 協(xié)作角色

        EventList—狀態(tài)列表,它維護(hù)了所有識(shí)別事件屬性的狀態(tài),在利用C語(yǔ)言開(kāi)發(fā)的環(huán)境中通常是enum枚舉結(jié)構(gòu)。

        StateMachine—狀態(tài)機(jī)類(lèi),它獲取不同的事件屬性狀態(tài),并根據(jù)不同的狀態(tài)調(diào)用不同的處理函數(shù),同時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換。

        事件處理函數(shù)—HandleStateA、HandleStateB、HandleStateC,分別封裝了針對(duì)不同狀態(tài)而執(zhí)行的行為動(dòng)作,包括數(shù)據(jù)的存儲(chǔ)、校驗(yàn)和錯(cuò)誤處理等。

        2.3.2 應(yīng)用效果

        狀態(tài)機(jī)模式單獨(dú)維護(hù)狀態(tài)列表,并將對(duì)應(yīng)的處理狀態(tài)邏輯的行為分散封裝,減少了狀態(tài)之間的相互依賴(lài)性。由于相互獨(dú)立的封裝形式可以為新?tīng)顟B(tài)的插入或原有狀態(tài)的刪除提供極大的靈活性,同時(shí)在編碼方面可以消除由于龐大的條件語(yǔ)句分支而帶來(lái)難以修改和擴(kuò)展的問(wèn)題。

        2.4 中介者模式

        KJF8002監(jiān)控分站掛接多種子設(shè)備,在對(duì)一種設(shè)備的控制時(shí)需要根據(jù)另一種設(shè)備的數(shù)據(jù)和狀態(tài)信息,雖然將每個(gè)設(shè)備的單獨(dú)封裝為數(shù)據(jù)處理對(duì)象可以增大代碼的復(fù)用度,但設(shè)備對(duì)象間頻繁的直接交互勢(shì)必會(huì)增加對(duì)象間的耦合度。中介者模式封裝了一系列設(shè)備對(duì)象間交互的方法,使得各設(shè)備對(duì)象在交互時(shí)不需要直接相互引用。中介者模式結(jié)構(gòu)如圖5所示,中介者模式可以與硬件代理模式結(jié)合使用提高代碼修改和擴(kuò)展的靈活度。

        圖5 中介者模式結(jié)構(gòu)

        2.4.1 協(xié)作角色

        Mediator—中介者封裝了硬件設(shè)備間交互的方法和交互數(shù)據(jù),它維護(hù)者各個(gè)硬件設(shè)備感興趣的數(shù)據(jù),并提供給他們?cè)L問(wèn)這些數(shù)據(jù)的方法接口,它隱藏了數(shù)據(jù)獲取的細(xì)節(jié),而對(duì)于硬件設(shè)備,它們只關(guān)心自己感興趣的那部分?jǐn)?shù)據(jù),而完全不了解其他設(shè)備的存在。

        HardwareProxy—硬件代理,一方面從中介者對(duì)象那里獲取有用信息,另一方面將代理的硬件的狀態(tài)、數(shù)據(jù)信息反饋給中介者對(duì)象。

        HardwareDevice—具體的硬件設(shè)備對(duì)象。

        2.4.2 應(yīng)用效果

        中介者模式創(chuàng)建中介者對(duì)象來(lái)協(xié)調(diào)硬件設(shè)備間的交互,而不需要直接耦合硬件設(shè)備。單獨(dú)的硬件設(shè)備只需要通過(guò)中介者獲取自身關(guān)注的信息,不需要與信息的產(chǎn)生設(shè)備產(chǎn)生直接的關(guān)系,在KJF8002監(jiān)控分站中,控制硬件設(shè)備邏輯信息有其他硬件產(chǎn)生并由中介者進(jìn)行分類(lèi)維護(hù),在硬件設(shè)備需要獲取自身關(guān)注的邏輯信息時(shí)提供相應(yīng)的處理接口。中介者模式將復(fù)雜的處理集中封裝在中介者內(nèi)部,降低了硬件設(shè)備之間的耦合度,使對(duì)代碼的維護(hù)集中著一點(diǎn),相應(yīng)的在擴(kuò)展交互時(shí)只需要在中介者內(nèi)部添加相應(yīng)的數(shù)據(jù)項(xiàng)和處理接口即可,使擴(kuò)展性、維護(hù)性和復(fù)用性得到最大的優(yōu)化。

        3 應(yīng)用模型

        在具體的代碼設(shè)計(jì)時(shí),分別對(duì)硬件訪(fǎng)問(wèn)、數(shù)據(jù)收發(fā)、設(shè)備交互等問(wèn)題采用硬件代理模式、輪詢(xún)模式、狀態(tài)機(jī)模式和中介者模式等設(shè)計(jì)模式方法,設(shè)計(jì)模式模型架構(gòu)如圖6,上層應(yīng)用采用輪詢(xún)的方式訪(fǎng)問(wèn)和管理子設(shè)備,硬件代理模式封裝了所有硬件設(shè)備訪(fǎng)問(wèn),允許上層應(yīng)用通過(guò)代理對(duì)子設(shè)備進(jìn)行讀寫(xiě)數(shù)據(jù),以及初始化、配置和注銷(xiāo)對(duì)設(shè)備的管理和訪(fǎng)問(wèn),代理為上層應(yīng)用提供編碼和連接無(wú)關(guān)的接口,因此在子設(shè)備變化時(shí),易于修改。在從子設(shè)備獲取數(shù)據(jù)或向子設(shè)備發(fā)送數(shù)據(jù)時(shí),采用狀態(tài)機(jī)模式,上層應(yīng)用通過(guò)監(jiān)測(cè)子設(shè)備的當(dāng)前狀態(tài)來(lái)啟動(dòng)數(shù)據(jù)傳輸,在設(shè)備故障時(shí)采用柔性的巡檢方式,以避免對(duì)故障設(shè)備頻繁的訪(fǎng)問(wèn)而造成的時(shí)間消耗。在獲取設(shè)備發(fā)送的數(shù)據(jù)時(shí),根據(jù)設(shè)備傳送數(shù)據(jù)的不同狀態(tài)階段和檢錯(cuò)機(jī)制來(lái)提高軟件的容錯(cuò)性。在對(duì)子設(shè)備進(jìn)行控制時(shí),對(duì)一種設(shè)備的控制需要根據(jù)另一種設(shè)備的狀態(tài)和數(shù)據(jù)信息,為了使設(shè)備間能協(xié)調(diào)協(xié)作,采用了中介者模式。中介者模式提供一種在一組元素中復(fù)雜交互協(xié)調(diào)的方法。它使用一個(gè)中介類(lèi)協(xié)調(diào)設(shè)備集合的行為來(lái)達(dá)到所需的控制效果。

        模式的使用使得嵌入式產(chǎn)品中經(jīng)常遇到的相同問(wèn)題獲得了通解,在以后的產(chǎn)品開(kāi)發(fā)中可以直接套用相關(guān)模式以減少工作量、縮短開(kāi)發(fā)周期。

        圖6 KJF8002監(jiān)控分站軟件模式架構(gòu)

        4 結(jié)束語(yǔ)

        使用面向?qū)ο蠓椒ê湍J皆O(shè)計(jì)嵌入式軟件是一種全新的設(shè)計(jì)理念,基于該理念設(shè)計(jì)的嵌入式軟件具有高效的可重用性和擴(kuò)展性,層間和模塊間耦合性小便于維護(hù),設(shè)計(jì)完成的代碼模塊可以很容易的移植到其他的應(yīng)用場(chǎng)合,從而縮短了開(kāi)發(fā)周期,避免了代碼的重復(fù)開(kāi)發(fā)。

        本文以KJF8002監(jiān)控分站的嵌入式軟件設(shè)計(jì)為例,詳細(xì)說(shuō)明了基于面向?qū)ο蠛湍J降那度胧杰浖O(shè)計(jì)方法,描述了幾種模式在應(yīng)用中的實(shí)現(xiàn)機(jī)制,同時(shí)給出了模式設(shè)計(jì)的應(yīng)用架構(gòu)模型。面向?qū)ο蠛湍J降脑O(shè)計(jì)方法在KJF8002監(jiān)控分站軟件中的成功應(yīng)用表明,這種思想和方法具有強(qiáng)大的生命力和適用性,在嵌入式軟件設(shè)計(jì)中有較高的價(jià)值和推廣性。

        參考文獻(xiàn):

        [1]劉剛,邵志清,肖立中.嵌入式系統(tǒng)開(kāi)發(fā)中的設(shè)計(jì)模式[J].計(jì)算機(jī)應(yīng)用,2006(09):2236-2237.

        [2]肖芳雄,熊光澤,繆敬.面向?qū)ο蠛湍J皆谇度胧杰浖械膽?yīng)用[J].計(jì)算機(jī)工程,2003(22):56-58.

        [3]肖芳雄,熊光澤,謝鑫.一種面向?qū)ο笄度胧杰浖_(kāi)發(fā)平臺(tái)的設(shè)計(jì)和實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2003(12Z):341-343.

        [4]王江濤.觀察者設(shè)計(jì)模式在嵌入式系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)工程,2004(增刊):66-68.

        [5]王曉慶,曾文英,王明文.設(shè)計(jì)模式中的面向?qū)ο笤瓌t及其子模式[J].計(jì)算機(jī)工程,2003(09):192-194.

        [6]朱進(jìn).面向?qū)ο笤O(shè)計(jì)模式的C語(yǔ)言實(shí)現(xiàn)[J].微機(jī)發(fā)展,2005(11):99-101

        作者簡(jiǎn)介:涂帥(1981-),男,安徽六安人,助理工程師,碩士,現(xiàn)主要從事煤礦監(jiān)測(cè)監(jiān)控產(chǎn)品研發(fā)工作。

        作者單位:中煤科工集團(tuán)常州自動(dòng)化研究院,江蘇常州 213015

        基金項(xiàng)目:天地(常州)自動(dòng)化股份有限公司研發(fā)項(xiàng)目(項(xiàng)目編號(hào):13SY012-01)。

        国产精品免费精品自在线观看| 青青草视频在线观看9| 日韩一区三区av在线| 天堂一区二区三区在线观看视频| 国产精品妇女一二三区| 风韵饥渴少妇在线观看| 中文AV怡红院| 少妇裸淫交视频免费看| 亚洲中文字幕精品久久a| 国产成人无码a区在线观看导航 | 人妻在线中文字幕视频| 国产精品女同一区二区软件| 久久aaaa片一区二区| 精品成人av一区二区三区| 亚洲国产成人无码影院| 国产亚洲精品成人av在线| 亚洲av在线观看播放| 亚洲va韩国va欧美va| 纯爱无遮挡h肉动漫在线播放| 9久久精品视香蕉蕉| 精品国精品自拍自在线| 久久99精品国产麻豆| 久久国产免费观看精品3| 中国猛少妇色xxxxx| 91热爆在线精品| 国产91九色免费视频| 亚洲av丰满熟妇在线播放| 一品二品三品中文字幕| 亚洲欧美在线观看一区二区| 精品国产乱码一区二区三区| 中文字幕人妻在线少妇| 日本高清视频永久网站www | 人人妻人人澡人人爽久久av| 亚洲日本在线va中文字幕| 日本一区二区三区激视频| 米奇欧美777四色影视在线| 一本一道波多野结衣av中文| 久久国产免费观看精品 | 日本视频一区二区三区在线| 免费av一区二区三区无码| 欧美aa大片免费观看视频|