女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

AWTK 開源串口屏開發(18) - 用 C 語言自定義命令

ZLG致遠電子 ? 2024-05-11 08:24 ? 次閱讀

如果 AWTK-HMI 內置模型無法滿足需求,可以使用 C 語言來擴展默認模型。本文通過一個簡單的例子,介紹一下用 C 語言擴展默認模型的方法。

AWTK-HMI 內置了不少模型,利用這些模型開發應用程序,不需要編寫代碼即可實現常見的應用。但是,有時候我們需要自定義一些命令,以實現一些特殊的功能。本文檔介紹如何使用 C 語言自定義命令。

1. 實現 hmi_model_cmd_t 接口

1.1 exec 函數

本函數用于執行命令。函數原型如下:

typedef ret_t (*hmi_model_cmd_exec_t)(hmi_model_cmd_t* cmd, tk_object_t* obj, const char* args);

參數:

  • cmd:命令對象;
  • obj:默認模型對象;
  • args:參數。

返回:

  • RET_OBJECT_CHANGED 表示模型對象發生了變化,界面自動更新。
  • RET_OK 表示命令執行成功,但模型對象沒有發生變化。
  • 其他值表示命令執行失敗。

1.2 can_exec 函數

本函數用于判斷命令是否可以執行。函數原型如下:

typedef bool_t (*hmi_model_cmd_can_exec_t)(hmi_model_cmd_t* cmd, tk_object_t* obj, const char* args);

參數:

  • cmd:命令對象;
  • obj:默認模型對象;
  • args:參數。

返回:

  • TRUE 表示命令可以執行;
  • FALSE 表示命令不能執行。

1.3 聲明命令對象

命令對象一般定義為全局變量。

示例

static const hmi_model_cmd_t s_inc_temp_cmd = { .name = "inc_temp", .exec = inc_temp_exec, .can_exec = inc_temp_can_exec,};


2.注冊命令

調用函數 hmi_model_add_cmd 注冊命令。

ret_t custom_cmds_init(void) { tk_object_t* model = hmi_service_get_default_model(); hmi_model_add_cmd(model, &s_inc_temp_cmd);
return RET_OK;}


3.完整示例

下面的代碼實現了一個命令 inc_temp,用于增加溫度屬性的值。溫度的值小于 100 時,命令可以執行。

#define PROP_TEMP "溫度"
static ret_t inc_temp_exec(hmi_model_cmd_t* cmd, tk_object_t* obj, const char* args) { int temp = tk_object_get_prop_int(obj, PROP_TEMP, 0); tk_object_set_prop_int(obj, PROP_TEMP, temp + 1);
return RET_OBJECT_CHANGED;}
static bool_t inc_temp_can_exec(hmi_model_cmd_t* cmd, tk_object_t* obj, const char* args) { int temp = tk_object_get_prop_int(obj, PROP_TEMP, 0); return temp < 100;}
static const hmi_model_cmd_t s_inc_temp_cmd = { .name = "inc_temp", .exec = inc_temp_exec, .can_exec = inc_temp_can_exec,};
ret_t custom_cmds_init(void) { tk_object_t* model = hmi_service_get_default_model(); hmi_model_add_cmd(model, &s_inc_temp_cmd);
return RET_OK;}

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

    關注

    180

    文章

    7630

    瀏覽量

    140200
  • 串口屏
    +關注

    關注

    8

    文章

    578

    瀏覽量

    38094
  • awtk
    +關注

    關注

    0

    文章

    50

    瀏覽量

    349
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    串口可以自定義協議嗎?

    求問:串口可以自定義協議嗎?
    發表于 03-27 15:24

    LISP語言自定義AutoCAD命令

    LISP語言自定義AutoCAD命令 AutoLISP語言作為AutoCAD的二次開發工具,
    發表于 02-14 17:08 ?2461次閱讀

    DOS下自定義時間重啟

    DOS環境下,C語言編寫,自定義時間重啟。
    發表于 03-16 09:40 ?6次下載

    C#教程之自定義屏保

    C#教程之自定義屏保,很好的C#資料,快來學習吧。
    發表于 04-20 09:59 ?7次下載

    創建自定義的u-boot命令

    為什么會有這篇文章,因為小生被u-boot源碼的設計所吸引了(源碼對命令的處理過程)。自定義u-boot命令屬于u-boot源碼的開發技術啦,可能u-boot官方
    的頭像 發表于 08-08 14:46 ?1267次閱讀

    基于AWTK和AWPLC開發自定義功能塊

    AWPLC 是 ZLG 自主研發的 PLC 系統(兼容 IEC61131-3),本文定時器為例介紹一下如何擴展自定義功能塊。
    的頭像 發表于 10-26 11:50 ?1169次閱讀

    ESP32上的自定義UART協議開源

    電子發燒友網站提供《ESP32上的自定義UART協議開源.zip》資料免費下載
    發表于 02-13 16:38 ?4次下載
    ESP32上的<b class='flag-5'>自定義</b>UART協議<b class='flag-5'>開源</b>

    自定義算子開發

    一個完整的自定義算子應用過程包括注冊算子、算子實現、含自定義算子模型轉換和運行含自定義op模型四個階段。在大多數情況下,您的模型應該可以通過使用hb_mapper工具完成轉換并順利部署到地平線芯片上……
    的頭像 發表于 04-07 16:11 ?3189次閱讀
    <b class='flag-5'>自定義</b>算子<b class='flag-5'>開發</b>

    【產品應用】 AWTK 和 AWPLC 快速開發嵌入式應用程序 (4)- 自定義功能塊(上)

    AWPLC是ZLG自主研發的PLC系統(兼容IEC61131-3),本文定時器為例介紹一下如何擴展自定義功能塊。背景AWTK全稱ToolkitAnyWhere,是ZLG開發
    的頭像 發表于 11-02 09:56 ?1056次閱讀
    【產品應用】<b class='flag-5'>用</b> <b class='flag-5'>AWTK</b> 和 AWPLC 快速<b class='flag-5'>開發</b>嵌入式應用程序 (4)- <b class='flag-5'>自定義</b>功能塊(上)

    【產品應用】 AWTK 和 AWPLC 快速開發嵌入式應用程序 (5)- 自定義功能塊(下)

    AWPLC是ZLG自主研發的PLC系統(兼容IEC61131-3),本文以定時器為例介紹一下如何擴展自定義功能塊,以及代碼生成器的用法。背景AWTK全稱ToolkitAnyWhere,是ZLG開發
    的頭像 發表于 11-04 10:12 ?1190次閱讀
    【產品應用】<b class='flag-5'>用</b> <b class='flag-5'>AWTK</b> 和 AWPLC 快速<b class='flag-5'>開發</b>嵌入式應用程序 (5)- <b class='flag-5'>自定義</b>功能塊(下)

    串口LUA教程10-自定義串口指令

    串口LUA教程10-自定義串口指令
    發表于 04-29 13:17 ?16次下載

    AWTK 開源智能串口方案

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

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

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

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

    本篇文章介紹一下AWTK開源智能串口方案的串口端(即HMI端)的編譯運行步驟,并介紹如何將H
    的頭像 發表于 01-18 08:24 ?1321次閱讀
    【<b class='flag-5'>AWTK</b><b class='flag-5'>開源</b>智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】HMI端程序移植編譯及運行

    AWTK使用經驗】如何自定義combo_box下拉框樣式

    AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發
    的頭像 發表于 05-23 08:25 ?733次閱讀
    【<b class='flag-5'>AWTK</b>使用經驗】如何<b class='flag-5'>自定義</b>combo_box下拉框樣式