新手上路
- 积分
- 36
- 金钱
- 36
- 注册时间
- 2016-1-23
- 在线时间
- 4 小时
|
1金钱
void xianshitupian()
{
u8 res;
DIR picdir; //图片目录
FILINFO picfileinfo;//文件信息
u8 *fn; //长文件名
u8 *pname; //带路径的文件名
u16 totpicnum; //图片文件总数
u16 curindex; //图片当前索引
u16 temp;
u16 *picindextbl; //图片索引表
totpicnum=pic_get_tnum("0:/PICTURE"); //得到总有效文件数
picfileinfo.lfsize=_MAX_LFN*2+1; //长文件名最大长度
picfileinfo.lfname=mymalloc(SRAMIN,picfileinfo.lfsize);//为长文件缓存区分配内存
pname=mymalloc(SRAMIN,picfileinfo.lfsize); //为带路径的文件名分配内存
picindextbl=mymalloc(SRAMIN,2*totpicnum); //申请2*totpicnum个字节的内存,用于存放图片索引
//记录索引
res=f_opendir(&picdir,"0:/PICTURE"); //打开目录
if(res==FR_OK)
{
curindex=0; //当前索引为0
while(1) //全部查询一遍
{
temp=picdir.index; //记录当前index
res=f_readdir(&picdir,&picfileinfo); //读取目录下的一个文件
if(res!=FR_OK||picfileinfo.fname[0]==0)break; //错误了/到末尾了,退出
fn=(u8*)(*picfileinfo.lfname?picfileinfo.lfname:picfileinfo.fname);
res=f_typetell(fn);
if((res&0XF0)==0X50) //取高四位,看看是不是图片文件
{
picindextbl[curindex]=temp; //记录索引
curindex++;
}
}
}
piclib_init(); //初始化画图
curindex=3; //从TPRI显示
res=f_opendir(&picdir,(const TCHAR*)"0:/PICTURE"); //打开目录
while(res==FR_OK)//打开成功
{
curindex=3;//如果想要显示一幅图片,就加上这一句,有多幅图片时这个值可以是0,1,2,3...
//这个是图片索引号
dir_sdi(&picdir,picindextbl[curindex]); //改变当前目录索引
res=f_readdir(&picdir,&picfileinfo); //读取目录下的一个文件
if(res!=FR_OK||picfileinfo.fname[0]==0)break; //错误了/到末尾了,退出
fn=(u8*)(*picfileinfo.lfname?picfileinfo.lfname:picfileinfo.fname);
strcpy((char*)pname,"0:/PICTURE/"); //复制路径(目录)
strcat((char*)pname,(const char*)fn); //将文件名接在后面
LCD_Clear(WHITE);
ai_load_picfile(pname,10,10,80,60,1);//显示图片
res=0;
break;
}
myfree(SRAMIN,picfileinfo.lfname); //释放内存
myfree(SRAMIN,pname); //释放内存
myfree(SRAMIN,picindextbl); //释放内存
}
|
|