0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

ZLG致遠(yuǎn)電子 ? 2024-01-06 08:24 ? 次閱讀

AWTK開源智能串口屏,不但開放了串口屏端全部源碼,還提供了MCUSDK,大大加快MCU軟件的開發(fā)。本介紹一下MCU端SDK在不同平臺上的用法。

完整示例可以參考下面的幾個例子:

普通嵌入式系統(tǒng)

mcu/stm32h743/USER/main.c

低端嵌入式系統(tǒng)

mcu/mini-sdk/hmi/examples/socket/main.c

MCU 模擬

simulator/src/pages/home_page.c

f92d1648-ac29-11ee-aa22-92fbcf53809c.gif

基本用法

1. 創(chuàng)建 hmi 對象

創(chuàng)建 hmi 對象時(shí),需要提供一個回調(diào)函數(shù),當(dāng)屬性變化時(shí),會調(diào)用這個函數(shù)。示例:

static ret_t hmi_on_prop_change(hmi_t* hmi, const char* name, const value_t* v) { /*處理參數(shù)變化*/ if (tk_str_eq(name, "溫度")) { int32_t temp = value_int(v); log_debug("temp=%d\n", temp); }
return RET_OK;}
... io = tk_stream_factory_create_iostream(url); hmi = hmi_create(io, hmi_on_prop_change, NULL);

2. 設(shè)置屬性

示例:

hmi_set_prop_int(hmi, "溫度", 36);

3. 獲取屬性示例:

int32_t temp = hmi_get_prop_int(hmi, "溫度", 0);

4. 在主循環(huán)中分發(fā)事件

示例:

hmi_dispatch(hmi);

完整示例

/*本文必須保存為 UTF-8 BOM 格式 */
#include "tkc/mem.h"#include "hmi/hmi.h"
static int s_value = 0;static uint32_t s_heap_mem[10240];
#define HMI_PROP_TEMP "溫度"
/*回調(diào)函數(shù)*/static ret_t hmi_on_prop_change(hmi_t* hmi, const char* name, const value_t* v) { if (strcmp(name, "溫度") == 0) { s_value = value_int(v); }
return RET_OK;}
static void system_init(void) { Cache_Enable(); //打開L1-Cache HAL_Init(); //初始化HAL庫 Stm32_Clock_Init(160, 5, 2, 4); //設(shè)置時(shí)鐘,400Mhz delay_init(400); //延時(shí)初始化 LED_Init(); //初始化LED KEY_Init(); //初始化按鍵}
int main(void) { u8 key = 0; hmi_t* hmi = NULL;
system_init();
/*初始化內(nèi)存*/ tk_mem_init(s_heap_mem, sizeof(s_heap_mem));
/*創(chuàng)建HMI對象*/ hmi = hmi_create_with_serial("1", hmi_on_prop_change, NULL);
while (1) { key = KEY_Scan(0); if (key) { switch (key) { case KEY2_PRES: { s_value = 0; break; } case KEY1_PRES: { s_value--; break; } case KEY0_PRES: { s_value++; break; } default: { break; } }
/*修改數(shù)據(jù)*/ hmi_set_prop_int(hmi, HMI_PROP_TEMP, s_value); } else { delay_ms(10); }
/*分發(fā)事件*/ hmi_dispatch(hmi); }}

API 參考

串口屏客戶端(供 MCU 使用)。

1. 函數(shù)

函數(shù)名稱

說明

hmi_create

創(chuàng)建hmi對象。

hmi_create_with_serial

創(chuàng)建hmi對象。

hmi_destroy

銷毀hmi對象。

hmi_dispatch

處理事件。

hmi_get_prop

獲取屬性。

hmi_get_prop_bool

獲取布爾屬性。

hmi_get_prop_float

獲取浮點(diǎn)數(shù)屬性。

hmi_get_prop_int

獲取整數(shù)屬性。

hmi_get_prop_int64

獲取64位整數(shù)屬性。

hmi_get_prop_str

獲取字符串屬性。

hmi_set_prop

設(shè)置屬性。

hmi_set_prop_bool

設(shè)置布爾屬性。

hmi_set_prop_float

設(shè)置浮點(diǎn)數(shù)屬性。

hmi_set_prop_int

設(shè)置整數(shù)屬性。

hmi_set_prop_int64

設(shè)置64位整數(shù)屬性。

hmi_set_prop_str

設(shè)置字符串屬性。

2.屬性

屬性名稱

類型

說明

remote_ui

remote_ui_t*

emote ui 對象。

2.1 hmi_create 函數(shù)

  • 函數(shù)功能:

創(chuàng)建hmi對象。

函數(shù)原型:

hmi_t* hmi_create (tk_iostream_t* io, hmi_on_prop_changed_t on_prop_changed, void* ctx);

參數(shù)

類型

說明

返回值

hmi_t*

返回hmi對象。

io

tk_iostream_t*

流對象。

on_prop_changed

hmi_on_prop_changed_t

屬性變化回調(diào)函數(shù)。

ctx

void*

上下文。

2.2 hmi_create_with_serial函數(shù)

函數(shù)功能:

創(chuàng)建hmi對象。

函數(shù)原型:

hmi_t* hmi_create_with_serial (const char* device, hmi_on_prop_changed_t on_prop_changed, void* ctx);

  • 參數(shù)說明:

參數(shù)

類型

說明

返回值

hmi_t*

返回hmi對象。

device

const char*

串口設(shè)備。

on_prop_changed

hmi_on_prop_changed_t

屬性變化回調(diào)函數(shù)。

ctx

void*

上下文。

2.3 hmi_destroy函數(shù)

函數(shù)功能:

銷毀hmi對象。

函數(shù)原型:

ret_t hmi_destroy (hmi_t* hmi);

  • 參數(shù)說明:

參數(shù)

類型

說明

返回值

ret_t

返回RET_OK表示成功,否則表示失敗。

hmi

hmi_t*

hmi對象。

2.4hmi_dispatch函數(shù)

函數(shù)功能:

處理事件。。

函數(shù)原型:

ret_t hmi_dispatch (hmi_t* hmi);

  • 參數(shù)說明:
參數(shù)類型說明
返回值ret_t返回RET_OK表示成功,否則表示失敗。
hmihmi_t*hmi對象。

2.5 hmi_get_prop函數(shù)

函數(shù)功能:

獲取屬性。

函數(shù)原型:

ret_t hmi_get_prop (hmi_t* hmi, const char* target, const char* name, value_t* v);

  • 參數(shù)說明:

參數(shù)

類型

說明

返回值

ret_t

返回RET_OK表示成功,否則表示失敗。

hmi

hmi_t*

hmi對象。

target

const char*

目標(biāo)對象。

name

const char*

屬性名稱。

v

value_t*

屬性值。

2.6 hmi_get_prop_bool函數(shù)

函數(shù)功能:

獲取布爾屬性。

函數(shù)原型:

bool_t hmi_get_prop_bool (hmi_t* hmi, const char* name, bool_t defvalue);

  • 參數(shù)說明:
參數(shù)類型說明
返回值bool_t返回屬性值。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
defvaluebool_t默認(rèn)值。

2.7 hmi_get_prop_float函數(shù)

函數(shù)功能:

獲取浮點(diǎn)數(shù)屬性。

函數(shù)原型:

float hmi_get_prop_float (hmi_t* hmi, const char* name, float defvalue);

  • 參數(shù)說明:
參數(shù)類型說明
返回值float返回屬性值。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
defvaluefloat默認(rèn)值。

2.8hmi_get_prop_int函數(shù)

函數(shù)功能:

獲取整數(shù)屬性。

函數(shù)原型:

int32_t hmi_get_prop_int (hmi_t* hmi, const char* name, int32_t defvalue);

  • 參數(shù)說明:
參數(shù)類型說明
返回值int32_t返回屬性值。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
defvalueint32_t默認(rèn)值。

2.9hmi_get_prop_int64函數(shù)

函數(shù)功能:

獲取64位整數(shù)屬性。

函數(shù)原型:

int64_t hmi_get_prop_int64 (hmi_t* hmi, const char* name, int64_t defvalue);

  • 參數(shù)說明:
參數(shù)類型說明
返回值int64_t返回屬性值。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
defvalueint64_t默認(rèn)值。

2.10hmi_get_prop_str函數(shù)

函數(shù)功能:

獲取字符串屬性。

函數(shù)原型:

const char* hmi_get_prop_str (hmi_t* hmi, const char* name, const char* defvalue);

  • 參數(shù)說明:
參數(shù)類型說明
返回值constchar*返回屬性值。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
defvalueconstchar*默認(rèn)值。

2.11 hmi_set_prop函數(shù)

函數(shù)功能:

設(shè)置屬性。

函數(shù)原型:

ret_t hmi_set_prop (hmi_t* hmi, const char* target, const char* name, const value_t* v);

  • 參數(shù)說明:
參數(shù)類型說明
返回值ret_t返回RET_OK表示成功,否則表示失敗。
hmihmi_t*hmi對象。
targetconst char*目標(biāo)對象。
name
const char*屬性名稱。
vconstvalue_t*屬性值。

2.12hmi_set_prop_bool函數(shù)

函數(shù)功能:

設(shè)置布爾屬性。

函數(shù)原型:

ret_t hmi_set_prop_bool (hmi_t* hmi, const char* name, bool_t value);

  • 參數(shù)說明:
參數(shù)類型說明
返回值ret_t返回RET_OK表示成功,否則表示失敗。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
valuebool_t默認(rèn)值。

2.13hmi_set_prop_float函數(shù)

函數(shù)功能:

設(shè)置浮點(diǎn)數(shù)屬性。

函數(shù)原型:

ret_t hmi_set_prop_float (hmi_t* hmi, const char* name, float value);

  • 參數(shù)說明:
參數(shù)類型說明
返回值ret_t返回RET_OK表示成功,否則表示失敗。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
valuefloat默認(rèn)值。

2.14hmi_set_prop_int函數(shù)

函數(shù)功能:

設(shè)置整數(shù)屬性。

函數(shù)原型:

ret_t hmi_set_prop_int (hmi_t* hmi, const char* name, int32_t value);

  • 參數(shù)說明:
參數(shù)類型說明
返回值ret_t返回RET_OK表示成功,否則表示失敗。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
valueint32_t默認(rèn)值。

2.15hmi_set_prop_int64函數(shù)

函數(shù)功能:

設(shè)置64位整數(shù)屬性。

函數(shù)原型:

ret_t hmi_set_prop_int64 (hmi_t* hmi, const char* name, int64_t value);

  • 參數(shù)說明:
參數(shù)類型說明
返回值ret_t返回RET_OK表示成功,否則表示失敗。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
valueint64_t默認(rèn)值。

2.16hmi_set_prop_str函數(shù)

函數(shù)功能:

設(shè)置字符串屬性。

函數(shù)原型:

ret_t hmi_set_prop_str (hmi_t* hmi, const char* name, const char* value);

  • 參數(shù)說明:
參數(shù)類型說明
返回值ret_t返回RET_OK表示成功,否則表示失敗。
hmihmi_t*hmi對象。
nameconstchar*屬性名稱。
valueconstchar*默認(rèn)值。

2.17 remote_ui屬性

remote ui 對象。 高級用戶可以使用此對象直接操作遠(yuǎn)程UI。

  • 類型:remote_ui_t*

特性

是否支持

可直接讀取

可直接修改

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

    關(guān)注

    146

    文章

    16790

    瀏覽量

    349318
  • 串口屏
    +關(guān)注

    關(guān)注

    8

    文章

    522

    瀏覽量

    37167
  • awtk
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    200
收藏 人收藏

    評論

    相關(guān)推薦

    涂鴉標(biāo)準(zhǔn)模組MCU SDK開發(fā)流程

    MCU SDK 是根據(jù)涂鴉 IoT 開發(fā)平臺定義的產(chǎn)品功能,自動生成的 MCU 代碼。目前主要支持的MCU有STM32、51單片機(jī)、Ardu
    發(fā)表于 10-28 20:36 ?12次下載
    涂鴉標(biāo)準(zhǔn)模組<b class='flag-5'>MCU</b> <b class='flag-5'>SDK</b><b class='flag-5'>開發(fā)</b>流程

    AWTK 開源智能串口方案

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

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

    本文以一個家居控制應(yīng)用程序?yàn)槔榻BAWTK串口開發(fā)流程和MVVM數(shù)據(jù)綁定的高級用法。1.功能這個例子稍微復(fù)雜一點(diǎn),重點(diǎn)關(guān)注數(shù)據(jù)綁定。在
    的頭像 發(fā)表于 12-16 08:24 ?537次閱讀
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(2) - 家居控制

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

    串口方案,本系列文章介紹如何從零開發(fā)HMI程序,包括搭建開發(fā)環(huán)境、創(chuàng)建HMI運(yùn)行時(shí)工程、修改應(yīng)用界面以及開發(fā)
    的頭像 發(fā)表于 12-21 08:24 ?874次閱讀
    ?【<b class='flag-5'>AWTK</b>開源智能<b class='flag-5'>串口</b><b class='flag-5'>屏</b>方案】方案介紹和工作原理

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

    告警信息是一個常用的功能。在AWTK開源串口中,內(nèi)置告警信息模型,只需設(shè)計(jì)用戶界面即可實(shí)現(xiàn)告警信息的顯示和管理。1.功能告警信息是一個常用的功能,MCU在設(shè)備異常時(shí),會發(fā)送告警信息到
    的頭像 發(fā)表于 12-23 08:24 ?385次閱讀
    <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ā)(4) - 數(shù)據(jù)采集

    數(shù)據(jù)采用是一個常用的功能。在AWTK開源串口中,內(nèi)置數(shù)據(jù)采樣模型,只需設(shè)計(jì)用戶界面即可實(shí)現(xiàn)采樣數(shù)據(jù)的顯示和管理。1.功能數(shù)據(jù)采集是一個常用的功能,MCU定時(shí)采集數(shù)據(jù)(如環(huán)保設(shè)備定時(shí)采
    的頭像 發(fā)表于 12-30 08:24 ?342次閱讀
    <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ù)采集

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

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

    AWTK開源智能串口方案】HMI程序移植編譯及運(yùn)行

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

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

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

    AWTK開源智能串口方案】MCU SDK使用與編譯運(yùn)行

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

    AWTK開源智能串口方案】設(shè)計(jì)UI界面并上傳到串口

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

    AWTK 開源串口開發(fā)(10) - 告警信息的高級用法

    告警信息是串口常用的功能,之前我們介紹了告警信息的基本用法,實(shí)現(xiàn)了告警信息的顯示和管理。本文介紹一下實(shí)現(xiàn)查詢告警信息和查看告警信息詳情的方法。1.功能之前我們介紹了告警信息的基本用法
    的頭像 發(fā)表于 02-24 08:23 ?263次閱讀
    <b class='flag-5'>AWTK</b> 開源<b class='flag-5'>串口</b><b class='flag-5'>屏</b><b class='flag-5'>開發(fā)</b>(10) - 告警信息的高級<b class='flag-5'>用法</b>

    AWTK 開源串口開發(fā)(11) - 天氣預(yù)報(bào)

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

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

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

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

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