打印
[应用相关]

fatfs奇怪现象

[复制链接]
1987|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 林Ideal 于 2012-5-16 16:48 编辑

列举文件夹中文件逐个显示可以。先把所有文件名存入数组后再显示不行。什么问题啊!抓狂了!
代码如下:

typedef struct {
    char *file_name[255];  
//存放文件名用
    u8 file_num;               
//文件个数
}FILE_INFO;

FILE_INFO file_info;

//列举文件
FRESULT scan_files (char* path)
{
    FRESULT res;
    FILINFO fno;
    DIR dir;
    char *fn;

u16 len = 0;

#if _USE_LFN
    static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1];
    fno.lfname = lfn;
    fno.lfsize = sizeof(lfn);
#endif
     res = f_mount(0, &fs);
  //加载文件系统
     res = f_opendir(&dir, path);

     if(res == FR_OK)
     {

              file_info.file_num = 0;

              for(;;)
              {

                       res = f_readdir(&dir, &fno);
                       if(res != FR_OK || fno.fname[0] == 0) break;
                       if(fno.fname[0] == '.') continue;
#if _USE_LFN
                       fn = *fno.lfname ? fno.lfname : fno.fname;
#else
                       fn = fno.fname;
#endif
                       if(fno.fattrib != AM_DIR)
                       {

                               for(len = 0; fn[len] != 0; len++);

                               if((fn[len - 4] == '.') && (fn[len - 3] == 's') &&   
//是.s19文件
                                    (fn[len - 2] == '1') && (fn[len - 1] == '9'))

                               {

                                       file_info.file_name[file_info.file_num] = fn;

/*********************这样查找到一个显示一个就可以列出文件列表*************/

                                       GUI_DispStringAt(file_info.file_name[file_info.file_num], 65, file_info.file_num * 20 + 20);

                                       file_info.file_num++;


                                 }

                         }
                  }
           }
           f_mount(0, NULL);   
//加载文件系统
/*************这样存起来外部显示就什么都没有显示******************/
//        GUI_SetFont(&GUI_FontHZ16);
//        GUI_DispStringAt(file_info.file_name[0], 20 + 40 + 5, 40);
//        GUI_DispStringAt(file_info.file_name[1], 20 + 40 + 5, 60);
//        GUI_DispStringAt(file_info.file_name[2], 20 + 40 + 5, 80);
//        GUI_DispStringAt(file_info.file_name[3], 20 + 40 + 5, 100);
//        GUI_DispStringAt(file_info.file_name[4], 20 + 40 + 5, 120);
          while(1);

          return res;
}
}
沙发
林Ideal|  楼主 | 2012-5-16 16:52 | 只看该作者
字体不好排

}4BCVLEK0K)@0{@U4Y8BFBE.jpg (53.13 KB )

}4BCVLEK0K)@0{@U4Y8BFBE.jpg

O_%{UU$JCOD%_9SOVO1X)3R.jpg (72.36 KB )

O_%{UU$JCOD%_9SOVO1X)3R.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:解决了一个问题,但产生了另一个更严重的问题,这个问题还是不解决的好。

0

主题

64

帖子

1

粉丝