lv文件系统依然有问题 貌似是seek问题
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#include "lv_log_to_esp.h"
|
||||
|
||||
static const char *TAG = "LVGL";
|
||||
|
||||
static void my_print(lv_log_level_t level, const char *buf)
|
||||
{
|
||||
|
||||
// 1. 获取原始字符串长度
|
||||
size_t buf_len = strlen(buf);
|
||||
|
||||
// 2. 动态分配内存(比原始字符串多分配1个字节,确保安全)
|
||||
char *my_buf = (char *)malloc(buf_len + 1);
|
||||
if (my_buf == NULL) {
|
||||
// 内存分配失败的处理
|
||||
// 可以尝试使用备用方案,比如输出到备用缓冲区或直接返回
|
||||
return;
|
||||
}
|
||||
|
||||
// 3. 复制字符串
|
||||
strncpy(my_buf, buf, buf_len);
|
||||
my_buf[buf_len] = '\0'; // 确保字符串终止
|
||||
|
||||
// 4. 移除末尾的换行符
|
||||
if (buf_len > 0 && my_buf[buf_len - 1] == '\n') {
|
||||
my_buf[buf_len - 1] = '\0';
|
||||
buf_len--; // 更新长度
|
||||
|
||||
// 如果倒数第二个字符是 '\r'(Windows风格换行),也移除
|
||||
if (buf_len > 0 && my_buf[buf_len - 1] == '\r') {
|
||||
my_buf[buf_len - 1] = '\0';
|
||||
buf_len--;
|
||||
}
|
||||
}
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case LV_LOG_LEVEL_WARN:
|
||||
/* code */
|
||||
ESP_LOGW(TAG, "%s", my_buf);
|
||||
break;
|
||||
case LV_LOG_LEVEL_ERROR:
|
||||
/* code */
|
||||
ESP_LOGE(TAG, "%s", my_buf);
|
||||
break;
|
||||
|
||||
default:
|
||||
ESP_LOGI(TAG, "%s", my_buf);
|
||||
break;
|
||||
}
|
||||
|
||||
// 6. 释放动态分配的内存
|
||||
free(my_buf);
|
||||
}
|
||||
|
||||
|
||||
void lv_log_to_esp_init()
|
||||
{
|
||||
|
||||
lv_log_register_print_cb(my_print);
|
||||
}
|
||||
Reference in New Issue
Block a user