在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

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

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

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

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

項(xiàng)目開源倉庫:

https://github.com/Yangyuanxin/IotSensorDetect

項(xiàng)目獲取方法:

gitclosehttps://github.com/Yangyuanxin/IotSensorDetect

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

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

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

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

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

__IOSensorState_tCurState=IDLE;//當(dāng)前狀態(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)模式最簡單的應(yīng)用了。當(dāng)然,從上節(jié)我們就已經(jīng)知道,對于Controller和View而言,它的體現(xiàn)形式可以有很多種,它不局限于僅僅是Iot的形式,它也可以是由其它模塊來構(gòu)成;這部分待后續(xù)項(xiàng)目更新后上傳。

審核編輯:湯梓紅

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

    關(guān)注

    5082

    文章

    19126

    瀏覽量

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

    關(guān)注

    2909

    文章

    44635

    瀏覽量

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

    關(guān)注

    0

    文章

    73

    瀏覽量

    13859

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    氣體檢測儀常用的傳感器

    濕度影響大,檢測氣體種類有限,目前最主要應(yīng)用于甲烷、二氧化碳、一氧化碳、六氟化硫、二氧化硫、碳?xì)涞?b class='flag-5'>氣體。  二、氣體檢測儀之半導(dǎo)體原理  原理:半導(dǎo)體式
    發(fā)表于 12-02 15:09

    基于MVC模式的WEB應(yīng)用框架

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

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

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

    污染氣體檢測電路

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

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

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

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

    MVC模式增加了程序的可維護(hù)性、可擴(kuò)展性。文中在研究、分析MVC設(shè)計模式思想的基礎(chǔ)上,應(yīng)用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)缺點(diǎn)

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

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

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

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

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

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

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

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

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

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

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

    氣體檢測裝置開源分享

    電子發(fā)燒友網(wǎng)站提供《氣體檢測裝置開源分享.zip》資料免費(fèi)下載
    發(fā)表于 11-24 10:03 ?2次下載
    <b class='flag-5'>氣體檢測</b>裝置<b class='flag-5'>開源</b>分享
    主站蜘蛛池模板: 亚洲成人观看| 色香视频在线| 欧美一级特黄aa大片| 天天拍天天射| 久久久五月| 第四色视频| 午夜96影视| 美国bj69 video18| 朋友夫妇和交换性bd高清| 四虎www.| 97成人免费视频| 免费视频在线播放| 色综合久久久高清综合久久久| www.91免费视频| 天天干视频网站| japanese色系tube日本护士| 在线观看日本亚洲一区| 色狠狠xx| 国产一区精品视频| 国产成人悠悠影院| 亚洲va久久久久综合| 丁香婷五月| 狂野欧美性色xo影院| 日本永久免费| 日日添天天做天天爱| 99久久99久久| 欧美一级特黄啪啪片免费看| 日韩黄网| 怡红院网址| 欧美性受xxxx极品| 在线看片国产| 香蕉久久高清国产精品免费| 特别黄的免费视频大片| 久久性色| 51精品视频免费国产专区| 一色屋成人免费精品网站| 国产成人在线播放视频| 亚洲一区二区三区免费在线观看| 免费网站毛片| 2021久久天天躁狠狠躁夜夜| 日本大黄视频|