原子哥您好,我今天读sd卡中的图片文件并将图片文件名的指针赋给指针数组中,可是当我在读取的循环中进行显示的时候没问题,
可是在另外一个函数中调用就不能显示了,这是什么原因?
读取的函数如下:
u8 *f_pic[50];
u16 Get_PicNum(u8 *path)
{
DIR picdir;
FILINFO picfileinfo;
u8 res;
u8 *fn=0;
u16 rval;
u8 i;
res=f_opendir(&picdir,(const TCHAR*)path);
picfileinfo.lfsize=_MAX_LFN*2+1;
picfileinfo.lfname=mymalloc(SRAMIN,picfileinfo.lfsize);
if((picfileinfo.lfname!=NULL)&&(res==FR_OK))
{
while(1)
{
res=f_readdir(&picdir,&picfileinfo);
if((res!=NULL)||picfileinfo.fname[0]==0)break;
fn=(u8*)(*picfileinfo.lfname?picfileinfo.lfname:picfileinfo.fname);
res=f_typetell(fn);
if((res&0xf0)==0x50)
{
f_pic[rval++]=fn;
//Show_Str(0,(rval-1)*16,220,16,f_pic[rval-1],16,0);
}
}
}
return rval;
}
如果我将红色部分加上之后能正常显示文件名,但是将红色部分移植到其他函数中就没法显示了,如下:
void Picture_Play(void)
{
u8 rval;
u8 i;
LCD_Clear(MI_COLOR);
POINT_COLOR=WHITE;
BACK_COLOR=MI_COLOR;
rval=Get_PicNum("0:/PICTURE");
for(i=0;i<rval;i++)
{
Show_Str(0,i*16,220,16,f_pic,16,0);
}
while(1);
}
上面的蓝色部分代码没法显示。。。。指针数组*f_pic[50]实在外部定义的,按说Get_PicNum()函数已将图片的名存入f_pic数组中了,为啥在别处调用行不通呢???
谢谢原子哥了。。。
|