本發(fā)明屬于物聯(lián)網(wǎng)設(shè)備運行控制方法,涉及一種通過配置文件控制物聯(lián)網(wǎng)設(shè)備分模式運行的方法。
背景技術(shù):
很多物聯(lián)網(wǎng)設(shè)備,尤其是用于數(shù)據(jù)采集監(jiān)測應(yīng)用的物聯(lián)網(wǎng)設(shè)備,往往被設(shè)計為以極低的占空比間歇采集傳輸數(shù)據(jù)以降低功耗。這種設(shè)計方案雖然有利于提升設(shè)備使用電池持續(xù)工作的時間,但不利于用戶與設(shè)備的交互。比如,在部署設(shè)備時,用戶希望設(shè)備能夠快速發(fā)送數(shù)據(jù)以檢測安裝是否正確;在維護設(shè)備時,用戶往往希望能夠與設(shè)備進行點對點無延遲交互以檢測設(shè)備故障。文獻[1]mingxia,yabodong,wenyuanxu,xiangyanglianddongminglu.mc2:multimodeuser-centricdesignofwirelesssensornetworksforlong-termmonitoring.acmtransactionsonsensornetworks.vol.10,no.3,2014.(夏明,董亞波,徐文淵,李向陽和魯東明.mc2:用于長期監(jiān)測無線傳感器網(wǎng)絡(luò)的多模式以用戶為中心的設(shè)計.acm傳感器網(wǎng)絡(luò)匯刊,第10卷,第3期,2014.)提出了一種物聯(lián)網(wǎng)設(shè)備分模式運行的方法,即設(shè)備可以根據(jù)應(yīng)用或用戶操作命令,切換模式并運行相應(yīng)的功能模塊,從而在不干擾監(jiān)測應(yīng)用性能的同時,提升用戶操作效率。然而,該方法在很大程度上提高了設(shè)備固件開發(fā)的復雜度。因為開發(fā)者不僅要開發(fā)多個功能模塊,還要編寫根據(jù)應(yīng)用或用戶操作命令進行模式模塊切換運行的邏輯。同時,也導致了較大的設(shè)備固件更新開銷。
技術(shù)實現(xiàn)要素:
為了克服已有物聯(lián)網(wǎng)設(shè)備分模式運行方式開發(fā)開銷較大、設(shè)備固件更新開銷較大的不足,本發(fā)明提供了一種開發(fā)開銷較小、設(shè)備固件更新開銷較小的通過配置文件控制物聯(lián)網(wǎng)設(shè)備分模式運行的方法。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種通過配置文件控制物聯(lián)網(wǎng)設(shè)備分模式運行的方法,開發(fā)者將配置文件發(fā)送到物聯(lián)網(wǎng)設(shè)備上,物聯(lián)網(wǎng)設(shè)備根據(jù)配置文件,在檢測到應(yīng)用或用戶操作命令時,自動配置運行模式并控制功能模塊工作;
該方法包括開發(fā)計算機上運行的開發(fā)環(huán)境與在物聯(lián)網(wǎng)設(shè)備上運行的中間件軟件;
所述開發(fā)環(huán)境接收開發(fā)者提供的配置信息進行處理,同時接收開發(fā)者提供的模塊實現(xiàn)代碼進行編譯,并將處理后形成的配置文件與編譯后形成的模塊實現(xiàn)庫分離發(fā)送至物聯(lián)網(wǎng)設(shè)備;
所述物聯(lián)網(wǎng)設(shè)備中間件軟件在收到配置文件與模塊實現(xiàn)庫后,根據(jù)配置文件所包含的配置信息,首先根據(jù)默認模式id,運行默認模式;當探測到操作系統(tǒng)事件時,與命令配置列表中每條命令配置的命令接口、命令類型和命令數(shù)據(jù)三個字段進行逐條匹配,檢測是否有命令,并返回準確的命令id;然后,根據(jù)命令id和當前模式id,在操作配置列表中檢索對應(yīng)的操作配置,并根據(jù)檢索到的操作配置中指定的下一個模式id,停止當前模式,并停止當前模式下所有的模塊,然后運行指定的下一個模式。
進一步,所述開發(fā)計算機上運行的開發(fā)環(huán)境中,配置文件包含四部分內(nèi)容:模式配置列表、模塊配置列表、命令配置列表和操作配置列表。
再進一步,所述模式配置列表包含一個默認模式id,以及多個模式配置,每個模式配置包括模式id和模式名稱。
所述模塊配置列表包含多個模塊配置,每個模塊配置包括模塊id、模塊名稱、父模式id、依賴模塊id列表、參數(shù)列表、模塊實現(xiàn)函數(shù)名稱和模塊實現(xiàn)函數(shù)地址。
所述命令配置列表包含多個命令配置,每個命令配置包括命令id、命令接口、命令類型和命令數(shù)據(jù)。
所述操作配置列表包含多個操作配置,每個操作配置包括:命令id、當前模式id和下一個模式id。
在開發(fā)計算機上運行的開發(fā)環(huán)境將模塊配置與模塊實現(xiàn)庫綁定方法包括以下步驟:開發(fā)者向開發(fā)環(huán)境提供模塊實現(xiàn)代碼和配置信息,其中包括了模塊實現(xiàn)函數(shù)名稱。開發(fā)環(huán)境對模塊實現(xiàn)代碼進行編譯,并在編譯后生成的map文件中尋找該名稱函數(shù)的地址,并將獲得的地址賦值給模塊配置中的模塊實現(xiàn)函數(shù)地址。
更進一步,在物聯(lián)網(wǎng)設(shè)備上運行的中間件軟件中,模式的運行方法如下:根據(jù)配置信息,將模式所屬的所有模塊分為運行和準備兩個列表;首先將所有依賴模塊id列表不為空的模塊加入到準備列表,并將所有依賴模塊id列表為空的模塊加入到運行列表中進行并發(fā)調(diào)度運行;在運行模塊時,中間件軟件將運行模塊配置中模塊實現(xiàn)函數(shù)地址所指向的在模塊實現(xiàn)庫中的函數(shù),并將模塊配置中參數(shù)列表中的參數(shù)傳遞給該函數(shù);然后不斷檢測準備列表中模塊所依賴的所有模塊是否已執(zhí)行完畢,是則將該模塊加入到運行列表中進行并發(fā)調(diào)度運行。所有執(zhí)行完畢的模塊將從運行列表中移除。
本發(fā)明的技術(shù)構(gòu)思為:為了降低物聯(lián)網(wǎng)設(shè)備分模式運行的開發(fā)代價,本發(fā)明提供了一種通過配置文件控制物聯(lián)網(wǎng)設(shè)備分模式運行的方法。開發(fā)者只需要編寫模式和模塊的運行配置文件,物聯(lián)網(wǎng)設(shè)備即可以按照此配置文件,自動管理模式和模塊,并在檢測到應(yīng)用和用戶操作命令時,自動切換模式和模塊運行。因此本方法能夠大幅度降低開發(fā)開銷。同時,由于僅需要發(fā)送配置文件進行模式模塊運行機制的更新,因此本方法還能夠大幅度降低設(shè)備固件更新的開銷。
本發(fā)明的有益效果主要表現(xiàn)在:開發(fā)開銷較小、設(shè)備固件更新開銷較小。
附圖說明
圖1是通過配置文件控制物聯(lián)網(wǎng)設(shè)備分模式運行方法的示意圖。
圖2是配置文件構(gòu)成圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明作進一步描述。
參照圖1,一種通過配置文件控制物聯(lián)網(wǎng)設(shè)備分模式運行的方法,開發(fā)者將配置文件發(fā)送到物聯(lián)網(wǎng)設(shè)備上,物聯(lián)網(wǎng)設(shè)備根據(jù)配置文件,在檢測到應(yīng)用或用戶操作命令時,自動配置運行模式并控制功能模塊工作;
該方法包括開發(fā)計算機上運行的開發(fā)環(huán)境與在物聯(lián)網(wǎng)設(shè)備上運行的中間件軟件;
所述開發(fā)環(huán)境接收開發(fā)者提供的配置信息進行處理,同時接收開發(fā)者提供的模塊實現(xiàn)代碼進行編譯,并將處理后形成的配置文件與編譯后形成的模塊實現(xiàn)庫分離發(fā)送至物聯(lián)網(wǎng)設(shè)備;
所述物聯(lián)網(wǎng)設(shè)備中間件軟件在收到配置文件與模塊實現(xiàn)庫后,根據(jù)配置文件所包含的配置信息,首先根據(jù)默認模式id,運行默認模式;當探測到操作系統(tǒng)事件時,與命令配置列表中每條命令配置的命令接口、命令類型和命令數(shù)據(jù)三個字段進行逐條匹配,檢測是否有命令,并返回準確的命令id;然后,根據(jù)命令id和當前模式id,在操作配置列表中檢索對應(yīng)的操作配置,并根據(jù)檢索到的操作配置中指定的下一個模式id,停止當前模式,并停止當前模式下所有的模塊,然后運行指定的下一個模式。
進一步,參照圖2,所述開發(fā)計算機上運行的開發(fā)環(huán)境中,配置文件包含四部分內(nèi)容:模式配置列表、模塊配置列表、命令配置列表和操作配置列表。
再進一步,所述模式配置列表包含一個默認模式id,以及多個模式配置,每個模式配置包括模式id和模式名稱。
所述模塊配置列表包含多個模塊配置,每個模塊配置包括模塊id、模塊名稱、父模式id、依賴模塊id列表、參數(shù)列表、模塊實現(xiàn)函數(shù)名稱和模塊實現(xiàn)函數(shù)地址。
所述命令配置列表包含多個命令配置,每個命令配置包括命令id、命令接口、命令類型和命令數(shù)據(jù)。
所述操作配置列表包含多個操作配置,每個操作配置包括:命令id、當前模式id和下一個模式id。
在開發(fā)計算機上運行的開發(fā)環(huán)境將模塊配置與模塊實現(xiàn)庫綁定方法包括以下步驟:開發(fā)者向開發(fā)環(huán)境提供模塊實現(xiàn)代碼和配置信息,其中包括了模塊實現(xiàn)函數(shù)名稱。開發(fā)環(huán)境對模塊實現(xiàn)代碼進行編譯,并在編譯后生成的map文件中尋找該名稱函數(shù)的地址,并將獲得的地址賦值給模塊配置中的模塊實現(xiàn)函數(shù)地址。
更進一步,在物聯(lián)網(wǎng)設(shè)備上運行的中間件軟件中,模式的運行方法如下:根據(jù)配置信息,將模式所屬的所有模塊分為運行和準備兩個列表;首先將所有依賴模塊id列表不為空的模塊加入到準備列表,并將所有依賴模塊id列表為空的模塊加入到運行列表中進行并發(fā)調(diào)度運行;在運行模塊時,中間件軟件將運行模塊配置中模塊實現(xiàn)函數(shù)地址所指向的在模塊實現(xiàn)庫中的函數(shù),并將模塊配置中參數(shù)列表中的參數(shù)傳遞給該函數(shù);然后不斷檢測準備列表中模塊所依賴的所有模塊是否已執(zhí)行完畢,是則將該模塊加入到運行列表中進行并發(fā)調(diào)度運行。所有執(zhí)行完畢的模塊將從運行列表中移除。