往U盤中寫入多個文件,當(dāng)文件“WAVE1.BIN”已經(jīng)存在時,往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);//調(diào)用itoa,itoa是把整數(shù)num的值以10進制轉(zhuǎn)化為字符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 ); /* 創(chuàng)建新文件名在根目錄下 */ i = CH375FileCreate( ); /* 新建文件并打開,如果文件已經(jīng)存在則先刪除后再新建 */ mStopIfError( i );
Uart_Printf("\n aaaaawrite???"); goto USBstartwrite;//文件不存在,則已經(jīng)建立了文件,把程序跳到USBstartwrite } else /*找到文件*/ { // printf ("locate\n"); //mCmdParam.Locate.mSectorOffset = 0xFFFFFFFF; /*將文件指針移到文件末尾*/ //i=CH375FileLocate(); //mStopIfError( i ); num=num+1;//文件存在,則nmu值加1,再創(chuàng)建文件,跳到rewrite執(zhí)行 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, 計算文件的扇區(qū)數(shù),因為讀寫是以扇區(qū)為單位的 */ Uart_Printf( "Write\n" );
while(1){ if(SecCount>(FILE_DATA_BUF_LEN>>9)) { mCmdParam.Write.mSectorCount = (FILE_DATA_BUF_LEN/512); /* 寫入所有扇區(qū)的數(shù)據(jù) */ 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( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); if(mCmdParam.Write.mSectorCount<(FILE_DATA_BUF_LEN>>9))break; } Uart_Printf( "Modify\n" ); mCmdParam.Modify.mFileAttr = 0xff; /* 輸入?yún)?shù): 新的文件屬性,為0FFH則不修改 */ mCmdParam.Modify.mFileTime = 0xffff; /* 輸入?yún)?shù): 新的文件時間,為0FFFFH則不修改,使用新建文件產(chǎn)生的默認時間 */ mCmdParam.Modify.mFileDate = MAKE_FILE_DATE( 2007, 5, 14 ); /* 輸入?yún)?shù): 新的文件日期: 2004.05.18 */ mCmdParam.Modify.mFileSize = NewSize; /* 輸入?yún)?shù): 如果原文件較小,那么新的文件長度與原文件一樣長,否則被RAM所限,如果文件長度大于64KB,那么NewSize必須為UINT32 */ i = CH375FileModify( ); /* 修改當(dāng)前文件的信息,修改日期和長度 */ mStopIfError( i ); Uart_Printf( "Close\n" ); mCmdParam.Close.mUpdateLen = 0; /* 不要自動計算文件長度,如果自動計算,那么該長度總是512的倍數(shù) */ i = CH375FileClose( ); mStopIfError( i );
但是經(jīng)過這樣修改后,每次都只寫進“WAVE1.BIN”,請高手幫幫忙