0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AWTK 串口屏开发(5) - MCU端 SDK 用法

ZLG致远电子 2024-01-06 08:24 次阅读

AWTK开源智能串口屏,不但开放了串口屏端全部源码,还提供了MCUSDK,大大加快MCU软件的开发。本介绍一下MCU端SDK在不同平台上的用法。

完整示例可以参考下面的几个例子:

普通嵌入式系统

mcu/stm32h743/USER/main.c

低端嵌入式系统

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

MCU 模拟

simulator/src/pages/home_page.c

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

基本用法

1. 创建 hmi 对象

创建 hmi 对象时,需要提供一个回调函数,当属性变化时,会调用这个函数。示例:

static ret_t hmi_on_prop_change(hmi_t* hmi, const char* name, const value_t* v) { /*处理参数变化*/ 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. 设置属性

示例:

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

3. 获取属性示例:

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

4. 在主循环中分发事件

示例:

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 "温度"
/*回调函数*/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); //设置时钟,400Mhz delay_init(400); //延时初始化 LED_Init(); //初始化LED KEY_Init(); //初始化按键}
int main(void) { u8 key = 0; hmi_t* hmi = NULL;
system_init();
/*初始化内存*/ tk_mem_init(s_heap_mem, sizeof(s_heap_mem));
/*创建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; } }
/*修改数据*/ hmi_set_prop_int(hmi, HMI_PROP_TEMP, s_value); } else { delay_ms(10); }
/*分发事件*/ hmi_dispatch(hmi); }}

API 参考

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

1. 函数

函数名称

说明

hmi_create

创建hmi对象。

hmi_create_with_serial

创建hmi对象。

hmi_destroy

销毁hmi对象。

hmi_dispatch

处理事件。

hmi_get_prop

获取属性。

hmi_get_prop_bool

获取布尔属性。

hmi_get_prop_float

获取浮点数属性。

hmi_get_prop_int

获取整数属性。

hmi_get_prop_int64

获取64位整数属性。

hmi_get_prop_str

获取字符串属性。

hmi_set_prop

设置属性。

hmi_set_prop_bool

设置布尔属性。

hmi_set_prop_float

设置浮点数属性。

hmi_set_prop_int

设置整数属性。

hmi_set_prop_int64

设置64位整数属性。

hmi_set_prop_str

设置字符串属性。

2.属性

属性名称

类型

说明

remote_ui

remote_ui_t*

emote ui 对象。

2.1 hmi_create 函数

  • 函数功能:

创建hmi对象。

函数原型:

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

参数

类型

说明

返回值

hmi_t*

返回hmi对象。

io

tk_iostream_t*

流对象。

on_prop_changed

hmi_on_prop_changed_t

属性变化回调函数。

ctx

void*

上下文。

2.2 hmi_create_with_serial函数

函数功能:

创建hmi对象。

函数原型:

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

  • 参数说明:

参数

类型

说明

返回值

hmi_t*

返回hmi对象。

device

const char*

串口设备。

on_prop_changed

hmi_on_prop_changed_t

属性变化回调函数。

ctx

void*

上下文。

2.3 hmi_destroy函数

函数功能:

销毁hmi对象。

函数原型:

ret_t hmi_destroy (hmi_t* hmi);

  • 参数说明:

参数

类型

说明

返回值

ret_t

返回RET_OK表示成功,否则表示失败。

hmi

hmi_t*

hmi对象。

2.4hmi_dispatch函数

函数功能:

处理事件。。

函数原型:

ret_t hmi_dispatch (hmi_t* hmi);

  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。

2.5 hmi_get_prop函数

函数功能:

获取属性。

函数原型:

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

  • 参数说明:

参数

类型

说明

返回值

ret_t

返回RET_OK表示成功,否则表示失败。

hmi

hmi_t*

hmi对象。

target

const char*

目标对象。

name

const char*

属性名称。

v

value_t*

属性值。

2.6 hmi_get_prop_bool函数

函数功能:

获取布尔属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值bool_t返回属性值。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
defvaluebool_t默认值。

2.7 hmi_get_prop_float函数

函数功能:

获取浮点数属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值float返回属性值。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
defvaluefloat默认值。

2.8hmi_get_prop_int函数

函数功能:

获取整数属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值int32_t返回属性值。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
defvalueint32_t默认值。

2.9hmi_get_prop_int64函数

函数功能:

获取64位整数属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值int64_t返回属性值。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
defvalueint64_t默认值。

2.10hmi_get_prop_str函数

函数功能:

获取字符串属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值constchar*返回属性值。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
defvalueconstchar*默认值。

2.11 hmi_set_prop函数

函数功能:

设置属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
targetconst char*目标对象。
name
const char*属性名称。
vconstvalue_t*属性值。

2.12hmi_set_prop_bool函数

函数功能:

设置布尔属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
valuebool_t默认值。

2.13hmi_set_prop_float函数

函数功能:

设置浮点数属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
valuefloat默认值。

2.14hmi_set_prop_int函数

函数功能:

设置整数属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
valueint32_t默认值。

2.15hmi_set_prop_int64函数

函数功能:

设置64位整数属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
valueint64_t默认值。

2.16hmi_set_prop_str函数

函数功能:

设置字符串属性。

函数原型:

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

  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
nameconstchar*属性名称。
valueconstchar*默认值。

2.17 remote_ui属性

remote ui 对象。 高级用户可以使用此对象直接操作远程UI。

  • 类型:remote_ui_t*

特性

是否支持

可直接读取

可直接修改

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16016

    浏览量

    343624
  • 串口屏
    +关注

    关注

    8

    文章

    473

    浏览量

    36617
  • awtk
    +关注

    关注

    0

    文章

    23

    浏览量

    169
收藏 人收藏

    评论

    相关推荐

    涂鸦标准模组MCU SDK开发流程 精选资料推荐

    MCU SDK 是根据涂鸦 IoT 开发平台定义的产品功能,自动生成的 MCU 代码。目前主要支持的MCU有STM32、51单片机、Ardu
    发表于 07-20 06:28

    Tuya MCU SDK Arduino Library开发

    Tuya MCU SDK Arduino Library 基于涂鸦Wi-Fi 通用对接方案进行开发的,设备 MCU 通过串口与 Wi-Fi
    发表于 10-29 06:53

    涂鸦标准模组MCU SDK开发流程

    MCU SDK 是根据涂鸦 IoT 开发平台定义的产品功能,自动生成的 MCU 代码。目前主要支持的MCU有STM32、51单片机、Ardu
    发表于 10-28 20:36 12次下载
    涂鸦标准模组<b class='flag-5'>MCU</b> <b class='flag-5'>SDK</b><b class='flag-5'>开发</b>流程

    AWTK 开源智能串口屏方案

    AWTK开源智能串口屏方案发布,旨在解决传统串口屏诸多痛点,为用户提供更开放、更易用、更强大的开源串口屏方案。基于AWTK
    的头像 发表于 12-02 08:24 460次阅读
    <b class='flag-5'>AWTK</b> 开源智能<b class='flag-5'>串口</b>屏方案

    AWTK 串口开发(1) - Hello World

    本文以一个简单的温度设置程序为例,介绍AWTK串口屏的开发流程和MVVM数据绑定的基本方法。功能这个例子很简单,制作一个调节温度的界面。在这里例子中,模型(也就是数据)里只有一个温度变量:变量名
    的头像 发表于 12-08 15:52 203次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b>屏<b class='flag-5'>开发</b>(1) - Hello World

    AWTK 串口开发(2) - 家居控制

    本文以一个家居控制应用程序为例,介绍AWTK串口屏的开发流程和MVVM数据绑定的高级用法。1.功能这个例子稍微复杂一点,重点关注数据绑定。在这个例子中,模型(也就是数据)里包括一台空调
    的头像 发表于 12-16 08:24 278次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b>屏<b class='flag-5'>开发</b>(2) - 家居控制

    ​【AWTK开源智能串口屏方案】方案介绍和工作原理

    串口屏方案,本系列文章介绍如何从零开发HMI程序,包括搭建开发环境、创建HMI运行时工程、修改应用界面以及开发MCU程序。
    的头像 发表于 12-21 08:24 401次阅读
    ​【<b class='flag-5'>AWTK</b>开源智能<b class='flag-5'>串口</b>屏方案】方案介绍和工作原理

    AWTK 串口开发(3) - 告警信息

    告警信息是一个常用的功能。在AWTK开源串口屏中,内置告警信息模型,只需设计用户界面即可实现告警信息的显示和管理。1.功能告警信息是一个常用的功能,MCU在设备异常时,会发送告警信息到串口
    的头像 发表于 12-23 08:24 179次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b>屏<b class='flag-5'>开发</b>(3) - 告警信息

    AWTK 串口开发(4) - 数据采集

    数据采用是一个常用的功能。在AWTK开源串口屏中,内置数据采样模型,只需设计用户界面即可实现采样数据的显示和管理。1.功能数据采集是一个常用的功能,MCU定时采集数据(如环保设备定时采样空气
    的头像 发表于 12-30 08:24 158次阅读
    <b class='flag-5'>AWTK</b> <b class='flag-5'>串口</b>屏<b class='flag-5'>开发</b>(4) - 数据采集

    AWTK 开源串口开发(6) - 定时器的用法

    定时器是个常用的功能,AWTK串口屏提供了丰富的定时器函数,用于定时器的启动、停止、暂停、恢复、修改和重置等功能,本文以计时器的例子来介绍定时器的基本用法。定时器也是一个常用的功能,在AWTK
    的头像 发表于 01-13 08:24 161次阅读
    <b class='flag-5'>AWTK</b> 开源<b class='flag-5'>串口</b>屏<b class='flag-5'>开发</b>(6) - 定时器的<b class='flag-5'>用法</b>

    AWTK开源智能串口屏方案】HMI端程序移植编译及运行

    -HMI是基于AWTKAWTK-MVVM开发的低代码智能串口屏方案,本系列文章介绍如何从零开发HMI程序,包括搭建
    的头像 发表于 01-18 08:24 294次阅读
    【<b class='flag-5'>AWTK</b>开源智能<b class='flag-5'>串口</b>屏方案】HMI端程序移植编译及运行

    AWTK 开源串口开发(9) - 用户和权限管理

    AWTK串口屏中,内置用户管理和权限控制的模型,无需编码即可实现登录、登出、修改密码、权限控制、创建用户、删除用户等功能,本文介绍一下用户管理和权限控制的基本用法。用户管理和权限控制是一个常用
    的头像 发表于 02-19 12:10 188次阅读
    <b class='flag-5'>AWTK</b> 开源<b class='flag-5'>串口</b>屏<b class='flag-5'>开发</b>(9) - 用户和权限管理

    AWTK开源智能串口屏方案】MCU SDK使用与编译运行

    本篇文章将介绍AWTK-HMI中的MCU开发方法,包括MCUSDK常用API的说明、使用流程及如何编译到Linux和STM32平台。引言:AWTK-HMI是基于
    的头像 发表于 02-19 12:11 401次阅读
    【<b class='flag-5'>AWTK</b>开源智能<b class='flag-5'>串口</b>屏方案】<b class='flag-5'>MCU</b> <b class='flag-5'>SDK</b>使用与编译运行

    AWTK开源智能串口屏方案】设计UI界面并上传到串口

    本篇文章将介绍如何使用AWStudio设计串口屏端的UI界面和添加绑定规则,以及怎么将资源文件上传到串口屏端。引言:AWTK-HMI是基于AWTK
    的头像 发表于 02-22 08:24 205次阅读
    【<b class='flag-5'>AWTK</b>开源智能<b class='flag-5'>串口</b>屏方案】设计UI界面并上传到<b class='flag-5'>串口</b>屏

    AWTK 开源串口开发(12) - 记事本应用

    。在传统的的串口屏中,开发一个记事本应用,即使可能,也是非常麻烦的事情。在AWTK串口屏中,内置文件模型和文件选择对话框,实现一个简单的记事本,不需要编写代码,设计好界
    的头像 发表于 03-09 08:23 113次阅读
    <b class='flag-5'>AWTK</b> 开源<b class='flag-5'>串口</b>屏<b class='flag-5'>开发</b>(12) - 记事本应用