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的日志系统打印的很详细,大家在后续的使用中也会频繁使用到日志系统的。

相关推荐
浮江雾2 天前
Flutter第四节------核心概念学习笔记:从基础语法到异步编程
linux·服务器·开发语言·笔记·flutter·入门·基础
浮江雾3 天前
Flutter第三节----Dart中的数据类型
android·开发语言·学习·flutter·入门·函数
浮江雾5 天前
Flutter第二节----Dart中的常量与变量
开发语言·前端·javascript·flutter·入门
雨翼轻尘1 个月前
03_HTML进阶标签与CSS入门
前端·css·html·入门·进阶标签
zhbi981 个月前
LVGL8.3标签Label高级应用
ui·lvgl
在坚持一下我可没意见2 个月前
Python 修仙修炼录 08:字典秘境,参悟键值玄机
开发语言·笔记·python·入门·字典
在坚持一下我可没意见2 个月前
Python 修仙修炼录 05:循环神通,省去无用苦修
开发语言·python·面试·入门·循环·复习
The_superstar62 个月前
衡山派lvgl小练
串口·lvgl·衡山派·ds133ebs
The_superstar62 个月前
衡山派LVGL注意点
单片机·lvgl·衡山派·俊杰