读取SD卡下所有文件目录的名字 | 您所在的位置:网站首页 › sd卡文件名称及含义 › 读取SD卡下所有文件目录的名字 |
1.前言
读取SD卡根目录下文件夹的名字用到FATFS相关的API函数有如下: 1) f_mount--挂载SD 2) f_opendir--打开目录 3) f_readdir--读取目录 4 ) f_closedir--关闭目录 2.测试内容在SD卡下我们先建立3个文件夹,名字分别命名为beijing chengdu shanghai。通过单片机读出这三个名字发给电脑,在串口显示助手查看读到的文件名,验证读取到的正确性。 图一 3.测试程序 /* char* path: 要扫描的文件路径 char *buff: 存放读取到的文件夹名字 */ u16 scan_files (char* path,char *buff) { static FILINFO fno; //文件信息结构体 fr = f_opendir(&dir, path); // 打开文件目录 if (fr == FR_OK) {//如果打开成功循环读出文件名字到buff中 for (;;) { //循环读出文件名字,循环次数等于SD卡根目录下的文件数目 fr = f_readdir(&dir, &fno); //读取文件名 if (fr != FR_OK || fno.fname[0] == 0) break; //读取错误或者读完所有文件结束就跳出循环 if (fno.fattrib & AM_DIR)//读取的是文件夹名字 { strcpy(buff, fno.fname); //复制文件名字到缓存并打印文件名 printf("%s\r\n",buff); } } f_closedir(&dir);//关闭文件目录 } return fr;// 返回 } int main (void) { FRESULT fr; //读文件返回值 FATFS fs; //记录文件盘符结构体 DIR dir; // char dirbuff[255]; //存储读到的文件名 fr=f_mount(&fs,"0:",1);//挂载SD卡 挂载成功返回FR_OK,错误返回错误值 if(fr==FR_OK) //如果挂载成功扫描文件路径 { scan_files("",dirbuff); //""是sd卡根目录路径 } else { 重新挂载 } while(1) } 3.调试说明:SD卡根目录下固定有个文件夹名字是 System Volume Information。你在SD卡下建立三个文件夹的话,实际读出4个文件夹,其中第一个读出的文件夹的名字就是System Volume Information。 4.测试结果:1)在电脑查看SD卡根目录文件夹。 在网上下载Winhex软件,以管理员身份运行,打开SD卡盘符,可以看到根目录下的文件夹如下所示: 图二
2) 程序调试窗口输出的结果如下所示。 第一个输出的文件如下所示: 图三 自己新建的三个文件如下图: 图四 图五 图六 3) 电脑串口助手输出的结果如下所示。 图七 |
CopyRight 2018-2019 实验室设备网 版权所有 |