往U盘中写入多个文件,当文件“WAVE1.BIN”已经存在时,往U盘中写文件“WAVE2.BIN”依此类推.... 由于文件名一直在改变,所以处理了一下,处理部分如下: char string1[12],*string2,string3[4]; string1[0]='W'; string1[1]='A'; string1[2]='V'; string1[3]='E'; string3[0]='.'; string3[1]='B'; string3[2]='I'; string3[3]='N';
for(num=1;num!=1000;num++) { rewrite: itoa(num,string2,10);//调用itoa,itoa是把整数num的值以10进制转化为字符string2 strcat(string1,string2);//把string1和string2连在一起,并放在string1中 strcat(string1,string3);//把string1和string3连在一起,并放在string1中 //strcpy( (char *)mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C" ); strcpy( (char *)mCmdParam.Open.mPathName,string1); /* 文件名在?*/ i = CH375FileOpen( ); /* 打开文件 */ if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) { /* 没有找到文件 */ // printf( "Create\n" ); strcpy( (char *)mCmdParam.Create.mPathName, string1 ); /* 创建新文件名在根目录下 */ i = CH375FileCreate( ); /* 新建文件并打开,如果文件已经存在则先删除后再新建 */ mStopIfError( i );
Uart_Printf("\n aaaaawrite???"); goto USBstartwrite;//文件不存在,则已经建立了文件,把程序跳到USBstartwrite } else /*找到文件*/ { // printf ("locate\n"); //mCmdParam.Locate.mSectorOffset = 0xFFFFFFFF; /*将文件指针移到文件末尾*/ //i=CH375FileLocate(); //mStopIfError( i ); num=num+1;//文件存在,则nmu值加1,再创建文件,跳到rewrite执行 Uart_Printf("nummmm=%d\n",num); goto rewrite; } } USBstartwrite: USBbin_compose1(); pCodeStr=write_to_usb; Uart_Printf("filesize1=%d\n",filesize1); for ( k = 0; k!= filesize1; k ++ ) { FILE_DATA_BUF[k] = *pCodeStr; //break; //Uart_Printf("%d ",FILE_DATA_BUF[k] ); pCodeStr++; } NewSize = k; /* 新文件的长度 */ SecCount = (NewSize+511)/512; /* (NewSize+511)/512, 计算文件的扇区数,因为读写是以扇区为单位的 */ Uart_Printf( "Write\n" );
while(1){ if(SecCount>(FILE_DATA_BUF_LEN>>9)) { mCmdParam.Write.mSectorCount = (FILE_DATA_BUF_LEN/512); /* 写入所有扇区的数据 */ NewSize=FILE_DATA_BUF_LEN; } else { mCmdParam.Write.mSectorCount = SecCount; NewSize=k; } mCmdParam.WriteX.mDataBuffer = &FILE_DATA_BUF[0]; Uart_Printf( "mCmdParam.WriteX.mDataBuffer=%d\n",mCmdParam.WriteX.mDataBuffer); i = CH375FileWriteX( ); /* 向文件写入数据 */ mStopIfError( i ); if(mCmdParam.Write.mSectorCount<(FILE_DATA_BUF_LEN>>9))break; } Uart_Printf( "Modify\n" ); mCmdParam.Modify.mFileAttr = 0xff; /* 输入参数: 新的文件属性,为0FFH则不修改 */ mCmdParam.Modify.mFileTime = 0xffff; /* 输入参数: 新的文件时间,为0FFFFH则不修改,使用新建文件产生的默认时间 */ mCmdParam.Modify.mFileDate = MAKE_FILE_DATE( 2007, 5, 14 ); /* 输入参数: 新的文件日期: 2004.05.18 */ mCmdParam.Modify.mFileSize = NewSize; /* 输入参数: 如果原文件较小,那么新的文件长度与原文件一样长,否则被RAM所限,如果文件长度大于64KB,那么NewSize必须为UINT32 */ i = CH375FileModify( ); /* 修改当前文件的信息,修改日期和长度 */ mStopIfError( i ); Uart_Printf( "Close\n" ); mCmdParam.Close.mUpdateLen = 0; /* 不要自动计算文件长度,如果自动计算,那么该长度总是512的倍数 */ i = CH375FileClose( ); mStopIfError( i );
但是经过这样修改后,每次都只写进“WAVE1.BIN”,请高手帮帮忙