環(huán)境監(jiān)測(cè)系統(tǒng)上電后會(huì)開始進(jìn)行系統(tǒng)變量初始化。這個(gè)階段環(huán)境監(jiān)測(cè)系統(tǒng)會(huì)初始化所有全局變量、數(shù)據(jù)結(jié)構(gòu)、創(chuàng)建最低優(yōu)先級(jí)空閑任務(wù),創(chuàng)建6個(gè)空數(shù)據(jù)鏈表:空任務(wù)控制塊鏈表、空隊(duì)列控制塊鏈表、空事件控制塊鏈表、空標(biāo)志組鏈表、空內(nèi)存控制塊鏈表、空閑定時(shí)器控制塊鏈表。初始化完系統(tǒng)變量后,先創(chuàng)建開始任務(wù),由開始任務(wù)創(chuàng)建讀取傳感器任務(wù)、按鍵任務(wù)、主任務(wù)、LED任務(wù)、蜂鳴器任務(wù)、WiFi物聯(lián)任務(wù)。創(chuàng)建完后便開始掛起開始任務(wù),然后初始化硬件,并開中斷。多任務(wù)管理器接下來(lái)會(huì)根據(jù)任務(wù)的優(yōu)先級(jí)在就緒表中查找優(yōu)先級(jí)最高的,并操作資源切換到該任務(wù)執(zhí)行,μC/OS-Ⅱ系統(tǒng)通過(guò)定時(shí)中斷的方式實(shí)現(xiàn)。每個(gè)時(shí)鐘節(jié)拍到來(lái),就會(huì)進(jìn)入一次定時(shí)中斷。中斷后監(jiān)測(cè)是否有重要任務(wù)需要運(yùn)行并進(jìn)行任務(wù)切換,運(yùn)行新的任務(wù)或者繼續(xù)運(yùn)行本任務(wù),確保實(shí)時(shí)性。
環(huán)境監(jiān)測(cè)系統(tǒng)是通過(guò)WiFi模塊與MCU以串口通信來(lái)實(shí)現(xiàn)的,所以要在MCU端根據(jù)編寫串口事件來(lái)解析接收的數(shù)據(jù)包以及發(fā)送數(shù)據(jù)到系統(tǒng)平臺(tái)如圖所示。
按照通信協(xié)議,環(huán)境監(jiān)測(cè)系統(tǒng)發(fā)送的數(shù)據(jù)也有按照協(xié)議封裝在數(shù)據(jù)幀里,以便WiFi端或系統(tǒng)平臺(tái)端識(shí)別。數(shù)據(jù)區(qū)的只讀數(shù)據(jù),包含了監(jiān)測(cè)環(huán)境質(zhì)量的參數(shù),用結(jié)構(gòu)體封裝起來(lái),方便管理。根據(jù)設(shè)備需求,首先需要注冊(cè)、登錄、找回密碼、修改密碼、設(shè)備查找、配置設(shè)備、設(shè)備登錄以及設(shè)備數(shù)據(jù)顯示控制等功能如圖所示。環(huán)境監(jiān)測(cè)系統(tǒng)平臺(tái)的API提供有匿名、手機(jī)號(hào)碼、郵箱三種注冊(cè)方式,該環(huán)境監(jiān)測(cè)系統(tǒng)的APP設(shè)計(jì)為郵箱注冊(cè)。