前两天学习FATFS文件系统,通过一段的努力最终算是把文件读出来了,但是中间遇到了好些问题,其中一个就是我写过底层接口函数后,就是不能读出文件数据,单独把底层接口函数运用一下,仅仅读写一扇的数据却是可以实现的,这就把我给搞蒙了,整理这两项的兼容解决了好几天,也没让它们乖乖的给配合工作起来,后来一气之下,又建了个工程,下了个R0.05版本的FATFS,添加进去,再把底层接口函数写进去,恩………………!!!好了,读出数据了。下面是我的一个小小验证程序。呵呵……复制一个240*291的BMP格式的图片,呵呵显示了……(手机照的,还是手机,不太清楚啊)
但是,接着问题就业接踪而来了,显示稍微大点的图片可以好好的显示出来,(相对于240*320的液晶屏)但是把图片稍微缩小,然后显示就出错了,发现数据不但出错(颜色都没了,成黑白屏了),而且图片发生了很大的位移偏差(右边的图显示到左边了),
原来怀疑程序有问题,但是显示稍微的大点的图片是可以的啊,可还是查看程序很长一段时间,结果还是一样的,程序不知是哪里有问题,应该没问题,那好了,程序没问题,硬件没问题,那么不止剩下了图片了么?可图片会有问题么?带着很大的疑问还是去查看一下图片,结果让我真的发现了原来图片是“有问题”的。
这是可以显示的240*291的图片,可以清楚的看到其文件大小为209,574字节,这正好为
(240*291*3+54)注:240*291的图片,24位的BMP格式图片,文件属性字节大小为54。
在UltraEdit软件里看也可以验证。
但是图片缩小后
缩小到141*214大小后起文件大小变为90,790字节(还为24位图)
UltraEdit软件里显示文件大小为0x0162A6(90790),数据偏移量0x36(54),这样问题就出来了,文件总共为90790个字节,但是按照图片大小算出来为(141*214*3+54=90576),这样整整相差214个字节,难怪我们写出的图片颜色不对,而且位置也偏移了,问题就是这个,这个问题自己还没上网查,先到论坛里发一下贴,提出自己遇到的问题,有朋友用到这些东西是可以想到这一点……有高手也可以先说说哦……查资料去喽!!!
|