LVGL学习(三)- 日志

一、简介

前两篇我们介绍了LVGL的基本操作和定时器,今天来说一下日志系统

不管是什么开发,日志系统都很重要,没有日志系统就不知道系统运行状态。LVGL也是一样的。

二、日志

惯例,先看demo。

cpp 复制代码
static void log_cb(lv_log_level_t level, const char * buf)
{
    fprintf(stderr, "%s\n", buf);
    fflush(stderr);
}

int main(void)
{
    /* 初始化 LVGL 核心库 */
    lv_init();
    

    /* ---- 创建显示设备 ---- */
    /* lv_sdl_window_create() 内部会调用 SDL_Init 初始化 SDL,
     * 创建窗口,注册刷新定时器,并设置 lv_tick */
    lv_display_t * display = lv_sdl_window_create(500, 500);
    if(display == NULL) {
        return 1;
    }

    lv_log_register_print_cb(log_cb);
    LV_LOG_INFO("hello");  

    /* 在屏幕中央显示一行文字 */
    lv_obj_t * counter_label = lv_label_create(lv_screen_active());
    lv_label_set_text(counter_label, "Hello, LVGL");
    lv_obj_center(counter_label);    /* 居中对齐 */

    while(1) {
        lv_timer_handler();
        lv_delay_ms(5);
    }

    return 0;
}

lv_log_register_print_cb

cpp 复制代码
void lv_log_register_print_cb(lv_log_print_g_cb_t print_cb);

注册日志输出回调

print_cb:日志回调

注册之后,日志系统会先把日志回调到注册的函数中然后根据用户自定义的方式进行日志输出

LVGL默认是不知道要把日志输出在哪里的,如果不指定,默认是不打印日志的。因为我们使用的是模拟器,所以我们要把日志指定到终端输出窗口。

后面使用MCU的时候,这里就可以把日志系统指定到uart或者rtt

cpp 复制代码
static void log_cb(lv_log_level_t level, const char * buf)
{
    fprintf(stderr, "%s\n", buf);
    fflush(stderr);
}

lv_log_register_print_cb(log_cb);

日志API

注册之后,我们就可以调用日志接口进行输出了。LVGL默认有多种日志接口,在lv_log.h中,有兴趣的可以自行查看。

cpp 复制代码
#define LV_LOG_TRACE(...) 
#define LV_LOG_INFO(...) 
#define LV_LOG_WARN(...) 
#define LV_LOG_WARN_ONCE(...) 
#define LV_LOG_ERROR(...) 
#define LV_LOG_USER(...) 
#define LV_LOG(...) 

LVGL采用的也是常规的日志系统,对日志分等级。这是很常见的,这里不过多介绍。这里演示一下常用的几个等级。

cpp 复制代码
    LV_LOG_INFO("hello");  
    LV_LOG_WARN("hello");  
    LV_LOG_ERROR("hello");  

可以看到,日志系统打印了等级信息、时间戳,两条日志的时间差、日志内容、调用该日志的文件名、行号。

LVGL的日志系统打印的很详细,大家在后续的使用中也会频繁使用到日志系统的。

相关推荐
t_guest7 天前
LVGL学习(六)- widget、part、state
lvgl·state·part
浮江雾11 天前
Flutter第十七节-----路由管理(3)
android·开发语言·前端·javascript·flutter·入门
浮江雾14 天前
Flutter第十节-----Flutter布局与组件全解析
android·开发语言·前端·学习·flutter·入门
浮江雾16 天前
Flutter第九节-----Align与Padding实战指南
linux·服务器·开发语言·flutter·入门
浮江雾19 天前
Flutter第五节------Flutter开发环境配置与项目创建指南
开发语言·前端·git·学习·flutter·入门·函数
t_guest19 天前
LVGL学习(四)- Objects
入门·lvgl
慕容白 MU20 天前
开源一个基于LVGL的图层管理框架(LMF)
开源·lvgl·图层管理框架
t_guest21 天前
LVGL学习(二)- 定时器
lvgl
浮江雾23 天前
Flutter第四节------核心概念学习笔记:从基础语法到异步编程
linux·服务器·开发语言·笔记·flutter·入门·基础