你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

SD卡相册功能,图片信息储存问题

[复制链接]
wdshuang09 提问时间:2020-3-2 20:23 /
STM32F103相册功能,程序上采用 FAFTS文件系统读取SD卡所有照片送LCD显示;现遇到一个问题,SD卡里存储照片数量未知、照片名称未知、分布在哪些文件夹未知,怎么节约程序空间把每张照片都送到LCD显示?

程序思路:上电先在SD卡根目录里扫描,把所有照片名称、路径都找到,并一一对应储存,按键UP、DOWN选择照片相应的信息,通过f_opendir和f_readdir找到相应文件内容送LCD显示;
用数组储存照片信息思路,在初始化就需要定义数组大小(必须大于照片数量,但照片数量事先未知,只有扫描SD卡后才能知道),数组定义大了浪费空间、定义少了照片显示不全;
现在没有思路了,有哪些大神可以思路或相应的例程,不胜感激
1.jpg
收藏 评论10 发布时间:2020-3-2 20:23

举报

10个回答
aiherong 回答时间:2020-3-3 02:44:36
就算keilc打开工程,其目录深度也是有限的,不可能也没必要把记录当前图片路径的那个数组定义超过128*8层,如果不需显示文件名,枚举到的图片只记录首簇地址及目录表序号,边显示边读下一簇……

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

废鱼 回答时间:2020-3-3 17:41:07
楼主可以考虑使用指针的方式进行处理,定义一个指针结构体的数组,每当搜索到一个jpg文件时,把锁需要的信息保存到这个结构体中即可。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

wang5825 回答时间:2020-3-3 20:10:27
proteus仿真ArduinoST7735BMP-SD显示图片   可以参考!!!
  简单测试 包括:PictureAlbum.ino, PictureAlbum.hex, NaturalWorld.mmc,
                         ST7735BMP-SD.pdspr,一个按钮,一张一张显示。      PictureAlbum.jpg

    PictureAlbum1.jpg
        http://download.csdn.net/download/u011388197/12188215  
wdshuang09 回答时间:2020-3-3 22:02:36
安 发表于 2020-3-3 17:41
楼主可以考虑使用指针的方式进行处理,定义一个指针结构体的数组,每当搜索到一个jpg文件时,把锁需要的信 ...

相册功能目前已经是采用数组指针的方法实现了,u8  *picno[128][20]={0};现在纠结如何减少这个数组大小,定义大了浪费,少了显示不全的问题
aiherong 回答时间:2020-3-4 02:50:43
目录深度应该不用考虑这么多吧? 20层还是20个文件? (SD卡中图片往往好几百)
提醒楼主,你的问题中有三个未知,不太可能遍历所有文件信息之后再显示,建议用RTOS方式
只能是一个任务显示;另一任务逐一检索图片文件分配表,传递簇号对应的扇区地址即可
只需定义一个全局数组用来存放当前检索到的图片文件所在目录即可,指针数组存放图片起始簇号
wdshuang09 回答时间:2020-3-4 10:10:53
aiherong 发表于 2020-3-4 02:50
目录深度应该不用考虑这么多吧? 20层还是20个文件? (SD卡中图片往往好几百)
提醒楼主,你的问题中有三个未 ...

最深图片的文件夹到根目录3层,100多张图片,目前做法是上电初始化,扫描所有的图片,将图片路径和文件名保存在二维指针数组里。RTOS还不会...
疯de_恒 回答时间:2020-3-4 10:27:47
不用保存那么多信息,你只需要3个保存空间保存路径与文件名,用一个空间保存当前检索到达哪个位置。3个保存空间分别保存上一个图片、当前图片、下一个图片的路径与文件名。
当按下“DOWN”键时,立刻打开下一张图显示到LCD,比较快,因为已经有路径了。然后再立刻检索下一张图片的路径,同时保存空间滚动处理,先进先出。返向也一样。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

废鱼 回答时间:2020-3-5 10:44:44
指针定义好以后,他是一个空的内容,并没有实际的占用空间。也可以考虑把列表放入到SD卡中的文件,比如建立一个TXT文件用来存储文件路径。也可以考虑参考手机的相册缓冲功能。
aiherong 回答时间:2020-3-6 02:45:42
2018年实际操作了一次FAT32系统,是依据目录表项和分配表进行的,那里涉及簇的概念
长年无法睡好导致记忆混乱,其实FATFS 没有对簇直接操作的函数。
当然,真的要高效实现楼主原意命题: 在三个未知的前提下,扫描卡中所有图片的功能,单靠FATFS可能还不够

wdshuang09 回答时间:2020-3-6 08:11:16
aiherong 发表于 2020-3-6 02:45
2018年实际操作了一次FAT32系统,是依据目录表项和分配表进行的,那里涉及簇的概念
长年无法睡好导致记忆混 ...

同意楼上观点

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版