現(xiàn)在的屏幕其實(shí)并不需要屏幕保護(hù)程序來(lái)“保護(hù)”,不過(guò)屏幕保護(hù)程序會(huì)衍生一些其它用途。比如,保護(hù)隱私、數(shù)據(jù)安全和顯示廣告等等。本文介紹一下在 AWTK 串口屏中,實(shí)現(xiàn)屏幕保護(hù)程序的方法。
現(xiàn)代屏幕其實(shí)并不需要屏幕保護(hù),不過(guò)屏幕保護(hù)程序會(huì)衍生一些其它用途。比如:
保護(hù)隱私。長(zhǎng)時(shí)間不操作,通過(guò)動(dòng)畫或者其它方式隱藏屏幕內(nèi)容。
數(shù)據(jù)安全。長(zhǎng)時(shí)間不操作,需要輸入密碼才能恢復(fù)。
美觀/廣告。長(zhǎng)時(shí)間不操作,顯示動(dòng)畫或者播放視頻廣告。
本文介紹一下在 AWTK 串口屏中,是如何實(shí)現(xiàn)屏幕保護(hù)的?;?a href="http://www.delux-kingway.cn/v/tag/773/" target="_blank">工作原理是這樣的:
長(zhǎng)時(shí)間沒有用戶輸入事件,觸發(fā)屏幕保護(hù)事件。
在屏幕保護(hù)事件中,打開名為 screen_saver 的窗口。
screen_saver 窗口中,顯示屏保內(nèi)容,如果收到輸入事件,關(guān)閉該窗口(或要求輸入密碼)。
1. 功能
在這里例子中,模型(也就是數(shù)據(jù))里只有一個(gè)screen_saver_time變量:
變量名 | 數(shù)據(jù)類型 | 功能說(shuō)明 |
screen_saver_time | 整數(shù) | 單位為毫秒 |
screen_saver_time 是默認(rèn)模型中一個(gè)內(nèi)置屬性。
2. 創(chuàng)建項(xiàng)目
從模板創(chuàng)建項(xiàng)目,將 hmi/template_app 拷貝 hmi/screen_saver 即可。
第一個(gè)項(xiàng)目最好不要放到其它目錄,因?yàn)榉诺狡渌夸浶枰薷呐渲梦募械穆窂剑仁煜ぶ笤倏紤]放到其它目錄。路徑中也不要中文和空格,避免不必要的麻煩。
3. 制作界面
3.1 主窗口
用 AWStudio 打開上面 screen_saver 目錄下的 project.json 文件。里面有一個(gè)空的窗口,在上面加入下面的控件:
靜態(tài)文本
編輯器
做出類似下面的界面。
3.2 屏保窗口
在這個(gè)窗口中,我們通過(guò)一個(gè)定時(shí)器來(lái)改變窗口的背景顏色,創(chuàng)建一個(gè)空白窗口,將其改名為 screen_saver 即可。
4. 添加綁定規(guī)則
4.1 主窗口
將編輯器綁定到screen_saver_time變量。添加自定義的屬性v-data:value,將值設(shè)置為{screen_saver_time}。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-data:value | {screen_saver_time} | 變量要用英文大括號(hào)括起來(lái)。 |
同樣指定窗口的模型為 default。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-model | default | default 不需要用大括號(hào)括起來(lái)。 |
4.2 屏保窗口
在啟動(dòng)按鈕的點(diǎn)擊事件啟動(dòng)定時(shí)器。
綁定屬性 | 綁定規(guī)則 | 說(shuō)明 |
v-on:window_open | {fscript, Args=start_timer(3000);set(計(jì)數(shù),0)} | 啟動(dòng)定時(shí)器 |
v-on:timer | {fscript, Args=set(計(jì)數(shù),計(jì)數(shù)+1)} | 增加計(jì)數(shù) |
v-datanormal:bg_color | {one_of(‘red;blue;green;gold;orange;white;black’, 計(jì)數(shù)%7)} | 根據(jù)計(jì)數(shù)改變背景顏色 |
v-on:pointer_move | {nothing, CloseWindow=true} | 關(guān)閉窗口 |
v-on:pointer_up | {nothing, CloseWindow=true} | 關(guān)閉窗口 |
v-on:key_up | {nothing, CloseWindow=true} | 關(guān)閉窗口 |
這里只是用了一個(gè)窗口內(nèi)局部的變量“計(jì)數(shù)”,不需要指定模型,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè) dummy 模型。
4. 初始化數(shù)據(jù)
修改資源文件 design/default/data/default_model.json, 將其內(nèi)容改為:
{ "screen_saver_time": 180000}
注意:
如果文件內(nèi)容有中文(非 ASCII 字符),一定要保存為 UTF-8 格式。
重新打包資源才能生效。
5. 數(shù)據(jù)持久化
為了保存屏保時(shí)間,修改資源文件 design/default/data/settings.json, 將其內(nèi)容改為:
{ "name":"hmi_screen_saver", "persistent" : { "screen_saver_time": true }}
6. 編譯運(yùn)行
運(yùn)行 bin 目錄下的 demo 程序,設(shè)置屏幕時(shí)間為一個(gè)較短的值,等待屏保啟動(dòng)。
7. 注意
本項(xiàng)目并沒有編寫界面相關(guān)的代碼,AWStudio 在 src/pages 目錄下生成了一些代碼框架,這些代碼并沒有用到,可以刪除也可以不用管它,但是不能加入編譯。
-
開源
+關(guān)注
關(guān)注
3文章
3409瀏覽量
42723 -
串口屏
+關(guān)注
關(guān)注
8文章
546瀏覽量
37595 -
awtk
+關(guān)注
關(guān)注
0文章
46瀏覽量
254
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
?【AWTK開源智能串口屏方案】方案介紹和工作原理
![?【<b class='flag-5'>AWTK</b><b class='flag-5'>開源</b>智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】方案介紹和工作原理](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 串口屏開發(fā)(3) - 告警信息
![<b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(3) - 告警信息](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 串口屏開發(fā)(4) - 數(shù)據(jù)采集
![<b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(4) - 數(shù)據(jù)采集](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 開源串口屏開發(fā)(6) - 定時(shí)器的用法
![<b class='flag-5'>AWTK</b> <b class='flag-5'>開源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(6) - 定時(shí)器的用法](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 開源串口屏開發(fā)(9) - 用戶和權(quán)限管理
![<b class='flag-5'>AWTK</b> <b class='flag-5'>開源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(9) - 用戶和權(quán)限管理](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【AWTK開源智能串口屏方案】MCU SDK使用與編譯運(yùn)行
![【<b class='flag-5'>AWTK</b><b class='flag-5'>開源</b>智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】MCU SDK使用與編譯運(yùn)行](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【AWTK開源智能串口屏方案】設(shè)計(jì)UI界面并上傳到串口屏
![【<b class='flag-5'>AWTK</b><b class='flag-5'>開源</b>智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】設(shè)計(jì)UI界面并上傳到<b class='flag-5'>串口</b><b class='flag-5'>屏</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 開源串口屏開發(fā)(11) - 天氣預(yù)報(bào)
![<b class='flag-5'>AWTK</b> <b class='flag-5'>開源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(11) - 天氣預(yù)報(bào)](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 開源串口屏開發(fā)(12) - 記事本應(yīng)用
![<b class='flag-5'>AWTK</b> <b class='flag-5'>開源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(12) - 記事本應(yīng)用](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 開源串口屏開發(fā)(14) - 界面重用
![<b class='flag-5'>AWTK</b> <b class='flag-5'>開源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(14) - 界面重用](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 開源串口屏開發(fā)(15) - 通過(guò) MODBUS 訪問遠(yuǎn)程數(shù)據(jù)
![<b class='flag-5'>AWTK</b> <b class='flag-5'>開源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(15) - 通過(guò) MODBUS 訪問遠(yuǎn)程數(shù)據(jù)](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK 開源串口屏開發(fā)(16) - 提供 MODBUS 服務(wù)
![<b class='flag-5'>AWTK</b> <b class='flag-5'>開源</b><b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(16) - 提供 MODBUS 服務(wù)](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
評(píng)論