改写的例程6 在ram中自由定义字符串并写入u盘新建的文件newfile.txt时很顺利完成
现在改写程序 目的是读出u盘中newfile.txt文件的几个字节并写入到新建文件newfile1.txt中 出现问题是写入出现乱码 这个是什么原因?
主要涉及程序如下: LED_RUN_ACT( ); /* 开始操作U盘 */ mDelay100mS( ); mDelay100mS( );
/* 读取原文件 */
mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/NEWFILE.TXT" ); /* 文件名,该文件在C51子目录下 */ i = CH375FileOpen( ); /* 打开文件 */
if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) { LED_RUN_INACT( ); break; }
else { /* 找到文件或者出错 */ mStopIfError( i );
m=0;
mCmdParam.ByteRead.mByteCount = 5; /* 请求读出几十字节数据 */ i = CH375ByteRead( ); /* 以字节为单位读取数据块,单次读写的长度不能超过MAX_BYTE_IO,第二次调用时接着刚才的向后读 */ mStopIfError( i ); for ( i=0; i!=mCmdParam.ByteRead.mByteCount; i++ ) { ram_read[ i ] = mCmdParam.ByteRead.mByteBuffer[ i ];
m++; } if ( mCmdParam.ByteRead.mByteCount < 5) { /* 实际读出的字符数少于要求读出的字符数,说明已经到文件的结尾 */ break; } }
i = CH375FileClose( ); /* 关闭文件 */ mStopIfError( i );
#ifdef EN_DISK_WRITE /* 子程序库支持写操作 */ /* 产生新文件 */ LED_WR_ACT( ); /* 写操作 */ mDelay100mS( ); mDelay100mS( ); mCopyCodeStringToIRAM( mCmdParam.Create.mPathName, "/NEWFILE1.TXT" ); /* 新文件名,在根目录下,中文文件名 */ i = CH375FileCreate( ); /* 新建文件并打开,如果文件已经存在则先删除后再新建 */ mStopIfError( i ); pCodeStr =ram_read; while( 1 ) { /* 分多次写入文件数据 */ for ( i=0; i c = *pCodeStr; mCmdParam.ByteWrite.mByteBuffer[i] = c; if ( c == 0 ) break; /* 源字符串结束 */ pCodeStr++; } if ( i == 0 ) break; /* 源字符串结束,完成写文件 */ mCmdParam.ByteWrite.mByteCount = i; /* 写入数据的字符数,单次读写的长度不能超过MAX_BYTE_IO,第二次调用时接着刚才的向后写 */ i = CH375ByteWrite( ); /* 向文件写入数据 */ mStopIfError( i ); }
mCmdParam.Close.mUpdateLen = 1; /* 自动计算文件长度,以字节为单位写文件,建议让程序库关闭文件以便自动更新文件长度 */ i = CH375FileClose( ); mStopIfError( i );
LED_WR_INACT( );