OpenEdv-开源电子网

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

求助原子哥!!! 战舰V3板从SD卡读取显示流位图问题!

[复制链接]

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-18
在线时间
18 小时
发表于 2016-3-18 17:09:08 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 zealforC 于 2016-3-18 18:31 编辑

问题描述:战舰V3板从SD卡读取流位图文件"ie.dta"并调用GUI_DrawStreamedBitmapAuto函数进行显示,一直都有问题,求助原子哥帮指点一下疑惑,先谢了!!!
我选取的原始工程是"D:\战舰V3 STM32开发板光盘资料20150813\战舰V3 资料盘(A盘)\4,程序源码\3,扩展例程\3,EMWIN扩展例程\EMWIN实验24 BMP图片显示"。
1.我用的SD卡
SD卡.png
2.ie图标信息
ie图标大小.png
3.ie.dta流位图文件制作过程
第一步:
转换选择.png
第二步:
生成选择1.png
第三步:
生成选择2.png
生成的流位图文件信息:
流位图大小.png
4.我的程序源码
4.1 User文件夹main函数部分:
//EMWINDEMO任务
extern void MainTask(void);
void emwindemo_task(void *p_arg)
{
        //更换皮肤
        BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
        CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
        DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
        FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
        HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
        MENU_SetDefaultSkin(MENU_SKIN_FLEX);
        MULTIPAGE_SetDefaultSkin(MULTIPAGE_SKIN_FLEX);
        PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
        RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
        SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
        SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
        SPINBOX_SetDefaultSkin(SPINBOX_SKIN_FLEX);
        GUI_CURSOR_Show();
        while(1)
        {
//                bmpdisplay_demo();
                MainTask();
        }
}

4.2 EMWIN_DEMO文件夹ie.c文件
#include "GUI.h"
#include "BUTTON.h"
#include "usart.h"
#include "ff.h"
#include "malloc.h"

/* 变量定义和声明 */
FRESULT result;
extern FIL file;
extern UINT bw;

/*
*********************************************************************************************************
*        函 数 名: _ShowStreamBitmap
*        功能说明: 显示流位图
*        形    参:sFilename  要读取的文件名
*        返 回 值: 无
*********************************************************************************************************
*/
static void _ShowStreamBitmap(const char * sFilename)
{
        GUI_HMEM hMem;
        char *_acBuffer2;
        
        /* 申请一块内存空间 并且将其清零    */
        hMem = GUI_ALLOC_AllocZero(1024*20);
        /* 将申请到内存的句柄转换成指针类型 */
        _acBuffer2 = GUI_ALLOC_h2p(hMem);
        
        /* 打开文件 */               
        result = f_open(&file, sFilename, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);

        /* 读取数据 */
        result = f_read(&file, _acBuffer2, file.fsize, &bw);

        /* 显示 */
        GUI_DrawStreamedBitmapAuto(_acBuffer2, 50, 50);        
         
    /* 释放动态内存 */     
        GUI_ALLOC_Free(hMem);
        f_close(&file);
}

/*
*********************************************************************************************************
*        函 数 名: MainTask
*        功能说明: GUI主函数
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
void MainTask(void)
{        
        /* 读取并显示文件 */
        _ShowStreamBitmap("1:/ie.dta");

        while(1)
        {                                
                GUI_Delay(100);               
        }

}

5. 最终在LCD屏上的显示效果如下,我的LCD是正点原子的2.8寸的TFTLCD

实际效果.png


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-3-19 14:02:47 | 显示全部楼层
你这只是没有显示完全哦
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-18
在线时间
18 小时
 楼主| 发表于 2016-3-19 18:09:09 | 显示全部楼层
正点原子 发表于 2016-3-19 14:02
你这只是没有显示完全哦

不晓得是什么缘故,开发板例程中的那个SD卡驱动经由FatFs文件系统调用从SD卡里面读取流位图数据的时候,经常是读到一半的样子就会出错,在此,希望原子哥能出一期从SD卡或者是SPI-FLASH里面读取流位图数据进行显示的实验例程,非常感谢了~~~~
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-18
在线时间
18 小时
 楼主| 发表于 2016-4-17 11:27:34 | 显示全部楼层
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-18
在线时间
18 小时
 楼主| 发表于 2016-4-28 19:29:05 | 显示全部楼层
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-18
在线时间
18 小时
 楼主| 发表于 2016-5-12 15:38:08 | 显示全部楼层
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-7-31
在线时间
7 小时
发表于 2020-1-14 18:28:56 | 显示全部楼层
兄弟,你动态内存分配少了,我看你只分配了20KB,所以只能显示一半,你增大试试,再有问题联系我,Q743211533
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2019-12-9
在线时间
20 小时
发表于 2020-3-16 15:57:16 | 显示全部楼层
小白求问一下楼主,SD卡的路径不是0开头吗,还是都可以
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 17:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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