我是想清空SD卡:首先要枚舉所有的文件及文件夾,枚舉到就打開并刪除。但是我用電腦建立的空文件夾是枚舉不到的,也不能刪除。怎么回事? 求指導(dǎo)!
我用的是CH376T.代碼如下: u8 STAT=0; UINT8 FILE_PATH_INFO[256]={0}; P_FAT_DIR_INFO pDir; STAT = CH376FileOpenPath((u8 *)"/*\0"); /* 枚舉多級目錄下的文件或者目錄,輸入緩沖區(qū)必須在RAM中 */ while (STAT== USB_INT_DISK_READ) /* 枚舉到匹配的文件 */ { IWDG_ReloadCounter(); CH376ReadBlock((u8 *)FILE_PATH_INFO); /* 讀取枚舉到的文件的FAT_DIR_INFO結(jié)構(gòu),返回長度總是sizeof( FAT_DIR_INFO ) */ pDir = (P_FAT_DIR_INFO)FILE_PATH_INFO; /* 當(dāng)前文件目錄信息 */ if (pDir -> DIR_Name[0] != '.') { /* 不是本級或者上級目錄名則繼續(xù),否則必須丟棄不處理 */ if ( pDir -> DIR_Name[0] == 0x05 ) { pDir -> DIR_Name[0] = 0xE5; /* 特殊字符替換 */ } /*檢查是否是文件夾*/ //if((pDir -> DIR_Name[0]=='0')&(pDir -> DIR_Name[1]=='1')) // { CH376FileOpen(pDir -> DIR_Name); CH376FileErase(pDir -> DIR_Name );//刪除子目錄 // } // pDir -> DIR_Attr = 0; /* 強(qiáng)制文件名字符串結(jié)束以便打印輸出 */ } STAT = CH376FileOpenPath((u8 *)"/*\0"); xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); /* 繼續(xù)枚舉文件和目錄 */ xEndCH376Cmd( ); STAT = Wait376Interrupt( ); }
我們的例子程序,是能夠枚舉到根目錄下所有文件和文件夾,包括空文件夾。 你把: STAT = CH376FileOpenPath((u8 *)"/*\0"); xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); /* 繼續(xù)枚舉文件和目錄 */ 中STAT = CH376FileOpenPath((u8 *)"/*\0"); 去掉 我們的例子中是沒有這一步的。
去掉后怎么就只能枚舉到第一個文件夾呢?再以后的操作返回就是0x42.不知道為什么,所以我才加上了STAT = CH376FileOpenPath((u8 *)"/*\0");
你的流程有點(diǎn)問題,我們不支持枚舉一個刪除一個,需要你全部枚舉出來然后根據(jù)枚舉出來的文件刪除。