请技术人员给予帮助
技术人员:
你好,发现一个问题,通过u盘读写模块往u盘写数据,写一次外部RAM的数据块是对的,但再写一次同样的数据块,按道理u盘中数据为写一次的两倍,但事实发现文件变为0K字节,这是为什么,请指教。
问题程序如下(只截取发生问题的部分程序):
printf( "Create\n" );
memcpy( mCmdParam.Create.mPathName, "\\C51\\双击我吧.TXT", MAX_PATH_LEN );
i = ExecCommand( CMD_FileCreate, MAX_PATH_LEN );
mStopIfError( i );
printf( "Write\n" );
mCmdParam.Write.mSectorCount = SecCount;
i = ExecCommandBuf( CMD_FileWrite, 1, &DATA_BUF ); /* 向文件写入数据 */
mStopIfError( i );

/*以下为再添加同样的外部RAM中数据块,问题就在这,再写同样的数据块后,u盘中的数据文件不仅不是原来的两倍却变为0字节*/
mCmdParam.Write.mSectorCount = SecCount;
i = ExecCommandBuf( CMD_FileWrite, 1, &DATA_BUF );
mStopIfError( i );

printf( "Modify\n" );
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 = (unsigned long)(NewSize*2); /* 输入参数: 如果原文件较小,那么新的文件长度与原文件一样长,否则被RAM所限 */
i = ExecCommand( CMD_FileModify, 4+2+2+1 ); /* 修改当前文件的信息,修改日期和长度,参数长度为sizeof(mCmdParam.Modify.mFileSize)+... */
mStopIfError( i );
printf( "Close\n" );
mCmdParam.Close.mUpdateLen = 0; /* 不要自动计算文件长度,如果自动计算,那么该长度总是512的倍数 */
i = ExecCommand( CMD_FileClose, 1 );
mStopIfError( i );文字文字文字[i]文字[/i][i]文字[/i]
strive! struggle!
mCmdParam.Modify.mFileSize = (unsigned long)(NewSize*2); /* 输入参数: 如果原文件较小,那么新的文件长度与原文件一样长,否则被RAM所限 */
你的NewSize多少啊
mCmdParam.Modify.mFileSize = (unsigned long)(NewSize)*2; //这样试试
我来也.....................................
只有登录才能回复,可以选择微信账号登录