【第三期】水贴! fats文件系统读取文件名!

[复制链接]
3185|4
 楼主| kyzb001 发表于 2011-12-13 13:18 | 显示全部楼层 |阅读模式
本帖最后由 kyzb001 于 2011-12-14 12:19 编辑

  1. /*******************************************************************************
  2. * Function Name  : scan_current_folder
  3. * Description    : 列举文件夹
  4. * Input          : None.
  5. * Output         : None
  6. * Return         : None
  7. *******************************************************************************/
  8. void scan_current_folder()
  9. {
  10.     FILINFO finfo;
  11.     DIR dirs;
  12. FRESULT res;     // FatFs function common result code
  13. int i;
  14.         char path[20];
  15.         int files_num=0;
  16. disk_initialize(0);//初始化驱动器     
  17.         f_mount(0, &fs);//卸载或挂在一个逻辑驱动器
  18.         USART_Scanf_Name(path);
  19.          
  20.         res=f_opendir(&dirs, path);
  21.     if ( res== FR_OK)  
  22. {
  23. printf("\r\n\r\n%20s\r\n","*********************--文件夹列表--*********************");
  24.         while ((f_readdir(&dirs, &finfo) == FR_OK) && finfo.fname[0])  
  25. {
  26. i = strlen(finfo.fname);
  27.             if (finfo.fattrib & AM_DIR)//如果是文件夹  
  28. {
  29.     files_num++;
  30. printf("\r\n%s/%s", path, &finfo.fname[0]);
  31. switch(i)//作用:输出文件名左对齐
  32. {
  33.         case 1:printf(" ");
  34. case 2:printf(" ");
  35. case 3:printf(" ");
  36. case 4:printf(" ");
  37. case 5:printf(" ");
  38. case 6:printf(" ");
  39. case 7:printf(" ");
  40. case 8:printf("%15s"," ");
  41. }

  42.                          }  
  43. else  
  44. {     
  45.                         }
  46.                    }
  47. if( files_num==0 )//无文件夹
  48. {
  49.     printf("\r\n%33s\r\n","<无文件夹>");      
  50. }
  51.     }
  52.      
  53.     // Unregister a work area before discard it
  54.     f_mount(0, NULL);
  55. }
注意修改ccsbcs的 宏
 楼主| kyzb001 发表于 2011-12-14 12:19 | 显示全部楼层
  1. /*******************************************************************************
  2. * Function Name  : scan_current_folder
  3. * Description    : 列举文件夹
  4. * Input          : None.
  5. * Output         : None
  6. * Return         : None
  7. *******************************************************************************/
  8. void scan_current_folder(char *dirname)
  9. {
  10.         FATFS FatFs;                /* File system object for log ical drive */
  11.     FILINFO finfo;
  12.     DIR dirs;
  13.         FRESULT res;     // FatFs function common result code

  14.     char path[20];
  15.         int i=0,j=0;
  16.     int Directory_num=0,Archive_num=0;


  17.         disk_initialize(0);//初始化驱动器     
  18.     f_mount(0, &FatFs);//卸载或挂在一个逻辑驱动器
  19.    
  20.          
  21.     res=f_opendir(&dirs, dirname);
  22.     if ( res== FR_OK)  
  23.         {
  24.                 printf("\r\n\r\n%20s\r\n","*********************--File--*********************");
  25.         while ((f_readdir(&dirs, &finfo) == FR_OK) && finfo.fname[0])  
  26.                 {

  27.             if (finfo.fattrib & AM_DIR)//如果是文件  
  28.                         {
  29.                                 printf("\r\n%s/%s", path, &finfo.fname[0]);        
  30.                                 strcpy(&ObjFile[Directory_num++].filename[0],(uint8_t *)&finfo.fname[0]);
  31.                                
  32.             }
  33.                         if (finfo.fattrib & AM_ARC)//如果是文件  
  34.                         {
  35.                             printf("\r\n%s/%s", path, &finfo.fname[0]);
  36.                                 strcpy(&ObjFile[Archive_num++].wordname[0],(uint8_t *)&finfo.fname[0]);
  37.             }  
  38.                         else  
  39.                         {     
  40.             }
  41.         }
  42.                 if( Directory_num|Archive_num==0 )//无文件夹
  43.                 {
  44.                     printf("\r\n%33s\r\n","<无文件夹>");      
  45.                 }
  46.                 printf("Print screen.%d,%d\n",i,j);
  47. //                for(j=0;j<Directory_num;j++)
  48. //                {
  49. //                        DisPlay_12X12_StrDis(&ObjFile[j].filename[0],0,j*12);
  50. //                }
  51.                 for(j=0;j<Archive_num;j++)
  52.                 {
  53.                         DisPlay_12X12_StrDis(&ObjFile[j].wordname[0],0,(j)*12);
  54.                 }
  55.     }
  56.      
  57.     // Unregister a work area before discard it
  58.     f_mount(0, NULL);
  59. }
 楼主| kyzb001 发表于 2011-12-14 12:20 | 显示全部楼层
  1. typedef struct
  2. {
  3.         uint8_t filename[26];
  4.         uint8_t wordname[26];
  5.         uint8_t fileNumber;         
  6. }file;
hotpower 发表于 2011-12-28 14:22 | 显示全部楼层
顶起来,水太深~~
tony0708 发表于 2011-12-30 23:08 | 显示全部楼层
3Q了哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:Is this my life

15

主题

624

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部