一、效果展示
二、產(chǎn)品介紹
智能電子牌Demo是基于OpenHarmony系統(tǒng)開發(fā)的應(yīng)用,其中主要由日程信息獲取模塊、實(shí)時(shí)天氣模塊、時(shí)間獲取模塊、定時(shí)提醒模塊與UI顯示模塊組成。通過該設(shè)備我們不僅可以隨時(shí)查看當(dāng)天日程規(guī)劃,設(shè)定定時(shí)提醒,還可以查看時(shí)間,日期以及室內(nèi)外溫濕度,空氣PM值等實(shí)時(shí)天氣狀況。 1. 設(shè)備運(yùn)行效果 將潤和Hi3516DV300 AI Camera開發(fā)板進(jìn)行OpenHarmony 1.0.1 版本的固件燒錄,開發(fā)板的網(wǎng)絡(luò)連接以及智能電子牌應(yīng)用程序的安裝,之后打開智能電子牌應(yīng)用,我們可以看到運(yùn)行效果圖如下: ? 我們可以看到實(shí)時(shí)獲取的時(shí)間天氣(屏幕左半部分)與日程(屏幕右半部分)等信息,還可以通過滑動(dòng)屏幕右上角的時(shí)間選擇器選擇提醒時(shí)間;日程信息包括日程的起始與終止時(shí)間,日程名與日程的執(zhí)行細(xì)節(jié)等。 接收到日程時(shí)如下圖: ? ? 2. 設(shè)備與云端的交互 ? 我們?cè)谑謾C(jī)端的數(shù)字管家APP中更新日程信息后對(duì)應(yīng)信息將上傳至云端,我們開發(fā)的智能電子牌應(yīng)用會(huì)通過HTTP協(xié)議主動(dòng)獲取云端日程信息并進(jìn)行顯示更新。 ? 3.智能電子牌主要功能描述 智能電子牌在進(jìn)行網(wǎng)絡(luò)連接配置后可以隨時(shí)查看當(dāng)天日程規(guī)劃,日程信息包括日程的起始與終止時(shí)間,日程名與日程的執(zhí)行細(xì)節(jié);通過設(shè)定定時(shí)提醒實(shí)現(xiàn)定點(diǎn)準(zhǔn)時(shí)提示;還可以在屏幕上查看實(shí)時(shí)時(shí)間,日期以及室內(nèi)外溫濕度,空氣PM值等實(shí)時(shí)天氣狀況。用戶可以通過人性化的顯示服務(wù)輕松記住自己的日程規(guī)劃,了解到當(dāng)前的天氣狀況是否適合戶外運(yùn)動(dòng),同時(shí),智能電子牌還能作為一款自動(dòng)校準(zhǔn)的實(shí)時(shí)時(shí)鐘,貼心地服務(wù)于用戶,為用戶的生活帶來舒適與便捷。
三、項(xiàng)目過程
智能電子牌項(xiàng)目依托于OpenHarmony開源開發(fā)者成長計(jì)劃,項(xiàng)目的推進(jìn)離不開導(dǎo)師的指導(dǎo)與幫助。完成該項(xiàng)目時(shí)我經(jīng)歷了三個(gè)階段:開發(fā)環(huán)境的搭建,C++語言的學(xué)習(xí),智能電子牌項(xiàng)目的開發(fā)。 開發(fā)環(huán)境的搭建 該項(xiàng)目的源碼編譯是在Ubuntu環(huán)境下進(jìn)行的,我的開發(fā)“裝備”只有一臺(tái)Windows電腦,所以我們想進(jìn)行下一步開發(fā)與調(diào)試就必須在Windows環(huán)境下搭建好虛擬機(jī),然后在虛擬機(jī)的Ubuntu環(huán)境下搭建好對(duì)應(yīng)編譯環(huán)境。具體的搭建流程請(qǐng)見智能電子牌的開發(fā)部分。 C++語言的學(xué)習(xí) 該設(shè)備端項(xiàng)目是基于C++語言開發(fā)的,但我只有C語言基礎(chǔ),所以我在寒假期間借助線上學(xué)習(xí)平臺(tái)等學(xué)習(xí)平臺(tái)實(shí)現(xiàn)了C++語言的學(xué)習(xí),本項(xiàng)目的UI組件并沒有完善的開發(fā)手冊(cè),故而該項(xiàng)目被官方評(píng)定的開發(fā)難度為高等,本項(xiàng)目的開發(fā)離不開大量的摸索、學(xué)習(xí)與實(shí)踐,與此同時(shí),閱讀大量官方庫文件的過程極大地提高了我的C++語言熟練程度。 智能電子牌項(xiàng)目的開發(fā) 本項(xiàng)目產(chǎn)品的邏輯圖如下: ? 智能電子牌通過sntp協(xié)議主動(dòng)于服務(wù)器獲取實(shí)時(shí)時(shí)間;通過天氣API實(shí)時(shí)獲取天氣信息,并且會(huì)根據(jù)天氣狀況給出一些暖心建議;通過http協(xié)議主動(dòng)在華為云獲取我們?cè)谑謾C(jī)或平板端數(shù)字管家中設(shè)置的日程,展示日程的起始終止時(shí)間,日程名與日程細(xì)節(jié);通過在時(shí)間選擇器中選擇時(shí)間,可以起到定時(shí)提醒日程的作用。 我將開發(fā)過程中對(duì)既有代碼的一些理解整理在了本文中:智能電子牌——設(shè)備端 ?
四、安裝教程
為了讓小伙伴們能在自己的開發(fā)板上運(yùn)行智能電子牌項(xiàng)目的代碼,我將安裝該項(xiàng)目應(yīng)用的教程整理如下: 硬件準(zhǔn)備 預(yù)裝Windows系統(tǒng)的PC機(jī);Hi3516DV300 IoT Camera開發(fā)板;USB轉(zhuǎn)串口線、網(wǎng)線(Windows工作臺(tái)通過USB轉(zhuǎn)串口線、網(wǎng)線與Hi3516DV300 開發(fā)板連接)。 1.完成開發(fā)板環(huán)境的搭建(即完成固件燒錄與Ubuntu的編譯環(huán)境搭建,詳細(xì)講解見智能電子牌的開發(fā))后,在OpenHarmony的vendor目錄下新建team_x的目錄:
mkdir vendor/team_x? 2.將智能電子牌的代碼拷貝到新建的team_x下面。 已經(jīng)合倉的代碼鏈接:
electronic_board
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/team_x/electronic_board_1
3.之后可以進(jìn)行應(yīng)用程序的編譯,編譯指令共兩條hb set與hb build -f: 首先在Terminal內(nèi)輸入:
hb set之后通過鍵盤上的上下鍵選擇electronic_board,之后回車進(jìn)行選中; 之后進(jìn)行全量編譯,輸入:
hb build -f當(dāng)編譯完成后會(huì)顯示success。 4.編譯完成后,out/hispark_taurus/electronic_board/libs/usr/目錄下的libelectrBoard.so文件即為我們的目標(biāo)應(yīng)用文件,該文件與工程目錄下的res以及config.json文件通過壓縮打包成zip格式(三個(gè)文件直接壓縮,不能壓縮文件夾),并將后綴名改為hap后即可通過掛載NFS的方式進(jìn)行應(yīng)用安裝。具體內(nèi)容見下方“六、文檔目錄”部分。
五、項(xiàng)目展示
1.代碼目錄結(jié)構(gòu) 如下為設(shè)備端核心代碼的目錄結(jié)構(gòu):
|—— BUILD.gn // 編譯腳本|—— res // 圖片資源文件|—— config.json // 安裝包所需要的json文件|—— include| |—— electronic_board_ability.h // 入口類的頭文件| |—— electr_board_ability_slice.h // 主頁面的頭文件,包含了時(shí)間選擇器| |—— shcedule_list_view.h // 日程列表顯示類的頭文件| |—— weather_time_view.h // 天氣以及時(shí)間顯示類的頭文件| |—— native_base.h // 基類的頭文件| |—— event_listener.h // 事件定義及實(shí)現(xiàn)的類| |—— ui_config.h // 界面相關(guān)坐標(biāo)定義的頭文件| |—— schedule_server.h // 日程服務(wù)相關(guān)定義的頭文件| |—— schedule_info.h // 日程內(nèi)容類的頭文件| |—— common.h // 天氣獲取相關(guān)定義的頭文件| |—— sntp.h // 時(shí)間獲取相關(guān)定義的頭文件| |—— link_list.h // 鏈表相關(guān)定義函數(shù)的解釋頭文件| |—— schedule_net_status.h // 獲取與運(yùn)行網(wǎng)絡(luò)連接相關(guān)的頭函數(shù)| |__ LinkList.h // 鏈表相關(guān)定義的頭文件||__ src |—— electronic_board_ability.cpp |—— electr_board_ability_slice.cpp// 主頁面相關(guān)實(shí)現(xiàn) |—— schedule_list_view.cpp // 日程列表顯示類的實(shí)現(xiàn) |—— weather_time_view.cpp // 天氣以及時(shí)間顯示類的實(shí)現(xiàn) |—— common.c // 天氣獲取以及解析的實(shí)現(xiàn) |—— schedule_server.c // 日程服務(wù)獲取的顯示 |—— sntp.c // 網(wǎng)絡(luò)實(shí)時(shí)時(shí)間獲取的實(shí)現(xiàn) |—— schedule_net_status.c // 獲取與運(yùn)行網(wǎng)絡(luò)連接相關(guān)的實(shí)現(xiàn) |__ LinkList.c // 鏈表的實(shí)現(xiàn)已經(jīng)合倉的代碼鏈接: electronic_board
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/team_x/electronic_board_1
2.成果細(xì)節(jié)演示
如下圖所示,電子牌應(yīng)用功能區(qū)共分為三部分,左邊的時(shí)間天氣區(qū),右下區(qū)域的日程區(qū),右上區(qū)域的定時(shí)時(shí)間設(shè)定區(qū): ? 時(shí)間天氣區(qū)中: ? 天氣通過天氣對(duì)應(yīng)的API獲取地區(qū)對(duì)應(yīng)的實(shí)時(shí)天氣信息 ? 實(shí)時(shí)時(shí)鐘是通過sntp協(xié)議獲取的 日程區(qū)中: ? 日程信息是通過http協(xié)議與云端對(duì)接主動(dòng)獲取的數(shù)字管家設(shè)置的信息,日程包含了日程的名字,以及開始時(shí)間及日程的內(nèi)容,如下圖所示:
時(shí)間選擇區(qū)中:
? 通過滑動(dòng)選擇需要提醒的時(shí)間,當(dāng)實(shí)時(shí)時(shí)鐘與時(shí)間選擇區(qū)時(shí)間相同時(shí)會(huì)出現(xiàn)提示信息,當(dāng)用戶接收到提示信息并重新設(shè)定時(shí)間選擇區(qū)的時(shí)間后提示信息會(huì)消失,如下圖所示:
六、項(xiàng)目感受
項(xiàng)目開發(fā)過程其實(shí)沒有很多人想象中的枯燥乏味,在我看來能夠開發(fā)出一款好用有價(jià)值的產(chǎn)品是一件很有成就感的事情。不可否認(rèn)學(xué)習(xí)一門新的語言是很花費(fèi)精力的,但是在學(xué)習(xí)與項(xiàng)目開發(fā)過程中自己的能力也在快速提升,這種學(xué)有所得的感覺正是我所追求的。 該項(xiàng)目是在原有代碼的基礎(chǔ)上進(jìn)行了二次開發(fā),老師們寫的源碼非常優(yōu)美,當(dāng)中的語言結(jié)構(gòu)與構(gòu)建方法都很值得我認(rèn)真學(xué)習(xí)。在開發(fā)過程中我也曾碰到過蠻多困難的事情,因?yàn)榈绞值牡谝粔K開發(fā)板的boot出現(xiàn)了問題無法完成固件的燒錄,后來和導(dǎo)師一塊探索了一段時(shí)間才最終通過更換開發(fā)板解決了這個(gè)問題,感謝電子發(fā)燒友官方和導(dǎo)師所提供的幫助。后面在搭建編譯環(huán)境的時(shí)候也出現(xiàn)了各種各樣的問題,感謝導(dǎo)師鐘老師的悉心指導(dǎo),讓我最終解決了所有問題。 編譯一次源代碼的時(shí)間比較長(20min+),所以我每次對(duì)源碼的修改都十分謹(jǐn)慎,之后進(jìn)行應(yīng)用掛載后既有可能出現(xiàn)你滿意的UI與功能,也有可能出現(xiàn)各種亂碼甚至有可能應(yīng)用沒辦法啟動(dòng),這一種類似“開獎(jiǎng)”感覺的調(diào)試過程事后回想也是回味無窮。 總而言之,在項(xiàng)目開發(fā)過程中我學(xué)到了很多新知識(shí),看到開發(fā)調(diào)試出預(yù)想的功能后我心里也是充滿成就感,感謝官方提供的機(jī)會(huì)與導(dǎo)師的悉心教誨。
-
網(wǎng)絡(luò)連接
+關(guān)注
關(guān)注
0文章
85瀏覽量
10857 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3647瀏覽量
16071
原文標(biāo)題:有“智慧”的電子牌
文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論