阿波罗F429 开发板 图片显示实验中,图片是依次显示出来的,我没看到索引号自增啊,他是怎么实现依次显示PICTURE文件夹中下的图片的。
我现在只想实现指定PICTURE文件下的某一副图片。
图片显示实验中的代码如下:
主要是这两个函数不明白什么意思。
//记录索引
res=f_opendir(&picdir,"1:/PICTURE"); //打开目录
if(res==FR_OK)
{
curindex=0;//当前索引为0
while(1)//全部查询一遍
{
temp=picdir.dptr; //记录当前dptr偏移
res=f_readdir(&picdir,picfileinfo); //读取目录下的一个文件
if(res!=FR_OK||picfileinfo->fname[0]==0)break; //错误了/到末尾了,退出
res=f_typetell((u8*)picfileinfo->fname);
if((res&0XF0)==0X50)//取高四位,看看是不是图片文件
{
picoffsettbl[curindex]=temp;//记录索引
curindex++;
}
}
}
Show_Str(30,170,240,16,"开始显示...",16,0);
delay_ms(1500);
piclib_init(); //初始化画图
curindex=0; //从0开始显示
res=f_opendir(&picdir,(const TCHAR*)"1:/PICTURE"); //打开目录
while(res==FR_OK)//打开成功
{
dir_sdi(&picdir,picoffsettbl[curindex]); //改变当前目录索引
res=f_readdir(&picdir,picfileinfo); //读取目录下的一个文件
if(res!=FR_OK||picfileinfo->fname[0]==0)break; //错误了/到末尾了,退出
strcpy((char*)pname,"1:/PICTURE/"); //复制路径(目录)
strcat((char*)pname,(const char*)picfileinfo->fname);//将文件名接在后面
LCD_Clear(WHITE);
ai_load_picfile(pname,0,0,800,1280,1);//显示图片
Show_Str(2,2,lcddev.width,16,pname,16,1); //显示图片名字
t=0;
while(1)
{
key=KEY_Scan(0); //扫描按键
if(t>250)key=1; //模拟一次按下KEY0
if((t%20)==0)LED0=!LED0;//LED0闪烁,提示程序正在运行.
if(key==KEY2_PRES) //上一张
{
if(curindex)curindex--;
else curindex=totpicnum-1;
break;
}else if(key==KEY0_PRES)//下一张
{
curindex++;
if(curindex>=totpicnum)curindex=0;//到末尾的时候,自动从头开始
break;
}else if(key==WKUP_PRES)
{
pause=!pause;
LED1=!pause; //暂停的时候LED1亮.
}
if(pause==0)t++;
delay_ms(10);
}
res=0;
}
myfree(SRAMIN,picfileinfo); //释放内存
myfree(SRAMIN,pname); //释放内存
myfree(SRAMIN,picoffsettbl); //释放内存
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
比如:ai_load_picfile("0:/PICTURE/我的图片.jpg",0,0,800,1280,1);
一周热门 更多>