OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4406|回复: 2

请教关于FATfs的读取问题

[复制链接]

24

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2013-3-11
在线时间
22 小时
发表于 2013-7-4 19:10:59 | 显示全部楼层 |阅读模式
我现在想读取SD卡的根目录下“相册”文件夹下的所有bmp格式的文件名,程序如下:
void  get()
{
                FATFS     fs;  
FIL       fsrc;
FILINFO   finfo;  /  
DIR       dirs; 
char      lfn[70];  
char      *result;
char      pathbmp[100]={"相册"}; //在根目录下有一个 相册 文件夹 
char      j;

finfo.lfname=lfn;
finfo.lfsize=sizeof(lfn);
f_mount(0,&fs);  
if(f_opendir(&dirs,pathbmp)==FR_OK)  //打开指定目录
{
while(f_readdir(&dirs,&finfo)==FR_OK)  //循环调用,依次读取文件名
{
if(finfo.fattrib&AM_ARC)  //判断是不是存档型文档
{
if(finfo.lfname[0]==NULL&&finfo.fname[0]!=NULL) 
finfo.lfname=finfo.fname;
if(!finfo.lfname[0])
{
bmpnum=bmpjj;
bmpjj=0;
j=0;
break;  //文件名为空即到达了目录尾部
}
//判断是否为bmp
result=strstr(finfo.lfname,".bmp");
if(result!=NULL)
{  
for(j=0;finfo.lfname[j]!=NULL;j++)  
{
AllBmpName[bmpjj][j]=finfo.lfname[j]; 
}
bmpjj++;
}
}
}
}
...........

}

之前用同样的方法成功获得了“音乐”文件夹下的mp3文件名,支持长文件名,这里的情况是只能读出一个文件名而且是短文件名,接着就break了,跟踪发现是在
f_readdir(&dirs,&finfo)里面的dir_read函数执行后lfn_idx变成了0xffff,之后也是因为lfn_idx为0xffff,导致虽然读出了其他的文件名,但是第一个字符给了0x00 所以才break,
请教下 dir_read 里面lfn_idx为什么变成0xffff?之前在读别的文件夹的时候没有问题.......谢谢了 







正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

24

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2013-3-11
在线时间
22 小时
 楼主| 发表于 2013-7-4 21:24:00 | 显示全部楼层
回复【楼主位】lhwaizhu:
---------------------------------
现在的情况是能读取所有的长文件名,但是只能读出一个短文件命名...其他的短文件名读不出来.....用的是ff9b....请教了..
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-4 21:47:32 | 显示全部楼层
没遇到过,我用的0.09a
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 11:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表