[求助]为什么读写文件内容不对呢

我用的C8051F020+CH375模块. 模块短路跳线冒后,可以写U盘,内容为: 在CH375的U盘模块自动演示时写入当前信息: 版本=标准版V31, 工作模式和接口配置值=14H, 串口波特率除数=00H 用的PARA_INT文件夹里面的程序.因为C8051自带4096的RAM,就没加62256. 改了以下地方: unsigned char xdata DATA_BUF[ 512 * 4 ] _at_ 0x0000; /* 外部RAM的文件数据缓冲区,从该单元开始的缓冲区长度不小于一次读写的数据长度,最少为512字节 */ if ( OldSize > (unsigned long)(4*512) ) { /* 演示板用的62256只有32K字节 */ SecCount = 4; /* 由于演示板用的62256只有32K字节,所以只读取不超过64个扇区,也就是不超过32768字节 */ NewSize = 4*512; /* 由于RAM有限所以限制长度 */

最后的结果是:能读出U盘里的文件名、能写入文件、能删除文件。但不能改文件的内容,读出的文件内容也不对。写文件日期时间也不对。

串口输出为: Start Wait Udisk Ready ? Open Query Read Size=50331648, Len=2048, Sec=4 Close Line 1: Create Write Modify Close Erase Disk FatCode=FAT32, TotalSector=-2135409152, FreeSector=1756904960 Take_out Wait Udisk

请高手指点,谢谢大家了。

CH375HFT.C是我自己创建的内容为“abc”

mCmdParam.Modify.mFileAttr = 0xff; /* 输入参数: 新的文件属性,为0FFH则不修改 */ mCmdParam.Modify.mFileTime = 0xffff; /* 输入参数: 新的文件时间,为0FFFFH则不修改,使用新建文件产生的默认时间 */ mCmdParam.Modify.mFileDate = ( (2004-1980)<<9 ) + ( 5<<5 ) + 18; /* 输入参数: 新的文件日期: 2004.05.18 */ mCmdParam.Modify.mFileSize = NewSize; /* 输入参数: 如果原文件较小,那么新的文件长度与原文件一样长,否则被RAM所限 */ i = ExecCommand( CMD_FileModify, 4+2+2+1 ); /* 修改当前文件的信息,修改日期和长度,参数长度为sizeof(mCmdParam.Modify.mFileSize)+... */ mStopIfError( i );

但,用计算机看的时候,文件的日期为:2069-1-16


你看下模块的配置是多少?默认的配置为大端格式,按照你自动演示的配置值,你配置的是小端格式。


谢谢。 我改了以下程序: mCmdParam.Setup.mSetup = 0x81; /* 输入参数: 模块配置值,位0为1则空闲时查询U盘连接状态并自动中断通知 */ “由0x01改为0x81” 可以文件内容可以写入了,日期也正确。 但是,读文件、读磁盘空间都不正确,写入的文件内容也有点问题。 以下是串口数据: Wait Udisk Ready ? Open Query Read Size=5, Len=5, Sec=1 Close Line 1:


只有登录才能回复,可以选择微信账号登录