*/ DEVICE_CMD Query_File(REBREQ *file) /* ** Obtain information about a file. Return TRUE on success. ** On error, return FALSE and set file->error code. ** ** Note: time is in local format and must be converted ** ***********************************************************************/ { return Get_File_Info(file); }
//浏览文件夹下面的文件 //file_type:要浏览的文件类型 //返回要打开的目标文件编号 1~n(在总目标文件里面的) //不包括文件夹!!! //如果返回0则代表退出浏览 u16 File_Browse(u32 file_type) { FileInfoStruct *FileInfo; u16 folder_cnt;//文件夹的个数 u16 des_cnt; //目标文件的个数 u8 fcnt; //显示的文件数目 u16 temp; u16 total_file;//总文件数目 u16 pos_cnt;//当前文件号 1~folder_cnt+des_cnt u8 key; Reset: POINT_COLOR=BLUE; //蓝色笔头使用 folder_cnt=0;des_cnt=0;fcnt=0;key=0;pos_cnt=0; Get_File_Info(Cur_Dir_Cluster,FileInfo,T_FILE,&folder_cnt);//得到当前目录下文件夹的个数 Get_File_Info(Cur_Dir_Cluster,FileInfo,file_type,&des_cnt);//得到当前目录下目标文件的个数 total_file=des_cnt+folder_cnt;//总的文件数目=文件夹数目+目标文件数目 while(1) { if(pos_cnt<total_file)//文件标尺,未到达文件末尾 { FileInfo=&F_Info[fcnt]; if(pos_cnt<folder_cnt)//找文件夹 { temp=pos_cnt+1; Get_File_Info(Cur_Dir_Cluster,FileInfo,T_FILE,&temp); }else //找目标文件 { temp=pos_cnt-folder_cnt+1; Get_File_Info(Cur_Dir_Cluster,FileInfo,file_type,&temp); } fcnt++; //已存的文件数目增加 pos_cnt++;//文件位置标志增加 } if(fcnt==8||pos_cnt==total_file)//找满八个了,或者文件夹已经找完了 { key=Show_File(fcnt,1);//显示此次得到的文件 switch(key) { case 1://要打开目标文件 case 2: case 3: case 4: case 5: case 6: case 7: case 8: key-=1; if(key<fcnt)//按键在有效范围内 { if(F_Info[key].F_Type==T_FILE)//要打开的是个文件夹 { Cur_Dir_Cluster=F_Info[key].F_StartCluster;//打开这个文件夹 goto Reset; }else //要打开的是目标文件 { //LCD_Clear(WHITE);//清屏 return pos_cnt+key-folder_cnt-fcnt+1;//返回目标文件编号 } } break; case 9: //选择了返回按钮.退出到上一层目录 //在主目录浏览里面,按下返回按钮,则退出浏览模式 if((FAT32_Enable&&Cur_Dir_Cluster==FirstDirClust)||Cur_Dir_Cluster==0)return 0;//退出浏览模式 Cur_Dir_Cluster=Fat_Dir_Cluster;//退到父目录 goto Reset; case MOVE_UP: //向上翻页 case MOVE_LEFT: if(pos_cnt>8)pos_cnt-=(8+fcnt);//回到上一页 else pos_cnt=0;//从头开始了 break; case MOVE_DOWN://向下翻页 case MOVE_RIGHT: if(pos_cnt==total_file)pos_cnt-=fcnt;//重新找 break; } fcnt=0;//清除显示文件计数器 } } }