硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4187|回复: 8
收起左侧

[emWin] 文件系统读取PNG格式文件显示不成功???

[复制链接]

12

主题

33

回帖

69

积分

初级会员

进阶stm32,那之后呢。。。。。

积分
69
发表于 2015-9-22 15:49:36 | 显示全部楼层 |阅读模式
使用GUI_PNG_Draw函数直接显示转成数组的PNG图片可以正常显示,
而想用GUI_PNG_DrawEx函数显示直接读取文件却总是失败,会进入LIBPNG的调试出错函数
static int _GetData(void * p, const U8 **ppData, unsigned int NumBytesReq, U32 Off)函数是参考站长的,
result = f_read(p_file, pData, NumBytesReq, &NumBytesRead);在读取函数后加上printf函数打印出来的数据跟源文件对应得上
应该可以排除是_GetData函数问题,感觉就是LIBPNG问题,LIBPNG我是直接复制过来用的,什么都没改
最终,不知问题出在哪?????
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2015-9-23 09:12:24 | 显示全部楼层
我做的emWin例子是用的这个函数GUI_PNG_DrawEx,没问题。
估计是_GetData这个函数有问题,你再查一下,这个PNG使用的这个函数跟JPEG和BMP不一样。
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

进阶stm32,那之后呢。。。。。

积分
69
 楼主| 发表于 2015-9-23 09:21:25 | 显示全部楼层
_GetData跟你是一样的
打印_GetData函数相关参数也是对的呀
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2015-9-23 09:29:40 | 显示全部楼层

回 haohao801 的帖子

haohao801:_GetData跟你是一样的
打印_GetData函数相关参数也是对的呀 (2015-09-23 09:21) 
那有可能是动态内存不够吧,我测试的时候用的是外部SRAM。
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

进阶stm32,那之后呢。。。。。

积分
69
 楼主| 发表于 2015-9-23 17:45:27 | 显示全部楼层
终于解决了,问题确实是在_GetData这里,实际上最终问题是SD卡驱动问题,
把PNG图片文件放在SPI Flash内显示就没问题,放在SD卡才有问题
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

进阶stm32,那之后呢。。。。。

积分
69
 楼主| 发表于 2015-9-23 19:27:29 | 显示全部楼层
这节奏不对啊
PNG图片放在SPI Flash文件系统内可以正常显示,放在SD卡就无法显示(同样程序,只改文件路径)
bmp和jpg图片放在SD卡内却可以正常显示(文件系统驱动部分没改)
所以.........................
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

进阶stm32,那之后呢。。。。。

积分
69
 楼主| 发表于 2015-9-24 10:08:59 | 显示全部楼层
使用串口打印出_GetData函数内的变量变化
//正常显示PNG图片
open file (1:1.png) result->(0)
lseek:result->(0) off->(0) address->(0)
read:result->(0) numreq->(8),numread->(8)
lseek:result->(0) off->(8) address->(8)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(12) address->(12)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(16) address->(16)
read:result->(0) numreq->(13),numread->(13)
lseek:result->(0) off->(29) address->(29)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(33) address->(33)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(37) address->(37)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(41) address->(41)
read:result->(0) numreq->(8192),numread->(8192)
lseek:result->(0) off->(8233) address->(8233)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(8237) address->(8237)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(8241) address->(8241)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(8245) address->(8245)
read:result->(0) numreq->(4460),numread->(4460)
lseek:result->(0) off->(12705) address->(12705)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(12709) address->(12709)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(12713) address->(12713)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(12717) address->(12717)
read:result->(0) numreq->(4),numread->(4)
png draw ok

//无法显示PNG图片
open file (1:1.png) result->(0)
lseek:result->(0) off->(0) address->(0)
read:result->(0) numreq->(8),numread->(8)
lseek:result->(0) off->(8) address->(8)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(12) address->(12)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(16) address->(16)
read:result->(0) numreq->(13),numread->(13)
lseek:result->(0) off->(29) address->(29)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(33) address->(33)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(37) address->(37)
read:result->(0) numreq->(4),numread->(4)
lseek:result->(0) off->(41) address->(41)
read:result->(0) numreq->(8192),numread->(8192)
lseek:result->(0) off->(8233) address->(8233)
read:result->(0) numreq->(4),numread->(4)

读取SD卡内PNG图片是读取了一部分文件才死掉的
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

进阶stm32,那之后呢。。。。。

积分
69
 楼主| 发表于 2015-9-24 11:46:55 | 显示全部楼层
结贴(虽然都是我自己在说)
原因:fatfs文件系统中SD卡接口函数有点问题,导致读取少字节时出错
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2015-9-25 08:59:25 | 显示全部楼层

回 haohao801 的帖子

haohao801:结贴(虽然都是我自己在说)
原因:fatfs文件系统中SD卡接口函数有点问题,导致读取少字节时出错 (2015-09-24 11:46) 
[s:151]
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 21:31 , Processed in 0.043263 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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