枚舉文件函數(shù)。
uint16 UDISK_ReadXl_Files(void) //列舉根目錄下所有XL文件,返回文件數(shù)目 { uint8 buf[256],s; uint8 fname[1]; uint16 i,j; P_FAT_DIR_INFO pDir; xldir_filedir_num=0; file_sel_index=0; file_scr_index=0;
fname[0]='*'; i=0;j=0;
s=CH376FileOpen(fname); //打開文件 DELAY_Xus(100*SPI_DELAY_TIME); while(s==USB_INT_DISK_READ) { DELAY_Xus(100*SPI_DELAY_TIME); CH376ReadBlock(buf); //DELAY_Xus(SPI_DELAY_TIME); pDir = (P_FAT_DIR_INFO)buf;
if(((pDir ->DIR_Attr)&(1<<5))== ATTR_ARCHIVE) { //不是本級或者上級目錄名則繼續(xù),否則必須丟棄不處理 if(((pDir -> DIR_Name[8])=='X')&&((pDir -> DIR_Name[9])=='L')) { for(i=0;i<11;i++) { cur_dir_fles[xldir_filedir_num][i]=pDir->DIR_Name[i]; } xldir_filedir_num++; } } xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); DELAY_Xus(10*SPI_DELAY_TIME); xEndCH376Cmd( ); DELAY_Xus(10*SPI_DELAY_TIME); s=Wait376Interrupt( ); } return xldir_filedir_num; }
實驗過,當(dāng)在根目錄下(已經(jīng)打開了根目錄),執(zhí)行這個函數(shù),枚舉成功,可以得到跟目下.xl文件列表,然后先新建一個文件,寫入4個字節(jié),再關(guān)閉該文件,然后再執(zhí)行這個函數(shù),枚舉竟然不成功,調(diào)試發(fā)現(xiàn),函數(shù)里的: if(((pDir ->DIR_Attr)&(1<<5))== ATTR_ARCHIVE) 這里不成立,即判斷是文件還是目錄,它的第5位不為1,所以結(jié)果不對,枚舉不成功,,,,,,
問大家是什么原因。。。。