用FATFS读取文件目录的时候,发现一些莫名的问题:
我想读取0:/Pic下所有文件,用串口打印出来:
用的是 2-M3-FATFS代码:
结果是这样:
这是一个MicroSD卡文件系统实验(FATFS R0.09)
disk_initialize starting......
长文件名:
短文件名 :.
长文件名:
短文件名 :..
长文件名:新建文件夹
短文件名 :新建文~1
长文件名:新建文件夹 (2)
短文件名 :新建文~2
长文件名:
短文件名 :testtt.bmp
长文件名:
短文件名 :tesddd.bmp
长文件名:BacPic5.bmp
短文件名 :BACPIC5.BMP
长文件名:BacPic4.bmp
短文件名 :BACPIC4.BMP
长文件名:图片BacPic2.bmp
短文件名 :图片BA~1.BMP
长文件名:
短文件名 :
有的有短文件名没有长文件名。。
有的问题件长文件名和短文件名都有,但是短文件名小写变成了大写
int main(void)
{
char lfn[70]; /*为支持长文件的数组,[]最大支持255*/
// char Path[100];
/* USART1 config */
USART1_Config();
/* Interrupt Config */
NVIC_Configuration();
printf("
这是一个MicroSD卡文件系统实验(FATFS R0.09)
");
printf ( "
disk_initialize starting......
" );
f_mount(0,&fs);
finfo.lfname = lfn; //为长文件名分配空间
finfo.lfsize = sizeof(lfn); //空间大小
if(f_opendir(&dirs,"0:/Pic")==FR_OK);
{
// res=f_chdir("0:/pic");
while (f_readdir(&dirs, &finfo) == FR_OK)
{
//if(finfo.lfname[0] == NULL && finfo.fname !=NULL) // 当长文件名称为空,短文件名非空时转换
//finfo.lfname =finfo.fname;
printf( "
长文件名:%s
", finfo.lfname );
printf( "
短文件名 :%s
", finfo.fname );
if(strstr( finfo.fname, ".bmp" )!=NULL)
{
// sprintf(Path,"%s/%s","0:/Pic",finfo.lfname);
//DisplayString(0, 0, finfo.lfname);
//printf( "
路径 :%s
", Path);
// printf( "
长文件名:%s
", finfo.lfname );
// printf( "
短文件名 :%s
", finfo.fname );
}
}
}
while (1)
{}
}
折腾了几天了,没找到原因,求教。。谢谢。。 |