美文网首页
2020-01-02

2020-01-02

作者: 链萌区块链 | 来源:发表于2020-01-02 14:21 被阅读0次

    MLogger 固件端日志模块

    功能

    通过串口将日志信息发送到PC,支持多级日志信息和格式化输出。

    如何使用

    • 引入MLogger工程

    通过源码或者编译成lib库的方式将MLogger模块引入到MCU工程中。

    • 包含头文件

    在需要进行日志打印的源文件引入MLogger.h头文件

    • 配置日志

    通过接口MLogger_SetupLogger(M_LOGGER_Entity logger, M_LOGGER_LEVEL level)配置日志模块,
    该接口只需要在main.c或程序最开始时调用一次即可。例如:

    MLogger_SetupLogger((M_LOGGER_Entity)TxToPHY_Calbk, LOG_DEBUG);
    

    其中,M_LOGGER_Entity是一个函数指针,其定义如下:

    typedef void (*M_LOGGER_Entity)(uint8_t * data  , uint32_t num);
    

    通常传入的是串口发送函数:TxToPHY_Calbk
    M_LOGGER_LEVEL定义了日志的输出等级,当为LOG_DEBUG时所有日志都将会输出,为LOG_DISABLE时,
    日志输出被禁止。其完整定义如下:

    typedef enum {
        LOG_DEBUG,
        LOG_INFO,
        LOG_WARNNING,
        LOG_ERROR,
        LOG_DISABLE
    }M_LOGGER_LEVEL;
    
    • 打印日志

    当配置完日志后,便可以在任意源文件中引入MLogger.h后进行日志打印。

    MLogger_LOGD("This is debug message");
    MLogger_LOGI("This is info message");
    MLogger_LOGW("This is warning message");
    MLogger_LOGW("This is error message");
    

    日志支持格式化输出,比如

    MLogger_LOGD("ASDO write integer object: %s-%d", self->pri.rxName, tmpI);

    如果rxName对应字符串为"UM",tmpI对应值为100,则输出字符串为:

    "[DEBG] ASDO write integer object: UM-100"

    关于格式化输出的支持,MLogger移植了基于MIT协议的第三方开源代码

    日志协议和上位机日志查看支持

    设备发送到PC上的日志消息都会包含数字4的头和字符';'的结尾符,就像MSDO协议一样。加入头尾标识是
    为了和MSDO、ASDO等其他数据流划分开。

    上位机版本大于等于0.31支持了日志信息的查看,打开Floating Tool里的设备日志窗口便可查看,如下
    显示了对于不同日志等级进行不同颜色的输出:


    设备日志

    相关文章

      网友评论

          本文标题:2020-01-02

          本文链接:https://www.haomeiwen.com/subject/waqooctx.html