精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于MVC模式+狀態(tài)設(shè)計模式的物聯(lián)網(wǎng)氣體檢測開源項目

嵌入式應用研究院 ? 來源:嵌入式應用研究院 ? 作者:嵌入式應用研究院 ? 2022-11-21 09:34 ? 次閱讀

上節(jié)我們分享了MVC框架、狀態(tài)模式組合在實際開發(fā)中的應用,它能夠讓我們的軟件設(shè)計流程更加的清晰、易于維護:

嵌入式軟件設(shè)計之美-以實際項目應用MVC框架與狀態(tài)模式(上)

那么這一節(jié)我們就直接開門見山,從接下來的這個開源項目分享開始:

項目開源倉庫:

https://github.com/Yangyuanxin/IotSensorDetect

項目獲取方法:

gitclosehttps://github.com/Yangyuanxin/IotSensorDetect

該項目會不斷的添加新的示例來持續(xù)完善。

這是一個基于MVC模式+狀態(tài)設(shè)計模式的物聯(lián)網(wǎng)氣體檢測開源項目,目前的整體軟件通信框架圖(后續(xù)會根據(jù)繼續(xù)拓展)如下所示:

727a7028-68e6-11ed-8abf-dac502259ad0.png

如上軟件通信框架圖所示,騰訊連連小程序 & 騰訊云IoT Explorer物聯(lián)網(wǎng)平臺相對于設(shè)備端來說是上位機,而下位機部分則是由四個主要的任務來協(xié)作完成的,分別是ControllerTask、IotRecvTask、ModelHnadlerControolerTask以及ModelSensorHandlerTask,而Task與Task之間的通信方式是基于消息隊列的形式來實現(xiàn)的。采用消息隊列通訊是一種軟件設(shè)計解耦的實現(xiàn)方式,線程與線程之間通過消息隊列通信,能夠?qū)崿F(xiàn)業(yè)務隔離,讓整個系統(tǒng)的可拓展性大大提高。除此之外,采用消息隊列的好處是能夠攜帶數(shù)據(jù)載體,數(shù)據(jù)格式也可以由用戶自定義。例如本開源項目的自定義消息結(jié)構(gòu)體如下:

structMsg_t
{
uint8_tType;//消息類型
uint32_tSensorValue;//傳感器數(shù)值
charData[MSG_LEN];//其它可能的數(shù)據(jù)承載
};

其中,軟件通信時序分為兩種模式:

1、Ctrl Mode

該模式由APP端發(fā)起,對于APP端來說,APP端可以下發(fā)三種命令,分別是檢測、停止、返回,如下圖所示:

72a560da-68e6-11ed-8abf-dac502259ad0.png

當用戶在APP端按下檢測時,APP端會下發(fā)START命令,當Controller接收到Iot端下發(fā)的指令時會將其轉(zhuǎn)發(fā)給Model模塊來控制傳感器進行檢測,期間檢測過程中的設(shè)備狀態(tài)以及傳感器數(shù)值會進行更新,檢測過程也可以通過下發(fā)停止來打斷;而返回則是根據(jù)當前的設(shè)備狀態(tài)來返回到上一個檢測狀態(tài);這一切是通過狀態(tài)模式來維護的,其狀態(tài)流程圖如下:

72ca3b44-68e6-11ed-8abf-dac502259ad0.png

在程序中,該狀態(tài)流程圖是通過一個結(jié)構(gòu)體數(shù)組來定義的:

SensorStateItem_tSensorStateTable[]=
{
{IDLE,START,CALI},//IDLE->START->CALI
{CALI,NEXT,DETECT},//CALI->NEXT->DETECT
{CALI,STOP,IDLE},//CALI->STOP->IDLE
{DETECT,NEXT,RESULT},//DETECT->NEXT->RESULT
{DETECT,PREV,CALI},//DETECT->PREV->CALI
{DETECT,STOP,IDLE},//DETECT->STOP->IDLE
{RESULT,PREV,DETECT},//RESULT->PREV->DETECT
{RESULT,STOP,IDLE},//RESULT->STOP->IDLE
};

切換狀態(tài)的過程是由DoSensorStatus來實現(xiàn)的:

__IOSensorState_tCurState=IDLE;//當前狀態(tài)
__IOSensorState_tPrevState=IDLE;//上一個狀態(tài)

SensorStateItem_t*FindCurStateAndEvent(SensorState_tCurState,SensorEvent_tEvent)
{
intIndex=0;
//查狀態(tài)表
for(Index=0;IndexNextSate;
returnRet;
};

2、Auto Report Mode

該模式是由設(shè)備端主動定時上報給到APP端,如下圖所示:

72dfdc42-68e6-11ed-8abf-dac502259ad0.png

檢測設(shè)備在沒有啟動檢測功能時,設(shè)備端也會定時上報傳感器數(shù)值以及設(shè)備狀態(tài);因此,Iot端能夠定時看到數(shù)據(jù)在不斷發(fā)生變化。

以上便是MCV框架與狀態(tài)模式最簡單的應用了。當然,從上節(jié)我們就已經(jīng)知道,對于Controller和View而言,它的體現(xiàn)形式可以有很多種,它不局限于僅僅是Iot的形式,它也可以是由其它模塊來構(gòu)成;這部分待后續(xù)項目更新后上傳。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5068

    文章

    19014

    瀏覽量

    303231
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2903

    文章

    44262

    瀏覽量

    371216
  • MVC
    MVC
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    13841

原文標題:嵌入式軟件設(shè)計之美-以實際項目應用MVC框架與狀態(tài)模式(下)

文章出處:【微信號:嵌入式應用研究院,微信公眾號:嵌入式應用研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    氣體檢測儀常用的傳感器

    濕度影響大,檢測氣體種類有限,目前最主要應用于甲烷、二氧化碳、一氧化碳、六氟化硫、二氧化硫、碳氫等氣體。  二、氣體檢測儀之半導體原理  原理:半導體式
    發(fā)表于 12-02 15:09

    基于MVC模式的WEB應用框架

    MVC模式是目前WEB應用系統(tǒng)設(shè)計中較為流行的一種,它在J2EE應用平臺上的表現(xiàn)使其成為眾多設(shè)計者的首選。其中,基于MVC模式的Struts框架使用最為廣泛,論文首先討論了它的內(nèi)部實
    發(fā)表于 12-29 17:13 ?12次下載

    MVC模式在教學考評系統(tǒng)中的應用

    通過對MVC 設(shè)計模式進行的分析,探索了基于MVC 模式開發(fā)Web 應用程序的優(yōu)缺點,提出基于MVC
    發(fā)表于 10-14 16:10 ?0次下載

    污染氣體檢測電路

    污染氣體檢測電路
    發(fā)表于 02-12 07:52 ?678次閱讀
    污染<b class='flag-5'>氣體檢測</b>電路

    基于遙測的移動艙室內(nèi)氣體檢測方法

    基于遙測的移動艙室內(nèi)氣體檢測方法 在各種密閉的移動艙室環(huán)境中,存在犬量氣體狀態(tài)污染,這些氣體污染
    發(fā)表于 11-16 10:11 ?1134次閱讀
    基于遙測的移動艙室內(nèi)<b class='flag-5'>氣體檢測</b>方法

    基于MVC模式的地圖控件的設(shè)計

    MVC模式增加了程序的可維護性、可擴展性。文中在研究、分析MVC設(shè)計模式思想的基礎(chǔ)上,應用MVC設(shè)計模式
    發(fā)表于 02-22 11:08 ?23次下載
    基于<b class='flag-5'>MVC</b><b class='flag-5'>模式</b>的地圖控件的設(shè)計

    氣體檢測方法和氣體檢測器設(shè)備

    氣體檢測方法和氣體檢測器設(shè)備,下來看看。
    發(fā)表于 12-17 15:26 ?13次下載

    02_MVC設(shè)計模式_上課源碼

    jsp-mvc設(shè)計模式
    發(fā)表于 07-10 11:02 ?0次下載

    mvc模式的優(yōu)缺點

    MVC模式的優(yōu)點:各施其職,互不干涉在MVC模式中,三個層各施其職,所以如果一旦哪一層的需求發(fā)生了變化,就只需要更改相應的層中的代碼而不會影響到其它層中的代碼。
    發(fā)表于 11-17 16:42 ?3916次閱讀
    <b class='flag-5'>mvc</b><b class='flag-5'>模式</b>的優(yōu)缺點

    NDIR氣體檢測器解決方案和PID氣體檢測器解決方案

    這是 ADI 公司關(guān)于氣體檢測器的第二篇文章,包含 NDIR(非色散紅外)氣體檢測器解決方案和 PID(光離子)氣體檢測器解決方案。第一篇文章介紹基于電化學傳感器的微功耗有毒氣體檢測
    發(fā)表于 12-29 18:39 ?35次下載
    NDIR<b class='flag-5'>氣體檢測</b>器解決方案和PID<b class='flag-5'>氣體檢測</b>器解決方案

    可燃氣體檢測儀和有毒氣體檢測儀的區(qū)別

    氣體檢測儀在我國工業(yè)領(lǐng)域中的應用范圍很廣,應用價值也越來越被人們所重視與關(guān)注。我們知道在氣體檢測儀的分類中有:有毒氣體檢測儀、可燃氣體檢測儀、便攜式
    發(fā)表于 04-15 10:01 ?1748次閱讀

    什么是氣體檢測儀,它的作用是什么

    什么是氣體檢測儀,武漢聚舟科技帶你了解什么是氣體檢測儀,氣體檢測儀是一種可以檢測氣體的儀器,氣體檢測
    發(fā)表于 06-07 17:11 ?3498次閱讀

    氣體檢測儀必備的七大功能

    氣體檢測儀的設(shè)計目的是幫助您更容易地做出安全決定。新的“智能”功能不僅能夠提供清晰的氣體檢測狀態(tài)和傳感器信息,而且能夠提醒報警后該做些什么。這樣您無需為解讀氣體檢測儀報警讀數(shù)而費神。
    發(fā)表于 07-29 09:52 ?1354次閱讀

    氣體檢測儀的分類有哪些?

    氣體檢測儀是一種氣體泄露濃度檢測的儀器儀表工具,氣體檢測儀可檢測硫化氫,一氧化碳,氧氣,二氧化硫,磷化氫,氨氣,二氧化氮,氰化氫,氯氣,二氧
    發(fā)表于 09-16 10:56 ?4114次閱讀

    氣體檢測裝置開源分享

    電子發(fā)燒友網(wǎng)站提供《氣體檢測裝置開源分享.zip》資料免費下載
    發(fā)表于 11-24 10:03 ?2次下載
    <b class='flag-5'>氣體檢測</b>裝置<b class='flag-5'>開源</b>分享