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

相关文章

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N