系統(tǒng)設(shè)置是一個(gè)必需的功能,AWTK 串口屏的默認(rèn)模型提供一些系統(tǒng)設(shè)置相關(guān)的屬性和命令,實(shí)現(xiàn)系統(tǒng)設(shè)置非常簡(jiǎn)單。本文介紹一下音量、背光、時(shí)間和觸屏音等常見(jiàn)系統(tǒng)設(shè)置的實(shí)現(xiàn)方法。
系統(tǒng)設(shè)置只是一個(gè)普通應(yīng)用程序,不過(guò)它會(huì)用默認(rèn)模型中一些內(nèi)置的屬性和命令,所以這里專門來(lái)介紹一下。
1. 功能
在這個(gè)例子會(huì)用到默認(rèn)模型中一些下列內(nèi)置的屬性和命令:
- 內(nèi)置屬性
屬性 | 類型 | 說(shuō)明 |
rtc_year | int | RTC 年 |
rtc_month | int | RTC 月 |
rtc_day | int | RTC 日 |
rtc_hour | int | RTC 時(shí) |
rtc_minute | int | RTC 分 |
rtc_second | int | RTC 秒 |
rtc_ymd | string | RTC 年月日,格式為 YYYY-MM-DD 或 YYYY/MM/DD |
rtc_hms | string | RTC 時(shí)分秒,格式為 HH:MM:SS |
backlight | int | 背光亮度 (0-100) |
audio_volume | int | 音量 (0-100) |
ui_feedback | bool | UI 反饋。true 啟用反饋 (beep), false 禁用反饋 |
內(nèi)置命令
命令 | 參數(shù) | 說(shuō)明 |
set_rtc | 無(wú) | 將屬性 rtc_year, rtc_month, rtc_day, rtc_hour, rtc_minute, rtc_second 設(shè)置為系統(tǒng) RTC 時(shí)間 |
get_rtc | 無(wú) | 獲取系統(tǒng) RTC 時(shí)間,并設(shè)置到屬性 rtc_year, rtc_month, rtc_day, rtc_hour, rtc_minute, rtc_second, rtc_wday |
save | 無(wú) | 保存配置 |
2. 創(chuàng)建項(xiàng)目
從模板創(chuàng)建項(xiàng)目,將 hmi/template_app 拷貝 hmi/settings 即可。
最好不要放到其它目錄,因?yàn)榉诺狡渌夸浶枰薷呐渲梦募械穆窂?,等熟悉之后再考慮放到其它目錄。路徑中也不要中文和空格,避免不必要的麻煩。
3. 制作界面
用 AWStudio 打開(kāi)上面 settings 目錄下的 project.json 文件。
里面有一個(gè)空的窗口,在上面加入下面的控件,并調(diào)節(jié)位置和大小,做出類似下面的界面。
再創(chuàng)建一個(gè)新窗口,命名為 basic,并加入下面的控件,并調(diào)節(jié)位置和大小,做出類似下面的界面。
再創(chuàng)建一個(gè)新窗口,命名為 rtc,并加入下面的控件,并調(diào)節(jié)位置和大小,做出類似下面的界面。
需要給編輯器設(shè)置輸入類型、最大值和最小值。實(shí)際項(xiàng)目可能會(huì)用文本選擇控件代替編輯器,不過(guò)綁定方法是一樣的。
3. 添加綁定規(guī)則
3.1?主界面?(home_page)
將?基本設(shè)置?按鈕的?點(diǎn)擊?事件綁定到?navigate?命令。添加自定義的屬性?v-on:click,將值設(shè)置為?{navigate, Args=basic}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-on:click | {navigate, Args=basic} | navigate 命令是導(dǎo)航命令,用于打開(kāi)窗口,Args=后面跟目標(biāo)窗口的名稱。 |
- 將?時(shí)間設(shè)置?按鈕的?點(diǎn)擊?事件綁定到?navigate?命令。添加自定義的屬性?v-on:click,將值設(shè)置為?{navigate, Args=rtc}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-on:click | {navigate, Args=rtc} | navigate 命令是導(dǎo)航命令,用于打開(kāi)窗口,Args=后面跟目標(biāo)窗口的名稱。 |
命令和參數(shù)要用英文大括號(hào)括起來(lái)。
3.2?基本設(shè)置?(basic)
將?背光滑動(dòng)條?綁定到?backlight?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{backlight}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {backlight} | 變量要用英文大括號(hào)括起來(lái)。 |
將音量滑動(dòng)條?綁定到?audio_volume?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{audio_volume}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {audio_volume} | 變量要用英文大括號(hào)括起來(lái)。 |
將?開(kāi)啟屏幕音?綁定到?ui_feedback?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{ui_feedback}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {ui_feedback} | 變量要用英文大括號(hào)括起來(lái)。 |
讓?確定?按鈕的?點(diǎn)擊?事件執(zhí)行命令 “{save}”。添加自定義的屬性?v-on:click,將值設(shè)置為:
{save, CloseWindow=true}
CloseWindow=true,表示執(zhí)行命令并關(guān)閉當(dāng)前窗口。
命令和參數(shù)要用英文大括號(hào)括起來(lái)。
同樣指定窗口的模型為 default。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-model | default | default 不需要用大括號(hào)括起來(lái)。 |
3.3?時(shí)間設(shè)置?(rtc)
將?年 編輯器?綁定到?rtc_year?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{rtc_year}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {rtc_year} | 變量要用英文大括號(hào)括起來(lái)。 |
將?月 編輯器?綁定到?rtc_month?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{rtc_month}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {rtc_month} | 變量要用英文大括號(hào)括起來(lái)。 |
將?日 編輯器?綁定到?rtc_day?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{rtc_day}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {rtc_day} | 變量要用英文大括號(hào)括起來(lái)。 |
將?時(shí) 編輯器?綁定到?rtc_hour?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{rtc_hour}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {rtc_hour} | 變量要用英文大括號(hào)括起來(lái)。 |
將?分 編輯器?綁定到?rtc_minute?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{rtc_minute}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {rtc_minute} | 變量要用英文大括號(hào)括起來(lái)。 |
將?秒 編輯器?綁定到?rtc_second?變量。添加自定義的屬性?v-data:value,將值設(shè)置為?{rtc_second}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {rtc_second} | 變量要用英文大括號(hào)括起來(lái)。 |
讓?獲取時(shí)間?按鈕的?點(diǎn)擊?事件執(zhí)行命令 “{get_rtc}”。添加自定義的屬性?v-on:click,將值設(shè)置為:
{get_rtc}
命令和參數(shù)要用英文大括號(hào)括起來(lái)。
讓?設(shè)置時(shí)間?按鈕的?點(diǎn)擊?事件執(zhí)行命令 “{set_rtc}”。添加自定義的屬性?v-on:click,將值設(shè)置為:
{set_rtc}
命令和參數(shù)要用英文大括號(hào)括起來(lái)。
讓?返回?按鈕的?點(diǎn)擊?事件執(zhí)行命令 “{nothing}”。添加自定義的屬性?v-on:click,將值設(shè)置為:
{nothing, CloseWindow=true}
nothing 是一個(gè)特殊命令,表示什么也不做。
CloseWindow=true,表示執(zhí)行命令并關(guān)閉當(dāng)前窗口。
命令和參數(shù)要用英文大括號(hào)括起來(lái)。
同樣指定窗口的模型為 default。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-model | default | default 不需要用大括號(hào)括起來(lái)。 |
4. 初始化數(shù)據(jù)
修改資源文件 design/default/data/default_model.json, 將其內(nèi)容改為:
{
?"ui_feedback":true,
?"audio_volume":60,
?"backlight":60
}
注意:如果文件內(nèi)容有中文(非 ASCII 字符),一定要保存為 UTF-8 格式。重新打包資源才能生效。
5. 描述需要持久化的數(shù)據(jù)
修改資源文件 design/default/data/settings.json, 將其內(nèi)容改為:
{
? ?"name": "hmi_settings",
? ?"persistent": {
? ? ? ?"ui_feedback": true,
? ? ? ?"audio_volume": true,
? ? ? ?"backlight": true
? ?}
}
如果有多個(gè)數(shù)據(jù)需要持久化,將它們加入到 settings 對(duì)象中即可。為了避免不同串口屏應(yīng)用程序之間,持久化數(shù)據(jù)覆蓋,這里的 name 需要取一個(gè)唯一的名字。
注意:如果文件內(nèi)容有中文(非 ASCII 字符),一定要保存為 UTF-8 格式。重新打包資源才能生效。
6. 編譯運(yùn)行
運(yùn)行 bin 目錄下的 demo 程序。
程序退出時(shí)會(huì)自動(dòng)保存需要保存的數(shù)據(jù)。
7. 注意
本項(xiàng)目并沒(méi)有編寫界面相關(guān)的代碼,AWStudio 在 src/pages 目錄下生成了一些代碼框架,這些代碼并沒(méi)有用到,可以刪除也可以不用管它,但是不能加入編譯。