GUI guider 常用函数解析

2024-06-06 08:36
文章标签 函数 解析 常用 gui guider

本文主要是介绍GUI guider 常用函数解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GUI Guider 是 NXP 提供的用于设计和生成 LittlevGL (LVGL) 用户界面的工具。它生成的代码包括初始化、事件处理和其他相关功能。以下是一些常用的 GUI Guider 函数及其介绍:

1. void setup_scr_<screen_name>(lv_ui *ui)

描述: 初始化并设置指定的屏幕。
参数:

  • lv_ui *ui: 指向包含所有 LVGL 对象的结构的指针。

示例:

void setup_scr_main_screen(lv_ui *ui) {// 初始化和设置主屏幕
}

2. void events_init(lv_ui *ui)

描述: 初始化屏幕上的所有事件处理程序。
参数:

  • lv_ui *ui: 指向包含所有 LVGL 对象的结构的指针。

示例:

void events_init(lv_ui *ui) {// 注册所有事件处理程序
}

3. void custom_init(lv_ui *ui)

描述: 用于用户自定义的初始化代码。
参数:

  • lv_ui *ui: 指向包含所有 LVGL 对象的结构的指针。

示例:

void custom_init(lv_ui *ui) {// 用户自定义初始化代码
}

4. lv_event_cb_t <object_name>_event_handler

描述: 特定对象的事件处理程序。
参数:

  • lv_event_t *e: LVGL 事件指针。

示例:

void btn1_event_handler(lv_event_t *e) {lv_event_code_t code = lv_event_get_code(e);lv_obj_t *btn = lv_event_get_target(e);if(code == LV_EVENT_CLICKED) {// 处理按钮点击事件}
}

5. void lv_ui_init(lv_ui *ui)

描述: 初始化所有 UI 组件。
参数:

  • lv_ui *ui: 指向包含所有 LVGL 对象的结构的指针。

示例:

void lv_ui_init(lv_ui *ui) {setup_scr_main_screen(ui);events_init(ui);
}

6. void lv_task_handler(void)

描述: LVGL 的任务处理函数,通常在主循环中调用以处理 LVGL 的任务。
参数: 无。

示例:

void app_main(void) {lv_init();lv_ui ui;lv_ui_init(&ui);while(1) {lv_task_handler();vTaskDelay(1); // FreeRTOS 中的延迟函数}
}

7. void lv_timer_handler(void)

描述: 定时处理 LVGL 任务,通常在硬件定时器中调用。
参数: 无。

示例:

esp_timer_handle_t lvgl_timer;
const esp_timer_create_args_t lvgl_timer_args = {.callback = &lv_timer_handler,.name = "lvgl_timer"
};
ESP_ERROR_CHECK(esp_timer_create(&lvgl_timer_args, &lvgl_timer));
ESP_ERROR_CHECK(esp_timer_start_periodic(lvgl_timer, 5 * 1000)); // 每5ms调用一次

8. void lv_scr_load(lv_obj_t *scr)

描述: 加载并显示指定的屏幕。
参数:

  • lv_obj_t *scr: 指向要加载的屏幕对象的指针。

示例:

lv_obj_t *main_screen = lv_obj_create(NULL);
lv_scr_load(main_screen);

9. void lv_obj_clean(lv_obj_t *obj)

描述: 清除对象的所有子对象。
参数:

  • lv_obj_t *obj: 指向要清除的对象的指针。

示例:

lv_obj_clean(lv_scr_act()); // 清空当前屏幕

10. void lv_obj_del(lv_obj_t *obj)

描述: 删除指定的对象。
参数:

  • lv_obj_t *obj: 指向要删除的对象的指针。

示例:

lv_obj_del(button1); // 删除 button1 对象

整体示例

下面是一个完整的示例,展示了如何使用 GUI Guider 生成的函数来初始化和管理屏幕:

#include "lvgl.h"
#include "gui_guider.h"
#include "events_init.h"
#include "custom.h"lv_ui guider_ui;void app_main(void) {lv_init();// 初始化显示和输入设备lv_disp_drv_t disp_drv;lv_indev_drv_t indev_drv;lv_disp_drv_init(&disp_drv);lv_indev_drv_init(&indev_drv);lv_disp_drv_register(&disp_drv);lv_indev_drv_register(&indev_drv);// 初始化 GUI Guiderlv_ui_init(&guider_ui);// 加载主屏幕setup_scr_main_screen(&guider_ui);lv_scr_load(guider_ui.main_screen);// 主循环while (1) {lv_task_handler();vTaskDelay(1); // FreeRTOS 延迟}
}

总结

以上介绍了 GUI Guider 生成的常用函数及其功能。通过这些函数,你可以初始化和管理 LVGL 用户界面,处理用户事件,并实现自定义的界面逻辑。如果有更多问题或需要进一步的帮助,请告诉我。

除了前面介绍的函数外,在使用 GUI Guider 生成的代码和 LVGL 驱动 TFT 屏幕时,还有一些其他常用的函数。这些函数在初始化、事件处理和屏幕管理中非常有用。以下是一些其他常用的函数及其简要说明:

11. lv_obj_t *lv_label_create(lv_obj_t *parent)

描述: 创建一个新的标签对象。
参数:

  • lv_obj_t *parent: 指向父对象的指针。
    返回值: 新创建的标签对象。

示例:

lv_obj_t *label = lv_label_create(lv_scr_act());
lv_label_set_text(label, "Hello, LVGL!");

12. lv_obj_t *lv_btn_create(lv_obj_t *parent)

描述: 创建一个新的按钮对象。
参数:

  • lv_obj_t *parent: 指向父对象的指针。
    返回值: 新创建的按钮对象。

示例:

lv_obj_t *btn = lv_btn_create(lv_scr_act());
lv_obj_set_size(btn, 100, 50);

13. void lv_label_set_text(lv_obj_t *label, const char *text)

描述: 设置标签的文本。
参数:

  • lv_obj_t *label: 指向标签对象的指针。
  • const char *text: 要设置的文本。

示例:

lv_label_set_text(label, "New Text");

14. void lv_btn_set_action(lv_obj_t *btn, lv_btn_action_t type, lv_action_t action)

描述: 设置按钮的动作回调函数(适用于旧版本的 LVGL,LVGL 7.0 之前)。
参数:

  • lv_obj_t *btn: 指向按钮对象的指针。
  • lv_btn_action_t type: 按钮动作类型(如 LV_BTN_ACTION_CLICK)。
  • lv_action_t action: 回调函数。

示例:

static lv_res_t btn_click_action(lv_obj_t *btn) {printf("Button clicked\n");return LV_RES_OK;
}lv_btn_set_action(btn, LV_BTN_ACTION_CLICK, btn_click_action);

15. void lv_obj_set_pos(lv_obj_t *obj, lv_coord_t x, lv_coord_t y)

描述: 设置对象的位置。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t x: X 坐标。
  • lv_coord_t y: Y 坐标。

示例:

lv_obj_set_pos(label, 10, 10);

16. void lv_obj_set_size(lv_obj_t *obj, lv_coord_t w, lv_coord_t h)

描述: 设置对象的大小。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t w: 宽度。
  • lv_coord_t h: 高度。

示例:

lv_obj_set_size(btn, 100, 50);

17. void lv_obj_set_hidden(lv_obj_t *obj, bool hide)

描述: 显示或隐藏对象。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • bool hide: 如果为 true,隐藏对象;否则显示对象。

示例:

lv_obj_set_hidden(label, true);

18. void lv_obj_align(lv_obj_t *obj, const lv_obj_t *base, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs)

描述: 对齐对象到基对象。
参数:

  • lv_obj_t *obj: 指向要对齐的对象的指针。
  • const lv_obj_t *base: 指向基对象的指针。
  • lv_align_t align: 对齐方式。
  • lv_coord_t x_ofs: X 轴偏移量。
  • lv_coord_t y_ofs: Y 轴偏移量。

示例:

lv_obj_align(btn, NULL, LV_ALIGN_CENTER, 0, 0);

19. void lv_task_create(lv_task_cb_t task_cb, uint32_t period, lv_task_prio_t prio, void *user_data)

描述: 创建一个新的任务。
参数:

  • lv_task_cb_t task_cb: 任务回调函数。
  • uint32_t period: 任务执行的周期(以毫秒为单位)。
  • lv_task_prio_t prio: 任务优先级。
  • void *user_data: 用户数据。

示例:

static void my_task(lv_task_t *task) {// Task code
}lv_task_create(my_task, 1000, LV_TASK_PRIO_MID, NULL); // 每秒执行一次任务

20. void lv_anim_set_time(lv_anim_t *anim, uint32_t duration)

描述: 设置动画的持续时间。
参数:

  • lv_anim_t *anim: 指向动画对象的指针。
  • uint32_t duration: 持续时间(以毫秒为单位)。

示例:

lv_anim_t a;
lv_anim_init(&a);
lv_anim_set_time(&a, 500); // 动画持续 500 毫秒

21. void lv_obj_set_style_local_value_str(lv_obj_t *obj, lv_style_value_t value, lv_state_t state)

描述: 设置对象的本地样式值字符串。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_style_value_t value: 样式值。
  • lv_state_t state: 状态。

示例:

lv_obj_set_style_local_value_str(label, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, "New Value");

综合示例

以下是一个综合示例,展示了如何使用上述函数创建和管理一个带有标签和按钮的简单界面:

#include "lvgl.h"
#include "gui_guider.h"
#include "events_init.h"
#include "custom.h"lv_ui guider_ui;static void btn_event_handler(lv_event_t *e) {lv_event_code_t code = lv_event_get_code(e);lv_obj_t *btn = lv_event_get_target(e);if (code == LV_EVENT_CLICKED) {lv_label_set_text(guider_ui.label1, "Button clicked!");}
}void app_main(void) {lv_init();// 初始化显示和输入设备lv_disp_drv_t disp_drv;lv_indev_drv_t indev_drv;lv_disp_drv_init(&disp_drv);lv_indev_drv_init(&indev_drv);lv_disp_drv_register(&disp_drv);lv_indev_drv_register(&indev_drv);// 初始化 GUI Guiderlv_ui_init(&guider_ui);// 创建标签guider_ui.label1 = lv_label_create(lv_scr_act());lv_label_set_text(guider_ui.label1, "Hello, LVGL!");lv_obj_align(guider_ui.label1, LV_ALIGN_CENTER, 0, -40);// 创建按钮lv_obj_t *btn = lv_btn_create(lv_scr_act());lv_obj_set_size(btn, 100, 50);lv_obj_align(btn, LV_ALIGN_CENTER, 0, 40);lv_obj_add_event_cb(btn, btn_event_handler, LV_EVENT_CLICKED, NULL);// 加载主屏幕setup_scr_main_screen(&guider_ui);lv_scr_load(guider_ui.main_screen);// 主循环while (1) {lv_task_handler();vTaskDelay(1); // FreeRTOS 延迟}
}

通过这些函数和示例代码,你可以更好地理解和使用 GUI Guider 和 LVGL 来创建和管理用户界面。如果有更多问题或需要进一步的帮助,请告诉我。

当然,还有许多其他常用的 LVGL 函数可以用来创建和管理图形界面组件。下面是更多的常用函数及其介绍:

22. void lv_obj_add_flag(lv_obj_t *obj, lv_obj_flag_t flag)

描述: 为对象添加标志(例如使对象可点击、隐藏等)。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_obj_flag_t flag: 要添加的标志。

示例:

lv_obj_add_flag(btn, LV_OBJ_FLAG_CLICKABLE); // 使按钮对象可点击

23. void lv_obj_clear_flag(lv_obj_t *obj, lv_obj_flag_t flag)

描述: 清除对象的标志。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_obj_flag_t flag: 要清除的标志。

示例:

lv_obj_clear_flag(btn, LV_OBJ_FLAG_CLICKABLE); // 使按钮对象不可点击

24. void lv_obj_set_style_bg_color(lv_obj_t *obj, lv_color_t color, lv_state_t state)

描述: 设置对象的背景颜色。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_color_t color: 要设置的颜色。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_bg_color(btn, lv_color_hex(0xFF0000), LV_STATE_DEFAULT); // 设置按钮的背景颜色为红色

25. void lv_obj_set_style_radius(lv_obj_t *obj, lv_coord_t radius, lv_state_t state)

描述: 设置对象的圆角半径。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t radius: 圆角半径。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_radius(btn, 10, LV_STATE_DEFAULT); // 设置按钮的圆角半径为10

26. void lv_obj_set_style_border_width(lv_obj_t *obj, lv_coord_t width, lv_state_t state)

描述: 设置对象的边框宽度。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t width: 边框宽度。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_border_width(btn, 2, LV_STATE_DEFAULT); // 设置按钮的边框宽度为2

27. void lv_obj_set_style_border_color(lv_obj_t *obj, lv_color_t color, lv_state_t state)

描述: 设置对象的边框颜色。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_color_t color: 边框颜色。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_border_color(btn, lv_color_hex(0x00FF00), LV_STATE_DEFAULT); // 设置按钮的边框颜色为绿色

28. void lv_obj_set_style_text_font(lv_obj_t *obj, const lv_font_t *font, lv_state_t state)

描述: 设置对象的文本字体。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • const lv_font_t *font: 字体指针。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_text_font(label, &lv_font_montserrat_28, LV_STATE_DEFAULT); // 设置标签的字体为 Montserrat 28

29. void lv_obj_set_style_text_color(lv_obj_t *obj, lv_color_t color, lv_state_t state)

描述: 设置对象的文本颜色。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_color_t color: 文本颜色。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_text_color(label, lv_color_hex(0x0000FF), LV_STATE_DEFAULT); // 设置标签的文本颜色为蓝色

30. void lv_obj_add_event_cb(lv_obj_t *obj, lv_event_cb_t event_cb, lv_event_code_t filter, void *user_data)

描述: 为对象添加事件回调函数。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_event_cb_t event_cb: 事件回调函数。
  • lv_event_code_t filter: 过滤的事件代码。
  • void *user_data: 用户数据指针。

示例:

static void btn_event_handler(lv_event_t *e) {lv_event_code_t code = lv_event_get_code(e);lv_obj_t *btn = lv_event_get_target(e);if (code == LV_EVENT_CLICKED) {printf("Button clicked\n");}
}lv_obj_add_event_cb(btn, btn_event_handler, LV_EVENT_CLICKED, NULL); // 为按钮添加点击事件回调

31. void lv_obj_set_style_value_str(lv_obj_t *obj, const char *str, lv_state_t state)

描述: 设置对象的值字符串。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • const char *str: 值字符串。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_value_str(label, "Hello, LVGL!", LV_STATE_DEFAULT); // 设置标签的值字符串

32. void lv_obj_set_style_shadow_width(lv_obj_t *obj, lv_coord_t width, lv_state_t state)

描述: 设置对象的阴影宽度。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t width: 阴影宽度。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_shadow_width(btn, 10, LV_STATE_DEFAULT); // 设置按钮的阴影宽度为10

33. void lv_obj_set_style_shadow_color(lv_obj_t *obj, lv_color_t color, lv_state_t state)

描述: 设置对象的阴影颜色。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_color_t color: 阴影颜色。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_shadow_color(btn, lv_color_hex(0x888888), LV_STATE_DEFAULT); // 设置按钮的阴影颜色为灰色

34. void lv_obj_set_style_pad_all(lv_obj_t *obj, lv_coord_t pad, lv_state_t state)

描述: 设置对象的内边距。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t pad: 内边距大小。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_pad_all(btn, 5, LV_STATE_DEFAULT); // 设置按钮的内边距为5

35. void lv_obj_set_style_pad_top(lv_obj_t *obj, lv_coord_t pad, lv_state_t state)

描述: 设置对象的顶部内边距。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t pad: 顶部内边距大小。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_pad_top(btn, 10, LV_STATE_DEFAULT); // 设置按钮的顶部内边距为10

36. void lv_obj_set_style_pad_bottom(lv_obj_t *obj, lv_coord_t pad, lv_state_t state)

描述: 设置对象的底部内边距。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t pad: 底部内边距大小。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_pad_bottom(btn, 10, LV_STATE_DEFAULT); // 设置按钮的底部内边距为10

37. void lv_obj_set_style_pad_left(lv_obj_t *obj, lv_coord_t pad, lv_state_t state)

描述: 设置对象的左边内边距。
参数:

  • lv_obj_t *obj: 指向对象的指针。
  • lv_coord_t pad: 左边内边距大小。
  • lv_state_t state: 对象的状态。

示例:

lv_obj_set_style_pad_left(btn, 10, LV_STATE_DEFAULT); // 设置按钮的左边内边

这篇关于GUI guider 常用函数解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035605

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

OWASP十大安全漏洞解析

OWASP(开放式Web应用程序安全项目)发布的“十大安全漏洞”列表是Web应用程序安全领域的权威指南,它总结了Web应用程序中最常见、最危险的安全隐患。以下是对OWASP十大安全漏洞的详细解析: 1. 注入漏洞(Injection) 描述:攻击者通过在应用程序的输入数据中插入恶意代码,从而控制应用程序的行为。常见的注入类型包括SQL注入、OS命令注入、LDAP注入等。 影响:可能导致数据泄