0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AWTK 串口屏開發(fā)(2) - 家居控制

ZLG致遠電子 ? 2023-12-16 08:24 ? 次閱讀

本文以一個家居控制應用程序為例,介紹 AWTK 串口屏的開發(fā)流程和 MVVM 數(shù)據(jù)綁定的高級用法。

1. 功能

這個例子稍微復雜一點,重點關注數(shù)據(jù)綁定。在這個例子中,模型(也就是數(shù)據(jù))里包括一臺空調和一臺咖啡機:

變量名

數(shù)據(jù)類型

功能說明

空調_開關

布爾

空調開關

空調_模式

整數(shù)

空調模式 (0: 制冷;1: 制熱;2: 送風;2: 除濕;4: 自動)

空調_風速

整數(shù)

0-4 共五檔

空調_垂直風向

整數(shù)

垂直風向 (0: 自動;1:上;2:中;3:下)

空調_水平風向

整數(shù)

水平風向(0:自動;1:左;2:中;3:右)

空調_溫度

布爾

溫度(0-40)

咖啡_開關

整數(shù)

咖啡開關

咖啡_類型

整數(shù)

類型 (0: 卡布奇諾;1: 拿鐵;2: 美式;3: 意式)

咖啡_溫度

整數(shù)

溫度(0-100)

咖啡_口味

整數(shù)

口味 (0: 濃郁;1: 絲滑;2: 清淡;3: 平衡;4: 溫和)

咖啡_熱奶

整數(shù)

熱奶 (0: 少量;1: 較少;2: 較多;3: 大量)

咖啡_奶泡

整數(shù)

奶泡 (0: 少量;1: 較少;2: 較多;3: 大量)

咖啡_水量

整數(shù)

水量 (50-350ml)

咖啡_剩余時間

整數(shù)

制作時間(格式:分鐘:秒)

咖啡_開始制作

布爾

開始制作

2. 創(chuàng)建項目

從模板創(chuàng)建項目,將 hmi/template_app 拷貝 hmi/home_automation 即可。

項目最好不要放到其它目錄,因為放到其它目錄需要修改配置文件中的路徑,等熟悉之后再考慮放到其它目錄。路徑中也不要中文和空格,避免不必要的麻煩。

3. 制作界面

界面和資源就直接用了 ZDP1440 顯示驅動芯片例子:

  • 主界面

8a25d1e4-9ba9-11ee-9788-92fbcf53809c.png

  • 空調界面

8a2f440e-9ba9-11ee-9788-92fbcf53809c.png

  • 咖啡機界面

8a455e92-9ba9-11ee-9788-92fbcf53809c.png

4. 添加綁定規(guī)則

里面的控件太多,為了不至于太累贅,不同類型的綁定只舉一個例子:

完整示例可以參考 hmi/demo_app3

4.1 溫度設置

這種兩個按鈕帶一個靜態(tài)文本的組合很常見。8a4badc4-9ba9-11ee-9788-92fbcf53809c.png

中間的靜態(tài)文本

綁定屬性

綁定規(guī)則

說明

v-data:value

{空調_溫度+‘℃’}

右邊的按鈕(增加)

綁定屬性

綁定規(guī)則

說明

v-on:click

{fscript, Args=set(空調_溫度,min(空調_溫度+1, 40))}

這里用函數(shù) set 將變量空調_溫度增加 1 度。min 函數(shù)保證變量的值不會超出 40。

  • 左邊的按鈕(減少)

綁定屬性

綁定規(guī)則

說明

v-on:click

{fscript, Args=set(空調_溫度,max(空調_溫度-1, 40))}

這里用函數(shù) set 將變量空調_溫度減少 1 度。max 函數(shù)保證變量的值不會小于 0。

v-on:click 是一個常見的事件,最好記住,可以提高效率。

4.2 模式選擇

這個用一組單選按鈕實現(xiàn),將多個單選按鈕放到 group_box 里(將多個單選按鈕放到 view 里也可以,只是需要為每個單選按鈕編寫綁定規(guī)則)。

8a526bf0-9ba9-11ee-9788-92fbcf53809c.png

  • 如果綁定規(guī)則寫到 group_box 上。這樣寫即可:

綁定屬性

綁定規(guī)則

說明

v-data:value

{空調_模式}

如果使用 view 作為容器,則麻煩一點。需要為每個單選按鈕編寫兩條綁定規(guī)則:

綁定屬性

綁定規(guī)則

說明

v-data:value

{空調_模式 == 0}

這里的 0 是單選按鈕的序數(shù),根據(jù)實際情況調整

v-on:click

{fscript, Args=set(空調_模式,0)}

這里的 0 是單選按鈕的序數(shù),根據(jù)實際情況調整

這種方式雖然麻煩,但是可以處理變量的值不是從 0 開始或者不連續(xù)的情況。

4.3 模式顯示

模式用一個靜態(tài)文本顯示。問題在于,模式在內部用一個正整數(shù)表示,而顯示的是一個用戶可以理解的字符串。所以需要一個轉換函數(shù)one_of:8a61bc72-9ba9-11ee-9788-92fbcf53809c.png

綁定屬性

綁定規(guī)則

說明

v-data:value

v-data:value="{one_of(‘制冷;制熱;送風;除濕;自動’, 空調_模式)}

這里的 one_of 的功能是從指定的字符串數(shù)組中取出對應的子串。

4.4 剩余時間

剩余時間用一個靜態(tài)文本顯示。問題在于,剩余時間在內部用一個正整數(shù)表示(秒數(shù)),而顯示的是“分鐘:秒”。所以需要一個轉換表達式:

8a6fc8d0-9ba9-11ee-9788-92fbcf53809c.png

綁定屬性

綁定規(guī)則

說明

v-data:value

int(咖啡_剩余時間/60) + ‘:’ + 咖啡_剩余時間%60}

表達是按浮點數(shù)計算的,這里的 int 將結果轉換為正數(shù)。

4.5 隱藏視圖

在點擊開關按鈕時,會自動顯示或隱藏右邊的設置視圖。這是通過將視圖的可見性(visible)綁定到開關的狀態(tài)實現(xiàn)的:

綁定屬性

綁定規(guī)則

說明

v-data:visible

{空調_開關}

4.6 指定窗口的模型為 default

這是最簡單也是最關鍵的一步:

綁定屬性

綁定規(guī)則

說明

v-model

default

嚴格的意義上說,綁定規(guī)則也是一種代碼,不過相比于 C 語言,它有下面的優(yōu)勢:

無需編譯,直接運行。

簡單,通常只有一行。

易懂,聲明式的語法。

5. 初始化數(shù)據(jù)

修改資源文件 design/default/data/default_model.json, 將其內容改為:

{ "空調_開關" : false, "空調_模式" : 3, "空調_風速" : 3, "空調_垂直風向" : 1, "空調_水平風向" : 1, "空調_溫度": 25, "咖啡_開關" : false, "咖啡_類型" : 1, "咖啡_溫度" : 60, "咖啡_口味" : 1, "咖啡_熱奶" : 1, "咖啡_奶泡" : 1, "咖啡_水量" : 150, "咖啡_剩余時間" : 200, "咖啡_開始制作" : false}

注意:

  • 如果文件內容有中文(非ASCII字符),一定要保存為 UTF-8 格式。
  • 重新打包資源才能生效。

6. 編譯運行

運行 bin 目錄下的 demo 程序。

8a76e2e6-9ba9-11ee-9788-92fbcf53809c.png

7. 使用 MCU 模擬器與之進行交互

運行 mcu/simulator 目錄下的 mcu_sim 程序,連接到 Localhost:2233。

  • 在界面上修改參數(shù),會看到模擬器上收到了對應的事件:

8a7ea1d4-9ba9-11ee-9788-92fbcf53809c.gif

  • 在模擬器中設置變量咖啡_類型的數(shù)據(jù),HMI 端的界面也會自動更新。

8a8e8a22-9ba9-11ee-9788-92fbcf53809c.gif

8. 注意

  • 完整示例可以參考 hmi/demo_home2。
  • 本項目并沒有編寫界面相關的代碼,AWStudio 在 src/pages 目錄下生成了一些代碼框架,這些代碼并沒有用到,可以刪除也可以不用管它,但是不能加入編譯。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制
    +關注

    關注

    5

    文章

    1023

    瀏覽量

    123583
  • 串口屏
    +關注

    關注

    8

    文章

    578

    瀏覽量

    38163
  • awtk
    +關注

    關注

    0

    文章

    50

    瀏覽量

    357
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    AWTK 開源智能串口方案

    AWTK開源智能串口方案發(fā)布,旨在解決傳統(tǒng)串口諸多痛點,為用戶提供更開放、更易用、更強大的開源串口
    的頭像 發(fā)表于 12-02 08:24 ?1334次閱讀
    <b class='flag-5'>AWTK</b> 開源智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案

    AWTK 串口開發(fā)(1) - Hello World

    本文以一個簡單的溫度設置程序為例,介紹AWTK串口開發(fā)流程和MVVM數(shù)據(jù)綁定的基本方法。功能這個例子很簡單,制作一個調節(jié)溫度的界面。在這里例子中,模型(也就是數(shù)據(jù))里只有一個溫度變
    的頭像 發(fā)表于 12-08 15:52 ?698次閱讀
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(1) - Hello World

    ?【AWTK開源智能串口方案】方案介紹和工作原理

    本篇文章介紹一下AWTK開源智能串口方案的基本原理和實際使用效果,包括主要特點、應用場景、工作原理以及簡單的Demo演示。引言:AWTK-HMI是基于
    的頭像 發(fā)表于 12-21 08:24 ?1415次閱讀
    ?【<b class='flag-5'>AWTK</b>開源智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】方案介紹和工作原理

    AWTK 串口開發(fā)(3) - 告警信息

    告警信息是一個常用的功能。在AWTK開源串口中,內置告警信息模型,只需設計用戶界面即可實現(xiàn)告警信息的顯示和管理。1.功能告警信息是一個常用的功能,MCU在設備異常時,會發(fā)送告警信息到串口
    的頭像 發(fā)表于 12-23 08:24 ?700次閱讀
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(3) - 告警信息

    AWTK 串口開發(fā)(5) - MCU端 SDK 用法

    AWTK開源智能串口,不但開放了串口端全部源碼,還提供了MCU端SDK,大大加快MCU軟件的開發(fā)
    的頭像 發(fā)表于 01-06 08:24 ?657次閱讀
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(5) - MCU端 SDK 用法

    AWTK 開源串口開發(fā)(6) - 定時器的用法

    定時器是個常用的功能,AWTK串口提供了豐富的定時器函數(shù),用于定時器的啟動、停止、暫停、恢復、修改和重置等功能,本文以計時器的例子來介紹定時器的基本用法。定時器也是一個常用的功能,在AWTK
    的頭像 發(fā)表于 01-13 08:24 ?850次閱讀
    <b class='flag-5'>AWTK</b> 開源<b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(6) - 定時器的用法

    AWTK開源智能串口方案】HMI端程序移植編譯及運行

    -HMI是基于AWTKAWTK-MVVM開發(fā)的低代碼智能串口方案,本系列文章介紹如何從零開發(fā)
    的頭像 發(fā)表于 01-18 08:24 ?1372次閱讀
    【<b class='flag-5'>AWTK</b>開源智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】HMI端程序移植編譯及運行

    AWTK 開源串口開發(fā)(9) - 用戶和權限管理

    AWTK串口中,內置用戶管理和權限控制的模型,無需編碼即可實現(xiàn)登錄、登出、修改密碼、權限控制、創(chuàng)建用戶、刪除用戶等功能,本文介紹一下用戶
    的頭像 發(fā)表于 02-19 12:10 ?752次閱讀
    <b class='flag-5'>AWTK</b> 開源<b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(9) - 用戶和權限管理

    AWTK開源智能串口方案】MCU SDK使用與編譯運行

    代碼智能串口方案,本系列文章介紹如何從零開發(fā)HMI程序,包括搭建開發(fā)環(huán)境、創(chuàng)建HMI運行時工程、修改應用界面以及開發(fā)MCU程序。MCU端簡
    的頭像 發(fā)表于 02-19 12:11 ?1712次閱讀
    【<b class='flag-5'>AWTK</b>開源智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】MCU SDK使用與編譯運行

    AWTK開源智能串口方案】設計UI界面并上傳到串口

    本篇文章將介紹如何使用AWStudio設計串口端的UI界面和添加綁定規(guī)則,以及怎么將資源文件上傳到串口端。引言:AWTK-HMI是基于
    的頭像 發(fā)表于 02-22 08:24 ?1288次閱讀
    【<b class='flag-5'>AWTK</b>開源智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】設計UI界面并上傳到<b class='flag-5'>串口</b><b class='flag-5'>屏</b>

    AWTK 開源串口開發(fā)(11) - 天氣預報

    AWTK串口內置了XML/JSON/INI等各種數(shù)據(jù)文件的模型,并支持用HTTP/HTTPS從網(wǎng)絡獲取數(shù)據(jù)。不用編寫一行代碼,即可實現(xiàn)天氣預報、股票行情、航班查詢和快遞查詢等功能。天氣預報是一個很
    的頭像 發(fā)表于 03-05 08:24 ?620次閱讀
    <b class='flag-5'>AWTK</b> 開源<b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(11) - 天氣預報

    AWTK 開源串口開發(fā)(12) - 記事本應用

    傳統(tǒng)的的串口中,開發(fā)一個記事本應用,即使可能,也是非常麻煩的事情。在AWTK串口中,內置文件
    的頭像 發(fā)表于 03-09 08:23 ?575次閱讀
    <b class='flag-5'>AWTK</b> 開源<b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(12) - 記事本應用

    AWTK 開源串口開發(fā)(14) - 界面重用

    AWTK串口支持同一個界面綁定不同的數(shù)據(jù),本文以家居控制為例,介紹一下界面重用的方法。在家居
    的頭像 發(fā)表于 03-23 08:23 ?576次閱讀
    <b class='flag-5'>AWTK</b> 開源<b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(14) - 界面重用

    AWTK 開源串口開發(fā)(15) - 通過 MODBUS 訪問遠程數(shù)據(jù)

    AWTK串口內置MODBUSClient模型,支持用MODBUS協(xié)議從遠程設備獲取數(shù)據(jù)。不用編寫代碼即可實現(xiàn)對遠程設備數(shù)據(jù)的顯示和修改。在AWTK
    的頭像 發(fā)表于 03-30 08:23 ?652次閱讀
    <b class='flag-5'>AWTK</b> 開源<b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(15) - 通過 MODBUS 訪問遠程數(shù)據(jù)

    AWTK 開源串口開發(fā)(16) - 提供 MODBUS 服務

    AWTK串口內置MODBUS從站模型,不用編寫一行代碼即可讓串口提供MODBUS服務,讓遠程設備通過MODBUS協(xié)議訪問
    的頭像 發(fā)表于 04-13 08:24 ?711次閱讀
    <b class='flag-5'>AWTK</b> 開源<b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(16) - 提供 MODBUS 服務

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品