Description
Sorry for my bad english…
i’m tring to use the file system abstraction, because i want load some png’s from an sd card
for the imagebutton’s of my project, but i didn’t found a working example
this is my last try but i have compiling errors, where is the error? what i’m doing wrong?
What MCU/Processor/Board and compiler are you using?
i’m using a display with esp32 model: 3.2inch_ESP32-2432S032
and i’m working with platformio on visual studio code
What LVGL version are you using?
8.3
What do you want to achieve?
i want use the file system lvgl abstraction
What have you tried so far?
i tried to follow all guidelines but i dont’ have found a working example
i’ve added the ff15 library in my .pio/libdeps/esp32dev folder
Code to reproduce
/*You code here*/
#include <Arduino.h>
#include <SD.h>
#include "SPI.h"
#include <extra/libs/fsdrv/lv_fsdrv.h>
#define SD_CS 5
#define SPI_MOSI 23
#define SPI_MISO 19
#define SPI_SCK 18
#define DRIVE_LETTER 'S'
File root;
void printDirectory(File dir, int numTabs);
SPIClass spi = SPIClass(VSPI);
/*Initialize your Storage device and File system.*/
void Helix_Memory_init()
{
pinMode(SD_CS, OUTPUT);
digitalWrite(SD_CS, HIGH);
SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
SPI.setFrequency(1000000);
if (!SD.begin())
{
Serial.println("Card Mount Failed");
return;
}
uint8_t cardType = SD.cardType();
if (cardType == CARD_NONE)
{
Serial.println("No SD card attached");
return;
}
Serial.print("SD Card Type: ");
if (cardType == CARD_MMC)
{
Serial.println("MMC");
}
else if (cardType == CARD_SD)
{
Serial.println("SDSC");
}
else if (cardType == CARD_SDHC)
{
Serial.println("SDHC");
}
else
{
Serial.println("UNKNOWN");
}
uint64_t cardSize = SD.cardSize() / (1024 * 1024);
Serial.printf("SD Card Size: %lluMB\n", cardSize);
root = SD.open("/");
printDirectory(root, 0);
Serial.println("done!");
// LV_FileSystem_Initialize();
lv_fs_fatfs_init();
// lv_obj_t * img_bin = lv_img_create(lv_scr_act());
//lv_img_set_src(img_bin, "S:/Baboon40.bin");
//lv_obj_align(img_bin, LV_ALIGN_CENTER, 0, 0);
//lv_obj_set_size(img_bin, 320,480);
Serial.println("Setup done");
}
void Helix_Memory_loop()
{
}
void printDirectory(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile();
if (! entry) {
// no more files
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
printDirectory(entry, numTabs + 1);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}
Errors
.pio/libdeps/esp32dev/lvgl/src/extra/libs/fsdrv/lv_fs_fatfs.c: In function ‘fs_dir_open’:
.pio/libdeps/esp32dev/lvgl/src/extra/libs/fsdrv/lv_fs_fatfs.c:228:5: error: unknown type name ‘DIR’; did you mean ‘DDR’?
DIR * d = lv_mem_alloc(sizeof(DIR));
^~~
DDR
.pio/libdeps/esp32dev/lvgl/src/extra/libs/fsdrv/lv_fs_fatfs.c:228:35: error: ‘DIR’ undeclared (first use in this function); did you mean ‘DDR’?
DIR * d = lv_mem_alloc(sizeof(DIR));
^~~
DDR
.pio/libdeps/esp32dev/lvgl/src/extra/libs/fsdrv/lv_fs_fatfs.c:228:35: note: each undeclared identifier is reported only once for each function it appears in
.pio/libdeps/esp32dev/lvgl/src/extra/libs/fsdrv/lv_fs_fatfs.c:231:29: warning: passing argument 1 of ‘f_opendir’ from incompatible pointer type [-Wincompatible-pointer-types]
FRESULT res = f_opendir(d, path);
^
In file included from .pio/libdeps/esp32dev/lvgl/src/extra/libs/fsdrv/lv_fs_fatfs.c:12:
C:/Users/stefa/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/src/ff.h:290:28: note: expected 'FF_DIR ’ {aka 'struct '} but argument is of type 'int ’
FRESULT f_opendir (FF_DIR dp, const TCHAR path); / Open a directory */
~~~~~~~~^~
*** [.pio\build\esp32dev\libc58\lvgl\extra\libs\fsdrv\lv_fs_fatfs.c.o] Error 1
========================================================================= [FAILED] Took 8.19 seconds =========================================================================
- The terminal process “C:\Users\stefa.platformio\penv\Scripts\platformio.exe ‘run’” terminated with exit code: 1.
- Terminal will be reused by tasks, press any key to close it.