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

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

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

  • 普通嵌入式系统 mcu/stm32/hmi_app/hmi_app.c

  • 低端嵌入式系统 mcu/mini-sdk/hmi/examples/socket/main.c

  • Arduino 系统 mcu/mini-sdk/hmi/examples/arduino/awtk_hmi_demo.ino

在这里插入图片描述

  • MCU 模拟器 simulator/src/pages/home_page.c

在这里插入图片描述

基本用法

  • 创建 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);
  • 设置属性

示例

  hmi_set_prop_int(hmi, "温度", 36);
  • 获取属性

示例

  int32_t temp = hmi_get_prop_int(hmi, "温度", 0);
  • 在主循环中分发事件

示例

  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-CacheHAL_Init();                      //初始化HAL库Stm32_Clock_Init(160, 5, 2, 4);  //设置时钟,400Mhzdelay_init(400);                 //延时初始化LED_Init();                      //初始化LEDKEY_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 使用)。


函数

函数名称说明
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设置字符串属性。

属性

属性名称类型说明
remote_uiremote_ui_t*remote ui 对象。
hmi_create 函数

  • 函数功能:

创建hmi对象。

  • 函数原型:
hmi_t* hmi_create (tk_iostream_t* io, hmi_on_prop_changed_t on_prop_changed, void* ctx);
  • 参数说明:
参数类型说明
返回值hmi_t*返回hmi对象。
iotk_iostream_t*流对象。
on_prop_changedhmi_on_prop_changed_t属性变化回调函数。
ctxvoid*上下文。
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对象。
deviceconst char*串口设备。
on_prop_changedhmi_on_prop_changed_t属性变化回调函数。
ctxvoid*上下文。
hmi_destroy 函数

  • 函数功能:

销毁hmi对象。

  • 函数原型:
ret_t hmi_destroy (hmi_t* hmi);
  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
hmi_dispatch 函数

  • 函数功能:

处理事件。

  • 函数原型:
ret_t hmi_dispatch (hmi_t* hmi);
  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
hmi_get_prop 函数

  • 函数功能:

获取属性。

  • 函数原型:
ret_t hmi_get_prop (hmi_t* hmi, const char* target, const char* name, value_t* v);
  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
targetconst char*目标对象。
nameconst char*属性名称。
vvalue_t*属性值。
hmi_get_prop_bool 函数

  • 函数功能:

获取布尔属性。

  • 函数原型:
bool_t hmi_get_prop_bool (hmi_t* hmi, const char* name, bool_t defvalue);
  • 参数说明:
参数类型说明
返回值bool_t返回属性值。
hmihmi_t*hmi对象。
nameconst char*属性名称。
defvaluebool_t默认值。
hmi_get_prop_float 函数

  • 函数功能:

获取浮点数属性。

  • 函数原型:
float hmi_get_prop_float (hmi_t* hmi, const char* name, float defvalue);
  • 参数说明:
参数类型说明
返回值float返回属性值。
hmihmi_t*hmi对象。
nameconst char*属性名称。
defvaluefloat默认值。
hmi_get_prop_int 函数

  • 函数功能:

获取整数属性。

  • 函数原型:
int32_t hmi_get_prop_int (hmi_t* hmi, const char* name, int32_t defvalue);
  • 参数说明:
参数类型说明
返回值int32_t返回属性值。
hmihmi_t*hmi对象。
nameconst char*属性名称。
defvalueint32_t默认值。
hmi_get_prop_int64 函数

  • 函数功能:

获取64位整数属性。

  • 函数原型:
int64_t hmi_get_prop_int64 (hmi_t* hmi, const char* name, int64_t defvalue);
  • 参数说明:
参数类型说明
返回值int64_t返回属性值。
hmihmi_t*hmi对象。
nameconst char*属性名称。
defvalueint64_t默认值。
hmi_get_prop_str 函数

  • 函数功能:

获取字符串属性。

  • 函数原型:
const char* hmi_get_prop_str (hmi_t* hmi, const char* name, const char* defvalue);
  • 参数说明:
参数类型说明
返回值const char*返回属性值。
hmihmi_t*hmi对象。
nameconst char*属性名称。
defvalueconst char*默认值。
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*目标对象。
nameconst char*属性名称。
vconst value_t*属性值。
hmi_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对象。
nameconst char*属性名称。
valuebool_t属性值。
hmi_set_prop_float 函数

  • 函数功能:

设置浮点数属性。

  • 函数原型:
ret_t hmi_set_prop_float (hmi_t* hmi, const char* name, float value);
  • 参数说明:
参数类型说明
返回值ret_t返回RET_OK表示成功,否则表示失败。
hmihmi_t*hmi对象。
nameconst char*属性名称。
valuefloat属性值。
hmi_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对象。
nameconst char*属性名称。
valueint32_t属性值。
hmi_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对象。
nameconst char*属性名称。
valueint64_t属性值。
hmi_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对象。
nameconst char*属性名称。
valueconst char*属性值。
remote_ui 属性

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

  • 类型:remote_ui_t*
特性是否支持
可直接读取
可直接修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/325330.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

位移贴图还原电影3D角色

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 位移贴图(Displacement Map)在电影制作中是一…

老师们居然这样把期末考试成绩发给家长——群发成绩系统的妙用

在现代社会,随着科技的发展和教育的进步,家校之间的沟通方式也在不断更新和完善。其中,群发成绩系统作为一种新型的教育信息化工具,在期末考试成绩的传递方面发挥了重要作用。老师们通过群发成绩系统,将期末考试成绩快…

Linux下Redis6下载、安装和配置教程-2024年1月5日

Linux下Redis6下载、安装和配置教程-2024年1月5日 一、下载二、安装三、启动四、设置开机自启五、Redis的客户端1.Redis命令行客户端2.windows上的图形化桌面客户端 一、下载 1.Redis的官方下载:https://redis.io/download/ 2.网盘下载: 链接&#xff…

PyQt学习笔记

文章目录 1 环境搭建1.1 安装PyQt51.1.1 安装1.1.2 验证 1.2 安装PyInstaller1.3 安装PySide1.4 安装InnoSetup1.5 PyCharm配置外部工具1.5.1 PyCharm配置PyLUpdate1.5.2 PyCharm配置QtLinguist1.5.3 PyCharm配置QtDesigner1.5.4 PyCharm配置PyUIC1.5.5 PyCharm配置PyRCC1.5.6 …

手机上连网络转接app,电脑连接手机,共用网络转接app的办法

方法一,(不推荐) 因为太简单了所以写一下 电脑安装MuMu模拟器,之后安装网络转接app,这个模拟器设置了从电脑上安装app和,安卓与电脑同步文件夹功能,实现文件共享。所以直接用就可以了。 方法二…

音乐制作软件Studio One mac有哪些特点

Studio One mac是一款专业的音乐制作软件,该软件提供了全面的音频编辑和混音功能,包括录制、编曲、合成、采样等多种工具,可用于制作各种类型的音乐,如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…

C# .Net学习笔记—— 异步和多线程(await/async)

一、介绍 1、控制台测试await/async 2、C# 5.0 .Net framework4.5 CLR4.0 以后才有,本身是一种语法糖 二、基本测试 1、不加await测试。 private async static Task TestAsync() {Log.Info($"当前主线程id{Thread.CurrentThread.ManagedThreadId}"…

全视通-医院智能视讯系统 病房视讯系统解决方案 智能医院对讲系统信息发布系统

医院智能视讯系统解决方案 1、行业背景 对于患者来说现阶段各大医院的住院部大都面临同样的问题,例如患者就医缺乏精准化医疗,缺乏对患者的心理健康引导,缺乏多维度沟通渠道,缺乏多元增值服务等。 对于传统医院住院部病房&am…

【数据库】CRUD常用函数UNION 和 UNION ALL

文章目录 一、CRUD二、函数2.1 字符函数 (Character Functions):2.2 数字函数 (Numeric Functions):2.3 日期函数 (Date Functions):2.4 流程控制函数:2.5 聚合函数: 三、UNION 和 UNION ALL3.1 UNION:3.2 UNION ALL3.3 注意事项 一、CRUD CRUD 是指数据库操作的四…

【大数据进阶第三阶段之Hive学习笔记】Hive的数据类型与数据操作

【大数据进阶第三阶段之Hive学习笔记】Hive安装-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive基础入门-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive查询、函数、性能优化-CSDN博客 …

多级缓存、OpenResty缓存、Redis分布式缓存、进程缓存

目录标题 一、预期表现二、环境配置1、nginx环境2、OpenResty环境3、redis环境3.1 安装redis3.2 配置启动命令3.3 配置主从3.4 哨兵 4、进程缓存环境 三 、主要编码工作3.1、缓存主要问题解决3.1.1 缓存穿透3.1.2 缓存雪崩3.1.3 缓存击穿 3.2、OpenResty编码3.2.1 openresty/ng…

Java:爬虫htmlunit

为什么htmlunit与HttpClient两者都可以爬虫、网页采集、通过网页自动写入数据,我们会推荐使用htmlunit呢? 一、网页的模拟化 首先说说HtmlUnit相对于HttpClient的最明显的一个好处,HtmlUnit更好的将一个网页封装成了一个对象,如果你非要说H…