STM32F103相册功能,程序上采用 FAFTS文件系统读取SD卡所有照片送LCD显示;现遇到一个问题,SD卡里存储照片数量未知、照片名称未知、分布在哪些文件夹未知,怎么节约程序空间把每张照片都送到LCD显示? 程序思路:上电先在SD卡根目录里扫描,把所有照片名称、路径都找到,并一一对应储存,按键UP、DOWN选择照片相应的信息,通过f_opendir和f_readdir找到相应文件内容送LCD显示; 用数组储存照片信息思路,在初始化就需要定义数组大小(必须大于照片数量,但照片数量事先未知,只有扫描SD卡后才能知道),数组定义大了浪费空间、定义少了照片显示不全; 现在没有思路了,有哪些大神可以思路或相应的例程,不胜感激 |
评分
查看全部评分
评分
查看全部评分
简单测试 包括:PictureAlbum.ino, PictureAlbum.hex, NaturalWorld.mmc,
ST7735BMP-SD.pdspr,一个按钮,一张一张显示。
http://download.csdn.net/download/u011388197/12188215
相册功能目前已经是采用数组指针的方法实现了,u8 *picno[128][20]={0};现在纠结如何减少这个数组大小,定义大了浪费,少了显示不全的问题
提醒楼主,你的问题中有三个未知,不太可能遍历所有文件信息之后再显示,建议用RTOS方式
只能是一个任务显示;另一任务逐一检索图片文件分配表,传递簇号对应的扇区地址即可
只需定义一个全局数组用来存放当前检索到的图片文件所在目录即可,指针数组存放图片起始簇号
最深图片的文件夹到根目录3层,100多张图片,目前做法是上电初始化,扫描所有的图片,将图片路径和文件名保存在二维指针数组里。RTOS还不会...
当按下“DOWN”键时,立刻打开下一张图显示到LCD,比较快,因为已经有路径了。然后再立刻检索下一张图片的路径,同时保存空间滚动处理,先进先出。返向也一样。
评分
查看全部评分
长年无法睡好导致记忆混乱,其实FATFS 没有对簇直接操作的函数。
当然,真的要高效实现楼主原意命题: 在三个未知的前提下,扫描卡中所有图片的功能,单靠FATFS可能还不够
同意楼上观点