在用大的buff读取文件的过程中,发现读取无法正常结束,FileInfo的内容被破坏掉了.
追查了半天,发现是FileGetch函数中的一处小bug.
在550行,Handle=FindOpenFileW(fp->Drive,fp->Dirclus,fp->Name);
if(Handle<MAX_OPEN_FILES)
这里,如果该文件没有被"w"方式打开,将返回Not_Open_File,这个值是-1,也就是FF,Handle本身是个有符号数.但是MAX_OPEN_FILES一般来说是个正数,比如10.所以,这里的if(Handle<MAX_OPEN_FILES)就起不到应该有的作用.
所以应该修改为:if(Handle!=Not_Open_File)才比较合适.
接着,要优化读取sd卡的速度了,现在的速度太慢了,我想至少要提高500倍以上才能让该系统被用到实际的工程中.