fatfs f_readdir 在使用长文件名时的问题
结论先行
FRESULT f_readdir (DIR* dp, FILINFO* fno)
在使用了长文件名后,在操作f_readdir前,需要初始化fno.lfsize
FILINFO info;
TCHAR name[64];
int res;
DIR file_dir;
info.lfname = name;
info.lfsize = 64; //init lfsize
f_opendir(&file_dir, PICTURE_FILE_DIR);
f_readdir(&file_dir, &info);
分析过程
在使能了长文件名后,通过f_readdir遍历目录下的文件,发现获取到的lfname为空,代码如下
++log++
[DBG]-[NORMAL]\USER\main.c\list_for_each_pic\read dir, res=0, fname=PIC201~1.BMP, lfname=
[DBG]-[NORMAL]\USER\main.c\list_for_each_pic\read dir, res=0, fname=PIC201~2.BMP, lfname=
[DBG]-[NORMAL]\USER\main.c\list_for_each_pic\read dir, res=0, fname=PIC201~3.BMP, lfname=
++code++
static void list_for_each_pic(char *debug)
{
FILINFO info;
TCHAR name[64];
int res;
DIR file_dir;
info.lfname = name;
DBG_TO_SERIAL(DBG_NORMAL, "%s", debug);
res = f_opendir(&file_dir, PICTURE_FILE_DIR);
if (res