移植STemWin后想要测试一下从SD卡读取图片信息然后添加到储存器再GUI_BMP_Draw()显示图片。/* 申请一块内存空间 并且将其清零 */
hMem = GUI_ALLOC_AllocZero(file.fsize);
/* 将申请到内存的句柄转换成指针类型 */
_acBuffer = GUI_ALLOC_h2p(hMem);复制代码在教程里看到有这样的一个方法,可以直接用emWin的内存申请出来给用户使用。于是我就这样用了res = f_read(&file, _acBuffer, gFileSize, &br);
if(res != FR_OK){
printf("f_read _acBuffer error\r\n");
GUI_ALLOC_Free(hMem);
f_close(&file);
return 0;
}复制代码
但是这样读出来后我发现显示不了。于是我定义了一个全局数组
char buf[230454];
res = f_read(&file, buf, gFileSize, &br);
if(res != FR_OK){
printf("f_read buf error\r\n");
GUI_ALLOC_Free(hMem);
f_close(&file);
return 0;
}复制代码
文件是230454字节大小的。
我用f_read把图片数据读取到全局变量"buf"中能正常使用GUI_BMP_Draw()显示图片。
我用f_read把图片数据读取到GUI_ALLOC_AllocZero所申请到的内存"_acBuffer"数据不能正常使用GUI_BMP_Draw()显示图片。
最终发现f_read()读取到全局变量"buf"和读取数据到GUI_ALLOC_AlloZero所申请的"_acBuffer"里的数据都完全不同的。这个我就很头痛了。但是_acBuffer里我手动写数据读数据又是正常的。有没有大神能给指点一个方向?谢谢。
我用的STemWin版本是5.44a名称是:STemWin_CM7_OS_wc16_ARGB.a。 |