?? sysfile.c
字號:
#include "sysfile.h"
#include "fat.h"
#include "jpegbmp.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供學習使用,未經作者許可,不得用于其它任何用途
//Mini STM32開發板
//系統文件查找 驅動代碼
//正點原子@ALIENTEK
//技術論壇:www.openedv.com
//修改日期:2010/6/18
//版本:V1.0
//版權所有,盜版必究。
//Copyright(C) 正點原子 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
u32 PICCLUSTER=0;//圖片文件夾地址
u32 sys_ico[9]; //系統圖標緩存區!不能篡改!
u32 file_ico[4]; //文件圖標緩存區 folder;mus;pic;book;
u32 *Pic_Addr=(u32*)iclip;//注意 0:表示預覽圖片的地址 1~n,表示1~n塊圖片的地址
//系統文件夾
const unsigned char *folder[]=
{
"SYSTEM",
"FONT",
"SYSICO",
"PICTURE",
"GAME",
"LEVEL1",
"LEVEL2",
"LEVEL3",
};
//系統文件名定義
const unsigned char *sysfile[]=
{
//系統字體圖標 0開始
"GBK16.FON",
"GBK12.FON",
"UNI2GBK.SYS",
//系統文件圖標 3開始
"FOLDER.BMP",
"MUS.BMP",
"PIC.BMP",
"BOOK.BMP",
//系統主界面圖標 7開始
"EBOOK.BMP",
"PICTURE.BMP",
"GAME.BMP",
"TOUCH.BMP",
"TIME.BMP",
"MOUSE.BMP",
"USB.BMP",
"REMOTE.BMP",
"WIRELESS.BMP",
};
//得到游戲圖片編號
void Get_Game_Pic_Str(u8 t,u8 *str)
{
*str++='I';
*str++='M';
*str++='G';
*str++=(t/10)%10+'0';
*str++=t%10+'0';
*str++='.';
*str++='B';
*str++='M';
*str++='P';
*str='\0';//加入結束符
}
//獲取系統文件的存儲地址
//次步出錯,則無法啟動!!!
//返回0,成功。返回其他,錯誤代碼
//sel:bit7:0,查找系統文件
//sel:bit7:1,查找游戲文件
//sel:bit 0~6 編號
u8 SysInfoGet(u8 sel)
{
u32 cluster=0;
u32 syscluster=0;
u8 t=0;
u8 size;
u8 imgx[9];
FileInfoStruct t_file;
//得到根目錄的簇號
if(FAT32_Enable)cluster=FirstDirClust;
else cluster=0;
t_file=F_Search(cluster,(unsigned char *)folder[0],T_FILE);//查找system文件夾
if(t_file.F_StartCluster==0)return 2;//系統文件夾丟失
syscluster=t_file.F_StartCluster;//保存系統文件夾所在簇號
if((sel&0x80)==0)//查找系統文件
{
t=sel&0x7F;//得到編號
if(t==0)//系統文件
{
t_file=F_Search(syscluster,(unsigned char *)folder[2],T_FILE);//在system文件夾下查找SYSICO文件夾
if(t_file.F_StartCluster==0)return 3;
cluster=t_file.F_StartCluster;//保存SYSICO文件夾簇號
for(t=0;t<9;t++)//查找系統圖標,九個
{
t_file=F_Search(cluster,(unsigned char *)sysfile[t+7],T_BMP);//在SYSICO文件夾下查找系統圖標
sys_ico[t]=t_file.F_StartCluster;
if(t_file.F_StartCluster==0)return 4;//失敗
}
for(t=3;t<7;t++)//查找文件圖標,4個
{
t_file=F_Search(cluster,(unsigned char *)sysfile[t],T_BMP);//在SYSICO文件夾下查找文件圖標
file_ico[t-3]=t_file.F_StartCluster;
if(file_ico[t-3]==0)return 5;//失敗
}
}else//圖片文件夾
{
t_file=F_Search(cluster,(unsigned char *)folder[3],T_FILE);//查找PICTURE文件夾
if(t_file.F_StartCluster==0)return 1;//圖片文件夾丟失
PICCLUSTER=t_file.F_StartCluster;//圖片文件夾所在簇號
}
}else if(sel&0x80)//查找游戲
{
size=sel&0x7F;//得到t:3,3*3;4,4*4;5,5*5
t_file=F_Search(syscluster,(unsigned char *)folder[4],T_FILE);//在system文件夾下查找game文件夾
if(t_file.F_StartCluster==0)return 6;
t_file=F_Search(t_file.F_StartCluster,(unsigned char *)folder[2+size],T_FILE);//在game文件夾下查找LEVEL(sizex-2)文件夾
if(t_file.F_StartCluster==0)return 7;//levelx 文件夾丟失
cluster=t_file.F_StartCluster;
size*=size;//取平方
for(t=0;t<size+1;t++) //X*X圖片地址獲取
{
Get_Game_Pic_Str(t,imgx);//得到圖片編號
t_file=F_Search(cluster,imgx,T_BMP);//在LEVEL1文件夾下查找BMP圖片
Pic_Addr[t]=t_file.F_StartCluster;
if(Pic_Addr[t]==0)return 8;//系統文件夾丟失
}
//printf("level ok\n");
}
return 0;//成功
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -