2020-01-02

2020-01-02  本文已影响0人  链萌区块链

MLogger 固件端日志模块

功能

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

如何使用

通过源码或者编译成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里的设备日志窗口便可查看,如下
显示了对于不同日志等级进行不同颜色的输出:


设备日志
上一篇下一篇

猜你喜欢

热点阅读