OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3620|回复: 1

关于emwin控件使用外部flash存储图片出错

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-2-25
在线时间
7 小时
发表于 2016-6-26 10:29:27 | 显示全部楼层 |阅读模式
1金钱
各位大神好,现在我使用emwin中的控件image显示图片,由于图片太多,所以放在外部的flash芯片中。程序代码如下:
[mw_shl_code=c,true]unsigned char _acBuffer[320*4*8];

int _GetData(void * p, const U8 ** ppData, unsigned NumBytesReq, U32 Off)  
{
                                        static int FileAddress = 0;
                                        UINT NumBytesRead;
                                        FIL *PicFile;

                                        PicFile = (FIL *)p;

                                        /*
                                        * Check buffer size
                                        */
                                        if (NumBytesReq > sizeof(_acBuffer)) {
                                        NumBytesReq = sizeof(_acBuffer);
                                        }

                                        /*
                                        * Set file pointer to the required position
                                        */
                                        if(Off == 1) FileAddress = 0;
                                        else FileAddress = Off;
                                        result =f_lseek(PicFile, FileAddress);


                                        /*
                                        * Read data into buffer
                                        */
                                        result = f_read(PicFile, _acBuffer, NumBytesReq, &NumBytesRead);

                                        /*
                                        * Set data pointer to the beginning of the buffer
                                        */
                                        *ppData = (const U8 *)_acBuffer;

                                        /*
                                        * Return number of available bytes
                                        */
                                        return NumBytesRead;
}[/mw_shl_code]


[mw_shl_code=c,true]void DisplayImageFromExFlash(IMAGE_Handle hObj,const TCHAR* path)
{
    FRESULT res_flash;
          res_flash = f_open(&fnew1, path, FA_OPEN_EXISTING | FA_READ);
       
          IMAGE_SetBMPEx ( hObj, _GetData, &fnew1);
  
    f_close(&fnew1);
}
[/mw_shl_code]

发现程序执行到IMAGE_SetBMPEx ( hObj, _GetData, &fnew1);并不会调到int _GetData(void * p, const U8 ** ppData, unsigned NumBytesReq, U32 Off) 中,而是直接执行f_close(&fnew1);过后再执行_GetData(),
导致显示不了图片,请问这是什么原因呢?谢谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-7-2 23:46:55 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 21:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表