⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ewsd00.bak

📁 西门子交换机话单处理
💻 BAK
字号:
//EWSD Exchange bill convert Programe 	格式转换程序
//Write by Sunzhengxin @2002-07-04
//conveter Bin file to text file 	转换二进制文件到文本文件
//source file  :     0000002.BIN
#define MARK_REC  0x84
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <io.h>
struct BillTime{
		int year;
		int month;
		int day;
		int hour;
		int min;
		int sec;
		long int leng;
		char flag;
	};

struct TrunkGroup{
		char incomtg[10];
		int  itno;
		char iflag;
		char outgotg[10];
		int  otno;
		char oflag;
	};

struct SpecData{
		char SpecData[32];
		char flag;
	};

struct ConnectBillCell{
		int  CBC;
		char flag;
	};

struct ServiceQuarlityData{
		int  resion;
		int  tt;
		char flag;
	};

struct BeforeAnaswerTime{
		int  tone;
		int  answ;
		char flag;
	};

struct A_class{
		int  leng;
		char A_No[40];
		int  a_class;
		char flag;
	};

struct ConnectID{
		long cid;
		char flag;

	};

struct B_Number{
		int  leng;
		char B_No[40];
		char flag;
	};

struct RecordFlag{
		char f12;
		char f14;
		char f18;
		char f24;
		char f25;
		char f33;
		char f37;
		char f38;
	};
struct RecordTypeAndState{
		int  type;
		int  state;
	};
void 	 _szx_disp(void);
void  Mark_H64(unsigned char *,int *,struct BillTime *);		//YYMMDDHHMMSS & total_Seconds
void  Mark_H69(unsigned char *,int *,struct TrunkGroup *);		//InComming_Trunk
void  Mark_H6a(unsigned char *,int *,struct TrunkGroup *);		//OutGoing_Trunk
void  Mark_H75(unsigned char *,int *,struct SpecData *);		//Special_Data
void  Mark_H67(unsigned char *,int *,struct ConnectBillCell *);		//Connect Billing Cell
void  Mark_H82(unsigned char *,int *,struct ServiceQuarlityData *);	//Service Quarlity Data
void  Mark_H86(unsigned char *,int *,struct BeforeAnaswerTime *);	//Before Anaswer time
void  Mark_H8e(unsigned char *,int *,struct A_class *);	  		//A_Class
void  Mark_H6e(unsigned char *,int *,struct ConnectID *);  		//Connect ID
void  Mark_Ha8(unsigned char *,int *,struct B_Number *);  		//B_Number

main(int  argc,char *argv[])
{

FILE *fi,*fo;
struct BillTime 		BillT;
struct A_class 			Acl;
struct B_Number 		Bno;
struct TrunkGroup 		Tkg;
struct SpecData 		SpecD;
struct ConnectBillCell 		CBC;
struct ServiceQuarlityData 	SQD;
struct BeforeAnaswerTime 	BeAT;
struct ConnectID  		ConnID;
struct RecordFlag		Flag;
struct RecordTypeAndState	RecTS;
unsigned char RecBuffer[512];
long ptr_BillCur;
int  ptr_BuffCur;
int  Rec_length;
int  Rec_Mark;
char Rec_flag,Rec_type,Pack_mark;
char filename[20],c;
int  i,j,m,n;

  fi=fopen("00000002","rb");
  fo=fopen("BILL.TXT","wt");
  ptr_BuffCur=0;

  fseek(fi,0,SEEK_SET);		fseek(fo,0,SEEK_SET);

  //c=0x84;
  Rec_Mark=0;
  BillT.flag=0;
  Tkg.iflag=0;
  Tkg.oflag=0;
  SpecD.flag=0;
  CBC.flag=0;
  SQD.flag=0;
  BeAT.flag=0;
  Acl.flag=0;
  ConnID.flag=0;
  Bno.flag=0;

  while(!(feof(fi))){
    fread(RecBuffer,512,1,fi); //Get Data to Buffer
    for (ptr_BuffCur;ptr_BuffCur<512;ptr_BuffCur++){
      if((RecBuffer[ptr_BuffCur]==0x84)&&(!Rec_Mark)){
	Rec_Mark=1;
	i=ptr_BuffCur;
	Rec_length=(int)RecBuffer[ptr_BuffCur+1];
	Flag.f12=(RecBuffer[ptr_BuffCur+3]&0x02)>>1;
	Flag.f14=(RecBuffer[ptr_BuffCur+3]&0x08)>>3;
	Flag.f18=(RecBuffer[ptr_BuffCur+3]&0x80)>>7;
	Flag.f24=(RecBuffer[ptr_BuffCur+4]&0x08)>>3;
	Flag.f25=(RecBuffer[ptr_BuffCur+4]&0x10)>>4;
	Flag.f33=(RecBuffer[ptr_BuffCur+5]&0x04)>>2;
	Flag.f37=(RecBuffer[ptr_BuffCur+5]&0x40)>>6;
	Flag.f38=(RecBuffer[ptr_BuffCur+5]&0x80)>>7;
	RecTS.type=(int)(RecBuffer[ptr_BuffCur+6]&0xf0);
	RecTS.state=(int)(RecBuffer[ptr_BuffCur+6]&0x0f);
 //	Rec_flag=(int)RecBuffer[ptr_BuffCur+3];
 //	Rec_type=RecBuffer[ptr_BuffCur+6];
 //	Pack_mark=RecBuffer[ptr_BuffCur+8];
	ptr_BuffCur+=8;
	for(ptr_BuffCur;ptr_BuffCur<Rec_length+i;ptr_BuffCur++){
	  switch (RecBuffer[ptr_BuffCur]){

	    case 0x64: //YYMMDDHHMMSS & total_Seconds
	       Mark_H64(&RecBuffer[0],&ptr_BuffCur,&BillT);
	       break;

	    case 0x69: //InComming Trunk
	       Mark_H69(&RecBuffer[0],&ptr_BuffCur,&Tkg);
	       break;

	    case 0x6a: //OutGoing Trunk
	       Mark_H6a(&RecBuffer[0],&ptr_BuffCur,&Tkg);
	       break;

	    case 0x75:  //Special Data
	       Mark_H75(&RecBuffer[0],&ptr_BuffCur,&SpecD);
	       break;

	    case 0x67: //Connect Billing Cell
	       Mark_H67(&RecBuffer[0],&ptr_BuffCur,&CBC);
	       break;

	    case 0x82: //Service Quarlity Data
	       Mark_H82(&RecBuffer[0],&ptr_BuffCur,&SQD);
	       break;

	    case 0x86: //Before Anaswer time
	       Mark_H86(&RecBuffer[0],&ptr_BuffCur,&BeAT);
	       break;

	    case 0x8e: //A Class
	       Mark_H8e(&RecBuffer[0],&ptr_BuffCur,&Acl);
	       break;

	    case 0x6e: //Connect ID
	       Mark_H6e(&RecBuffer[0],&ptr_BuffCur,&ConnID);
	       break;

	    case 0xa8: //B Number
	       Mark_Ha8(&RecBuffer[0],&ptr_BuffCur,&Bno);
	       break;


	  }	//End of switch

	}	//End of "for" Packet scan

	if (Rec_Mark) {	//Output Record data

	   printf("%02i-%02i-%02i  %02i:%02i:%02i %8i",BillT.year,BillT.month,
	       BillT.day,BillT.hour,BillT.min,BillT.sec,BillT.leng);
	   printf("\t%s %s %s\n",Tkg.outgotg,Acl.A_No,Bno.B_No);

	   fprintf(fo,"%02i-%02i-%02i  %02i:%02i:%02i %8i",BillT.year,BillT.month,
	       BillT.day,BillT.hour,BillT.min,BillT.sec,BillT.leng);
	   fprintf(fo,"\t%s %s %s\n",Tkg.outgotg,Acl.A_No,Bno.B_No);
	   Rec_Mark=0;
	  //m=ftell(fi);
	  ptr_BuffCur-512;
	  fseek(fi,ptr_BuffCur-512,SEEK_CUR);
	  if(!fread(RecBuffer,512,1,fi))
	    break;
	  //m=ftell(fi);
	  ptr_BuffCur=-1;
	  i=0;
	  //continue;
	}	//End of "if"  Record data output

      }		//End of "if"  Buffer Record scan

	if(ptr_BuffCur>50){         //Cat Zero data
	  //m=ftell(fi);
	  //j=ptr_BuffCur-512;
	  fseek(fi,ptr_BuffCur-512,SEEK_CUR);
	  if(!fread(RecBuffer,512,1,fi))
	    break;
	  //m=ftell(fi);
	  ptr_BuffCur=-1;
	  i=0;
	  continue;
	}


    }   //Eof "for"  Buffer Rec.
    //printf("%i\t\n",ptr_BuffCur);

  };


  fclose(fi);
  fclose(fo);

return(0);
}

void _szx_disp(void)
{
	printf("Bill Convert Program. Write by Sun Zheng-xin@2002.");
	printf("\n\rConvert Tape file to Format Textfile .");
	printf("\n\r!!!For EWSD Bill Only!!!");
	printf("\r\nFormat:\r\n\tEWSDB2T.EXE [BinBillFile] [outfile]");
	printf("\r\r");
	printf("\r\n\nExample:EWSDB2T.EXE Bill225.BIN OutBill225.TXT");
	printf("\r\n\n\n");
}


//YYMMDDHHMMSS & total_Seconds
void  Mark_H64(unsigned char *Buff,int *ptr,struct BillTime *pBillT)
{
  pBillT->year  = Buff[*ptr+1];
  pBillT->month = Buff[*ptr+2];
  pBillT->day   = Buff[*ptr+3];
  pBillT->hour  = Buff[*ptr+4];
  pBillT->min   = Buff[*ptr+5];
  pBillT->sec   = Buff[*ptr+6];
  pBillT->leng  = Buff[*ptr+8]+Buff[*ptr+9]*256+Buff[*ptr+10]*65536;
  pBillT->flag  = 1;
  *ptr+=10;

}

//InComming_Trunk
void  Mark_H69(unsigned char *Buff,int *ptr,struct TrunkGroup *pTkg)
{
  int n;

  for(n=0;n<6;n++)
  pTkg->incomtg[n]=Buff[*ptr+n+1];
  pTkg->incomtg[n]=0x00;
  pTkg->iflag=1;
  *ptr+=8;

}

//OutGoing_Trunk
void  Mark_H6a(unsigned char *Buff,int *ptr,struct TrunkGroup *pTkg)
{
  int n;

  for(n=0;n<6;n++)
  pTkg->outgotg[n]=Buff[*ptr+n+1];
  pTkg->outgotg[n]=0x00;
  pTkg->oflag=1;
  *ptr+=8;

}

//Special_Data
void  Mark_H75(unsigned char *Buff,int *ptr,struct SpecData *pSpecD)
{


  pSpecD->flag=1;
  *ptr+=32;

}

//Connect Billing Cell
void  Mark_H67(unsigned char *Buff,int *ptr,struct ConnectBillCell *pCBC)
{

  pCBC->flag=1;
  *ptr+=3;
}

//Service Quarlity Data
void  Mark_H82(unsigned char *Buff,int *ptr,struct ServiceQuarlityData *pSQD)
{

  pSQD->flag=1;
  *ptr+=4;
}

//Before Anaswer time
void  Mark_H86(unsigned char *Buff,int *ptr,struct BeforeAnaswerTime *pBeAT)
{

  pBeAT->flag=1;
  *ptr+=5;
}

//A_Class
void  Mark_H8e(unsigned char *Buff,int *ptr,struct A_class *pAcl)
{
  int n;

  pAcl->leng=(int)Buff[*ptr+1];

  for(n=0;n<(pAcl->leng-5);n++){
    pAcl->A_No[2*n]=((Buff[*ptr+5+n]&0xf0)/16)+0x30;
    pAcl->A_No[2*n+1]=(Buff[*ptr+5+n]&0x0f)+0x30;
  }
  pAcl->A_No[2*n]=0x00;
  pAcl->flag=1;
  *ptr+=pAcl->leng-1;
}

//Connect ID
void  Mark_H6e(unsigned char *Buff,int *ptr,struct ConnectID *pCID)
{

  pCID->flag=1;
  *ptr+=5;
}

//B_Number
void  Mark_Ha8(unsigned char *Buff,int *ptr,struct B_Number *pBno)
{
  int n;

  pBno->leng=(int)Buff[*ptr+1];
  for(n=0;n<(pBno->leng-5);n++){
    pBno->B_No[2*n]=((Buff[*ptr+5+n]&0xf0)/16)+0x30;
    pBno->B_No[2*n+1]=(Buff[*ptr+5+n]&0x0f)+0x30;
  }
  pBno->B_No[2*n]=0x00;
  pBno->flag=1;
  *ptr+=pBno->leng-1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -