初级会员

- 积分
- 145
- 金钱
- 145
- 注册时间
- 2017-2-25
- 在线时间
- 57 小时
|

楼主 |
发表于 2017-4-12 19:50:43
|
显示全部楼层
本帖最后由 kriass 于 2017-4-12 19:53 编辑
原子哥,我将你们的图片显示实验的代码中的FATFS系统读取文件改为直接读内存文件,然后发现图片无法显示,修改的代码如下,还希望能麻烦您看一下,也欢迎各路大神出手相救
//图片文件信息,对应FATFS的FIL
typedef struct
{
u8* picPoint; //图片数据流首地址
u32 picSize; //图片大小
u32 readPosition; //图片读取的位置,实现f_read()中的分块读取
}picINFO;
//自己修改的FATFS函数
void picRead(picINFO* picinfo,u8* buff,u32 setSize,u32* readSize) //f_read函数修改
{
u32 i=0;
printf("picRead\r\n");
if((picinfo->readPosition+setSize)>picinfo->picSize)
*readSize=picinfo->picSize-picinfo->readPosition;
else
*readSize=setSize;
if(buff==NULL)
{
picinfo->readPosition+=*readSize;
return;
}
memset(buff,0,setSize);
memcpy(buff,picinfo->picPoint+picinfo->readPosition,*readSize);
picinfo->readPosition+=*readSize;
}
u8 picLseek(picINFO* picinfo,u32 setSize) //f_lseek函数修改
printf("picLseek\r\n");
if(picinfo->readPosition+setSize>picinfo->picSize)
picinfo->readPosition=picinfo->picSize;
else
picinfo->readPosition+=setSize;
return 0;
}
u8 picOpen(picINFO* picinfo,u8* dataPoint) //f_open函数修改
{
printf("picOpen\r\n");
if(dataPoint[0]==0XFF&&dataPoint[1]==0XD8)
{
picinfo->picPoint=dataPoint;
picinfo->picSize=sizeof(dataPoint)/sizeof(u8);
picinfo->readPosition=0;
return 0;
}
printf("not a jpeg file\r\n");
return 1;
}
void picClose(picINFO* picinfo) //f_close函数修改
{
printf("picClose\r\n");
picinfo->picPoint=NULL;
picinfo->picSize=picinfo->readPosition=0;
}
图片是用lwip实验里面的fsmake.exe做的二进制数组,定义是
static const unsigned char jpeg1[] = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,…………,0xff,0xd9,}
|
|