加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

產(chǎn)品應(yīng)用 | AWTK 串口屏開發(fā)(5) - MCU端 SDK 用法

01/07 09:25
3009
閱讀需 18 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

基本用法

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

創(chuàng)建 hmi 對象時,需要提供一個回調(diào)函數(shù),當(dāng)屬性變化時,會調(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=%dn", 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è)置時鐘,400Mhz ?delay_init(400); ? ? ? ? ? ? ? ? //延時初始化 ?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ù)說明:
參數(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.4?hmi_dispatch?函數(shù)

函數(shù)功能:

處理事件。。

函數(shù)原型:

ret_t hmi_dispatch (hmi_t* hmi);
    參數(shù)說明:
參數(shù) 類型 說明
返回值 ret_t 返回RET_OK表示成功,否則表示失敗。
hmi hmi_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 返回屬性值。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
defvalue bool_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 返回屬性值。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
defvalue float 默認(rèn)值。

2.8?hmi_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 返回屬性值。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
defvalue int32_t 默認(rèn)值。

2.9?hmi_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 返回屬性值。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
defvalue int64_t 默認(rèn)值。

2.10?hmi_get_prop_str?函數(shù)

函數(shù)功能:

獲取字符串屬性。

函數(shù)原型:

const char* hmi_get_prop_str (hmi_t* hmi, const char* name, const char* defvalue);
    參數(shù)說明:
參數(shù) 類型 說明
返回值 const?char* 返回屬性值。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
defvalue const?char* 默認(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表示成功,否則表示失敗。
hmi hmi_t* hmi對象。
target const char* 目標(biāo)對象。
name const char* 屬性名稱。
v const?value_t* 屬性值。

2.12?hmi_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表示成功,否則表示失敗。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
value bool_t 默認(rèn)值。

2.13?hmi_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表示成功,否則表示失敗。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
value float 默認(rèn)值。

2.14?hmi_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表示成功,否則表示失敗。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
value int32_t 默認(rèn)值。

2.15?hmi_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表示成功,否則表示失敗。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
value int64_t 默認(rèn)值。

2.16?hmi_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表示成功,否則表示失敗。
hmi hmi_t* hmi對象。
name const?char* 屬性名稱。
value const?char* 默認(rèn)值。

2.17 remote_ui?屬性

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

    類型:remote_ui_t*
特性 是否支持
可直接讀取
可直接修改

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價格 更多信息
KSZ9031RNXCA-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC48

ECAD模型

下載ECAD模型
$105.81 查看
ISO1042DWV 1 Texas Instruments Isolated CAN transceiver with 70-V bus fault protection & flexible data rate 8-SOIC -40 to 125

ECAD模型

下載ECAD模型
暫無數(shù)據(jù) 查看
KSZ9131RNXI 1 Microchip Technology Inc Ethernet Transceiver, PQCC48

ECAD模型

下載ECAD模型
$4.24 查看
致遠(yuǎn)電子

致遠(yuǎn)電子

廣州致遠(yuǎn)電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術(shù)認(rèn)證企業(yè),廣州市高端工控測量儀器工程技術(shù)研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。

廣州致遠(yuǎn)電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術(shù)認(rèn)證企業(yè),廣州市高端工控測量儀器工程技術(shù)研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜