谢谢ls 这段程序我刚试了下 会卡死 不能执行完
程序执行到什么地方?返回值是多少?
我cnt的定义搞错了 现在这段程序通了 能够原文件后添加数据 我自己的还是不行。。。
能不能帮忙看看这段程序的问题
mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/NEWFILE2.TXT" ); /* 新文件名,在根目录下 */
i = CH375FileOpen( ); /* 打开文件 */
CH375vFileSize += CH375vSectorSize - 1; mCmdParam.Locate.mSectorOffset =0xffffffff; i = CH375FileLocate( ); mStopIfError( i );
mCmdParam.ReadX.mSectorCount = 1;
mCmdParam.ReadX.mDataBuffer = 0x7800; i=CH375FileReadX(); mStopIfError( i ); mCmdParam.WriteX.mDataBuffer = 0x7800; mCmdParam.WriteX.mSectorCount = 1; i = CH375FileWriteX( ); /* 向文件写入数据 */ mStopIfError( i ); mCmdParam.WriteX.mSectorCount = SecCount; /* 写入所有扇区的数据 */ mCmdParam.WriteX.mDataBuffer = &FILE_DATA_BUF[0]; i = CH375FileWriteX( ); /* 向文件写入数据 */ mStopIfError( i );
mCmdParam.Close.mUpdateLen = 0; /* 不要自动计算文件长度,如果自动计算,那么该长度总是CH375vSectorSize的倍数 */
CH375vFileSize -= CH375vSectorSize - 1; i = CH375FileClose( ); mStopIfError( i );
按照整扇区的方式已经调试好了 就是零碎的数据读不出来
不足一个扇区的零碎数据怎么和我想要添加的数据结合起来? 地址要连续吗?
最后不足一个扇区的地方你可以这样读取: 前面跳到文件末尾 CH375vFileSize+=511; mCmdParam.ReadX.mSectorCount = 1; mCmdParam.ReadX.mDataBuffer = 0x7800; i=CH375FileReadX(); CH375vFileSize-=511;
如果文件当中有不足整扇区的数据,先按扇区方式移动文件指针,移动到文件的末尾,应该是不足整扇区部分的前面,然后把文件长度加上511,然后在读一个扇区的数据即可
谢谢ls两位 我读出零碎数据的程序就是这样写的 但是读出来之后怎么和我想添加的数据合并再写进文件呢? 比如我把不足一扇区的数据存到了0x7800起始的ram空间里 我本来想写的数据在0x1000起始的ram里 怎样一起写到文件里?
那是你软件的问题,你可以知道你的文件长度,也知道你零碎数据的多少?比如你的零碎数据是32,那么,你在你要写的数据第一个扇区你要组合数据,拿512-32就是你要写的数据,在后面你每次写整扇区写就可以了
mCmdParam.Locate.mSectorOffset =0xffffffff; i = CH375FileLocate( ); mStopIfError( i );
CH375vFileSize+=511; mCmdParam.ReadX.mSectorCount = 1; mCmdParam.ReadX.mDataBuffer = 0x7800; i=CH375FileReadX(); CH375vFileSize-=511;
mCmdParam.WriteX.mDataBuffer = 0x7800; mCmdParam.WriteX.mSectorCount = 1; i = CH375FileWriteX( ); /* 向文件写入数据 */ mStopIfError( i );
mCmdParam.WriteX.mSectorCount = SecCount; /* 写入所有扇区的数据 */ mCmdParam.WriteX.mDataBuffer = &FILE_DATA_BUF[0]; i = CH375FileWriteX( ); /* 向文件写入数据 */ mStopIfError( i );
这样的程序为什么调试不通?有没有错误呢
这样写肯定不对,和以前是一样的,要把不足整扇区的数据和你要写入的数据拼成512字节,然后一起写进去。
果然不对 这个零碎数据长度我怎么得到?
麻烦你自己看下我们给您回的帖,按照我们提供的方法来写。
调好了,不足整扇区的数据,先按扇区方式移动文件指针,移动到文件的末尾,应该是不足整扇区部分的前面,然后把文件长度加上511,然后在读一个扇区的数据,这个操作之后原来还要重新指定指针再写文件