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

相关文章

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客