CH375FileRead函数能正确读取扇区,但是读到文件末尾时就显示乱七八糟的,正常情况应该是EOF结尾,如下所示,还有我的89C52内部拓展RAM大小为1024byte,但如果我定义FILE_DATA_BUF_LEN为0x200,编译的时候xdata会超过1024byte,所以我修改成了0x111,能读出来512byte,但是最后乱码
这次真的没办法了,求斑竹大人给个解决办法,吐血罗 @ZBin
这是程序中的关键一段 ................... printf("扇区方式读取1扇区\n"); mCmdParam.Read.mSectorCount=1;//设置读取的字节数 i=CH375FileRead(); printf("CH375FileReadX返回值:%x\n",i); if(i==ERR_SUCCESS) { printf("读取文件成功\n"); } else { printf("读取文件失败\n"); } CH375DirtyBuffer(); /*因为文件读写缓冲区与磁盘数据缓冲区重叠,所以在CH375FileRead读文件后和在CH375FileWrite写文件前必须清除磁盘缓冲区 */ // FILE_DATA_BUF[513]=0; /* 置字符串结束标志,最多显示100个字符 */ printf("文件内容为:%s\n",FILE_DATA_BUF); CH375FileClose(); ...................
首先,你编译之后RAM肯定不能超过单片机内部RAM,如果RAM不够的话可以共用磁盘缓冲区,用CH375FileReadX代替CH375FileRead,用CH375FileWriteX代替CH375FileWrite。另外,你的图片没有上传成功,你可以发到我的邮箱看一看。
就是这个图片:http://oi40.tinypic.com/m7fkp1.jpg 另外89C52的RAM分配为:内部RAM256byte+内部拓展RAM1024byte,无外部RAM 。。。。。。。。 还有那个磁盘缓冲区具体怎么用啊,我看了FILELIB4\EXAM3还是木有搞定,就是一直乱码
额,搞定罗,没注意这一句: CH375vFileSize += CH375vSectorSize - 1; /* 默认情况下,以扇区方式读取数据时,无法读出文件尾部不足1个扇区的部分,所以必须临时加大文件长度以读取尾部零头 */