Page 1 of 1

关于在lvgl显示png为空白的问题

Posted: Tue Jul 09, 2024 7:50 am
by 483436378@qq.com
自己在psarm换了一块16m的flash,由于不会调用,只能下4m的程序,又不行加sd卡,16勉强够用。
现在的做法是,在分区表开一个区个spiffs或者LITTLEFS做文件系统保存图片,让lvgl8.3直接解码显示。现在的进度是系统搞好了,图片也上传好了,就是白屏,感觉是路径的问题,试过顺便打一个名称,lvgl日志都没有报错。搞了一周时间都没有查到什么原因,吐了,只能能问一下各位大佬了。

下面是代码分析
首先确定LITTLEFS是可以用的
fs:: File file = LITTLEFS.open("/aaa.txt", "r");
if(!file){
Serial.println("Failed to open file for reading");
return;
}
--------------------------------------------------------
const char *filepath = "/I.png";
if (file_exists(filepath)) {
log_d("文件 '%s' 存在252。\n", filepath);
} else {
log_d("文件 '%s' 不存在或无法访问456。\n", filepath);
}

上传代码,读取txt和文件路径都是有的,感觉LITTLEFS应该是挂载上了

然后是lv_conf.h的配置
#define LV_USE_FS_POSIX 0
#if LV_USE_FS_POSIX
#define LV_FS_POSIX_LETTER 'S' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_POSIX_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/
#define LV_FS_POSIX_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
------------------------------
#define LV_USE_FS_FATFS 1
#if LV_USE_FS_FATFS
#define LV_FS_FATFS_LETTER 'A' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_FATFS_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
---------------------------
#define LV_USE_PNG 1
这两个我都单独试过了,都不行

到图片显示这边
lv_obj_t *img_bg = lv_img_create(lv_scr_act());
lv_img_set_src(img_bg, "A:2:I0.png");
lv_obj_center(img_bg);
-----------------------------------------------------------------
ui->screen_4_img_2 = lv_img_create(ui->screen_4);
lv_obj_add_flag(ui->screen_4_img_2, LV_OBJ_FLAG_CLICKABLE);
lv_img_set_src(ui->screen_4_img_2, "A:2:I.png");
lv_img_set_pivot(ui->screen_4_img_2, 50,50);
lv_img_set_angle(ui->screen_4_img_2, 0);
lv_obj_set_pos(ui->screen_4_img_2, 0, 0);
lv_obj_set_size(ui->screen_4_img_2, 240, 240);
lv_obj_set_style_img_opa(ui->screen_4_img_2, 120, LV_PART_MAIN|LV_STATE_DEFAULT);

lv_img_set_src(img_bg, "A:1:I.png");
lv_img_set_src(img_bg, "A:I.png");
lv_img_set_src(img_bg, "A:/I.png");
等都试过了,就是白屏,离谱

有没有大佬帮帮忙看看,吐了他也不报错没有日志
或者16m的现在只能用4m,有没有改变映射地址的例程