📄 dataproc.c~
字号:
Fclose(fp);
break;
}
perror("File read error!");
} else { (loadedMesg.tmpFkInfo)[i].index = i+1; printf("Index is %d.\n",(loadedMesg.tmpFkInfo)[i].index); printf("Temp File content:FeedBack Sign %X \n",loadedMesg.tmpFkInfo[i].fkxx.FeedBackSign ); } Fclose( fp ); fp = Fopen( "FKXX.data","a+"); for( i= 0; i< tmpFKXX1; i++ ) Fwrite( &( (loadedMesg.tmpFkInfo)[i].fkxx),LEN_FKXX,1,fp ); Fclose( fp ); remove( "FKtmp1.data"); tmpFKXX1 = 0; free( loadedMesg.tmpFkInfo ); Pthread_mutex_unlock( &fLock.FKtmp1_FLOCK ); } else if( stat( "FKtmp2.data",&buf ) == 0 )//file FKtmp2 exist { Pthread_mutex_lock( &fLock.FKtmp2_FLOCK ); //Add all the newly messages in the temp file2 to main data file loadedMesg.tmpFkInfo = (FKINFO *)malloc( LEN_FKINFO * tmpFKXX1); fp = Fopen( "FKtmp2.data","r+"); for( i=0; i<tmpFKXX2; i++)
if( fread( &( (loadedMesg.tmpFkInfo)[i].fkxx), LEN_FKXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
break;
}
perror("File read error!");
} else { (loadedMesg.tmpFkInfo)[i].index = i+1; printf("Index is %d.\n",(loadedMesg.tmpFkInfo)[i].index); printf("Temp File content:FeedBack Sign %X \n",loadedMesg.tmpFkInfo[i].fkxx.FeedBackSign ); } Fclose( fp ); fp = Fopen( "FKXX.data","a+"); for( i= 0; i< tmpFKXX2; i++ ) Fwrite( &( (loadedMesg.tmpFkInfo)[i].fkxx),LEN_FKXX,1,fp ); Fclose( fp ); remove( "FKtmp2.data"); free( loadedMesg.tmpFkInfo ); tmpDWXX2 = 0; Pthread_mutex_unlock( &fLock.FKtmp2_FLOCK ); } break; }//End of switch printf("Leave function MergeRecords!\n"); }void SaveData( SOURCETYPE sType, MESGTYPE mesgType, int count ){ FILE *fp; LOCINFO **p; COMMINFO **q; FKINFO *m; printf("Enter SaveData() !\n"); switch( mesgType ) { case TYPE_OF_DWXX: if( *(loadedMesg.pLocInfo) != NULL) { fp = Fopen( "DWXX.data","w+"); rewind( fp ); for( p = loadedMesg.pLocInfo; p<(loadedMesg.pLocInfo+count); p++ ) if( p != NULL ) { printf("Saved Index is %d.\n",(*p)->index); Fwrite( &((*p)->dwxx),LEN_DWXX,1,fp ); } Fclose( fp ); } else printf(" Null DWXX records in the current memory to save !\n"); break; case TYPE_OF_TXXX: if( sType == INBOX ) { if( *(loadedMesg.pCommInfo) != NULL) { fp = Fopen( "TXINDEX.data","w+"); rewind( fp ); for( q = loadedMesg.pCommInfo; q<(loadedMesg.pCommInfo+count); q++ ) if( q != NULL ) Fwrite( &((*q)->txIndex),LEN_TXINDEX ,1,fp ); Fclose( fp ); } } else if( sType == OUTBOX ) { if( *(loadedMesg.pCommInfoOut) != NULL) { fp = Fopen( "TXINDEX_OUT.data","w+"); rewind( fp ); for( q = loadedMesg.pCommInfoOut; q<(loadedMesg.pCommInfoOut+count); q++ ) if( q != NULL ) Fwrite( &((*q)->txIndex),LEN_TXINDEX ,1,fp ); Fclose( fp ); } } break; case TYPE_OF_ICXX: if( loadedMesg.icInfo != NULL) { Pthread_mutex_lock( &fLock.IC_FLOCK ); fp = Fopen( "ICXX.data","w+"); rewind( fp ); Fwrite( &(loadedMesg.icInfo->icxx),LEN_ICXX,1,fp ); Fclose( fp ); Pthread_mutex_unlock( &fLock.IC_FLOCK ); } else printf(" Null ICXX records in the current memory to save !\n"); break; case TYPE_OF_ZJXX: break; case TYPE_OF_SJXX: break; case TYPE_OF_BBXX: if( loadedMesg.bbInfo != NULL) { Pthread_mutex_lock( &fLock.BB_FLOCK ); fp = Fopen( "BBXX.data","w+"); rewind( fp ); Fwrite( &(loadedMesg.bbInfo->bbxx),LEN_BBXX,1,fp ); Fclose( fp ); Pthread_mutex_unlock( &fLock.BB_FLOCK ); } else printf(" Null BBXX records in the current memory to save !\n"); break; case TYPE_OF_FKXX: if( loadedMesg.fkInfo != NULL ) { //printf("Total saved data is %d\n",sizeof(BBXX) ); //printf("Total saved data is %d\n",LEN_FKXX ); printf("Total saved data is %d\n",sizeof(ICXX) ); fp = Fopen( "FKXX.data","w+"); rewind( fp ); for( m = loadedMesg.fkInfo; m<(loadedMesg.fkInfo+count); m++ ) if( m != NULL ) Fwrite( &( m->fkxx),LEN_FKXX,1,fp ); Fclose( fp ); } else printf(" Null FKXX records in the current memory to save !\n"); break; }}//The value of index must start from 0void SaveLockSymbol( SOURCETYPE sType, int index ){ FILE *fp; COMMINFO **p; if( sType == INBOX ) { if( loadedMesg.pCommInfo != NULL ) { p = loadedMesg.pCommInfo; Pthread_mutex_lock( &fLock.TXINDEX_FLOCK ); printf("Saved LockSymbol item's index is %d\n ",(*(p+index))->index); printf("Saved LockSymbol item's LockSymbol is %d\n ",(*(loadedMesg.pCommInfo+index))->txIndex.lockSymbol); printf("Size of LEN_TXINDEX %d\n",LEN_TXINDEX); fp = Fopen( "TXINDEX.data","r+"); fseek( fp, ((*(p+index))->index-1)* LEN_TXINDEX, SEEK_SET ); Fwrite( &((*(p+index))->txIndex),LEN_TXINDEX ,1,fp ); Fclose( fp ); //perror("Error"); Pthread_mutex_unlock( &fLock.TXINDEX_FLOCK ); } } else if( sType == OUTBOX ) { if( loadedMesg.pCommInfoOut != NULL ) { p = loadedMesg.pCommInfoOut; printf("Saved LockSymbol item's index is %d\n ",(*(p+index))->index); printf("Saved LockSymbol item's LockSymbol is %d\n ",(*(loadedMesg.pCommInfoOut+index))->txIndex.lockSymbol); printf("Size of LEN_TXINDEX %d\n",LEN_TXINDEX); fp = Fopen( "TXINDEX_OUT.data","r+"); fseek( fp, ((*(p+index))->index-1)* LEN_TXINDEX, SEEK_SET ); Fwrite( &((*(p+index))->txIndex),LEN_TXINDEX ,1,fp ); Fclose( fp ); } } }/* Set the IC card's setting */void SetICInfo( void ){}/* Get the information of IC card's setting */int GetICInfo( void ){ int result; struct stat buf; FILE *fp; printf("Enter function: GetICInfo() now.\n"); Pthread_mutex_lock( &fLock.IC_FLOCK ); MergeRecords( TYPE_OF_ICXX ); if( stat( "ICXX.data",&buf ) == 0 ) { loadedMesg.icInfo = (ICINFO *)malloc( LEN_ICINFO * 1); fp = Fopen( "ICXX.data","r+"); rewind(fp);
if( fread( &( (loadedMesg.icInfo)[0].icxx), LEN_ICXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
}
perror("File read error!");
} else { printf("Main File content:servFrequency %X SRCID %lX\n",loadedMesg.icInfo[0].icxx.servFrequency,loadedMesg.icInfo[0].icxx.srcID ); } Fclose( fp ); result = 1; } else result = 0; Pthread_mutex_unlock( &fLock.IC_FLOCK ); return result;}/* Get the information of version's setting */int GetBBInfo( void ){ int result; struct stat buf; FILE *fp; printf("Enter function: GetBBInfo() now.\n"); Pthread_mutex_lock( &fLock.BB_FLOCK ); MergeRecords( TYPE_OF_BBXX ); if( stat( "BBXX.data",&buf ) == 0 ) { loadedMesg.bbInfo = (BBINFO *)malloc( LEN_BBINFO * 1); fp = Fopen( "BBXX.data","r+"); rewind(fp);
if( fread( &( (loadedMesg.bbInfo)[0].bbxx), LEN_BBXX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
}
perror("File read error!");
} else { printf("Main File content: SRCID %lX\n",loadedMesg.bbInfo[0].bbxx.srcID ); } Fclose( fp ); result = 1; } else result = 0; Pthread_mutex_unlock( &fLock.BB_FLOCK ); return result;}/* Read the new overflowed mesg from circular buffer */void ReadOverFlowMesg( void ){ printf("Enter ReadOverFlowMesg( )\n"); Pthread_mutex_lock( &cntOverFlow_Mutex ); printf("In cntOverFlow( )\n"); Pthread_mutex_lock(&numOverFlow_Mutex); printf("In numOverFlow( )\n"); if( DEQUE_CIROVERFLOW( &overFlowMesg ) != 0) { printf("New OverFlowmessage srcID is %ld\n ",overFlowMesg->srcID); printf("New OverFlowmessage Content is %s\n",overFlowMesg->message); } else { printf("Fail to get data for the empty queue!\n "); Pthread_mutex_unlock(&numOverFlow_Mutex); Pthread_mutex_unlock( &cntOverFlow_Mutex ); return; } printf("In ReadOverFlowMesg( )\n"); if( (cntOverFlow-1) >= 0) cntOverFlow--; if( cntOverFlow == 0) overFlowStarter = 0; numOverFlow--; Pthread_mutex_unlock(&numOverFlow_Mutex); Pthread_mutex_unlock( &cntOverFlow_Mutex );}//The value of count shall be the instant value of total TXXX//GetCount(INBOX, TYPE_OF_TXXX)void ReadNewMesg( int count ){ FILE *fp; COMMINFO **q; UnloadData( INBOX, TYPE_OF_TXXX); printf("--Enter func ReadNewMesg!--\n"); Pthread_mutex_lock( &countNewMesg_Mutex ); Pthread_mutex_lock( &fLock.TXINDEX_FLOCK ); MergeRecords( TYPE_OF_TXXX ); /* Alloacate the memory of message array.*/ loadedMesg.commInfo = (COMMINFO *)malloc( LEN_COMMINFO ); printf("total num %d countNewMesg is %d\n",count,countNewMesg); fp = Fopen( "TXINDEX.data","r+"); fseek( fp, (count-countNewMesg)*LEN_TXINDEX,SEEK_SET );
if( fread( &( (loadedMesg.commInfo)[0].txIndex), LEN_TXINDEX, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
}
perror("File read error!");
} else { (loadedMesg.commInfo)[0].index = count-countNewMesg+1; printf("Index is %d.\n",(loadedMesg.commInfo)[0].index); printf("File content:Hour %d Min %d SRCID %lX,MainIndex is %d LockSymbol %d \n",loadedMesg.commInfo[0].txIndex.hour,loadedMesg.commInfo[0].txIndex.minute,loadedMesg.commInfo[0].txIndex.srcID, loadedMesg.commInfo[0].txIndex.mainIndex,loadedMesg.commInfo[0].txIndex.lockSymbol ); //printf(" Address of the message is %lX.\n",&loadedMesg.commInfo[0] ); } Fclose( fp ); /* Alloacate the memory of address array for message */
loadedMesg.pCommInfo = malloc( LEN_P_COMMINFO ); //printf(" Address of the address array head is %lX.\n",loadedMesg.pCommInfo ); *(loadedMesg.pCommInfo) = &loadedMesg.commInfo[0]; //printf(" Address of the message pointer is %lX.\n",*(loadedMesg.pCommInfo) ); countNewMesg--; Pthread_mutex_unlock( &fLock.TXINDEX_FLOCK ); Pthread_mutex_unlock( &countNewMesg_Mutex );}/* Display the content of message,if it's size bigger than 20 bytes, *//* we will read the big data block from the main data file without delay. */void ReadFromTXMAIN( SOURCETYPE sType, int index ){ FILE *fp; COMMINFO **p; if( sType == INBOX ) { //UnloadData( INBOX, TYPE_OF_TXXX); if( loadedMesg.pCommInfo != NULL ) { p = loadedMesg.pCommInfo; //Read the big data block from the main data file fp = Fopen( "TXMAIN.data","r+"); fseek( fp, ( ((*(p+index))->txIndex.mainIndex)-1 )* MAXSIZE, SEEK_SET );
if( fread( &(loadedMesg.Message), MAXSIZE, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
}
perror("File read error!");
} else { printf("Main File content: %s\n",loadedMesg.Message ); } Fclose( fp ); } } else if( sType == OUTBOX ) { if( loadedMesg.pCommInfoOut != NULL ) { p = loadedMesg.pCommInfoOut; //Read the big data block from the main data file fp = Fopen( "TXMAIN_OUT.data","r+"); fseek( fp, ( ((*(p+index))->txIndex.mainIndex)-1 )* MAXSIZE, SEEK_SET );
if( fread( &(loadedMesg.Message), MAXSIZE, 1, fp) != 1)
{
if( feof(fp))
{
Fclose(fp);
}
perror("File read error!");
} else { printf("Main File content: %s\n",loadedMesg.Message ); } Fclose( fp ); } }}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -