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

📄 ewsdmpt2.c.bak

📁 西门子EWSD程控交换机OMC接口通讯程序源代码
💻 BAK
字号:

#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/termio.h>
#include "init.h"

#define MINCHAR    13 
#define C_SIZE	86
#define  L_SIZE  256

char 	teleno[12];
int	use_scrn;
int	mapfd,port;
char	portname[20];
char    comm[L_SIZE];
char Krelease_char,Kconnect_char,Ksend_char;
char    BLANK_C,CONNECT_C,RELEASE_C,SEND_C;
char    PASS[10],USER[10],COMM[80],tjtime[20];
int	fd[MAX_PORT_NO];
struct  con
       {
		char  	send_char;
		char	    connect_char;
		char	    release_char;
		char	    iogtype[9];
        char    omcport[7];
        char    office_name[6];
	   }conf;

main(argc,argv)
int argc;
char *argv[];
{
int	i;
int	fp;
int	pid;
        BLANK_C=0x00;
        CONNECT_C=0x02;
        SEND_C=0x0a;
        RELEASE_C=0x04;
        strcpy(PASS,"SYSTEM-66");
        strcpy(USER,"EWSD6666");
        strcpy(COMM,"DISPALARM;\n");
	init();
/*
	connect_file();
	nap(1000);
	user_file();
	nap(1000);
	passwd_file();
	nap(1000);
	command_file();
        
*/	
          printf("###############################################\n");
          printf("##########exec time %d #######################\n",i);
          printf("###############################################\n");
          		
	  exec_comm(fp,"DISPALARM;\n");
	  scandok();
	  
	  printf("###############################################\n");
          printf("##########exec time %d #######################\n",i);
          printf("###############################################\n");
	  
	  exec_comm(fp,"DISPSU:DN=2191143;\n");
	  scandok();
 	
	
}
/****************************************************************/

init()
{
struct configst	conff[MAX_PORT_NO];
int	n=0;
FILE	*confd;

	if ((confd=fopen(CONF_FILE,"rb"))==NULL){
		err_exit(ARGV_0,"config open",errno,0);
	}
	if((n=fread(conff,CONFIGLEN,MAX_PORT_NO,confd))<=0){
		err_exit(ARGV_0,"config read",errno,0);
	}
	fclose(confd);
	if (conff[port].data_type==OPERAT) 
        {		
		conf.release_char=conff[port].release_char;
                conf.connect_char=conff[port].connect_char;
                conf.send_char=conff[port].send_char;
                strcpy(conf.office_name,conff[port].office_name);
	        strcpy(conf.iogtype,conff[port].iogtype);
                strcpy(conf.omcport,conff[port].omcport);
	 }/***if OPERAT******/	
 return;
}

/****************************************************************/
exec_comm(int fd1,char *comm)
{int i,t,resul;
 char c;


star:
  t=0;
  resul=0;
  release_file();
  nap(1000);
  connect_file();
  nap(1000);
  
 while(resul<=0 && t<10)
 {	
  resul=justsend("<",0);
  if(resul<0 || t>1)
  {
   release_file();
   nap(1000);
   connect_file();
   nap(1000);
  }    
  resul=justsend("USERID",1)+justsend("<",0);
   /* printf("scan userid or < is==%d\n",resul);*/
  i=0;
  while(resul==0 && i<5)
  {
   i++;
   nap(1000);
   /*  printf("scan USERID or  <  ==%d time /n",i); */
   resul=justsend("USERID",1)+justsend("<",0);
  }
   t++;
 } /* send f5 to connect the SWITCH */ 
 if(resul==0) return(0);
 resul=justsend("USERID",1);
 if(resul>0)
 {
  user_file();
  nap(1000);
  resul=justsend("##",0);
  i=0;
  while(resul==0 && i<10)
  {
   i++;
   nap(1000);
   /*  printf("scan USERID or  <  ==%d time /n",i); */
   resul=justsend("##",0);
  }
  if(resul>0)  passwd_file();
  else goto star;
  nap(1000);
 }  /*** sent userid and password  ***/
  resul=justsend("<",0);
  i=0;
  while(resul==0 && i<10)
  {
   i++;
   nap(1000);
   /*  printf("scan USERID or  <  ==%d time /n",i); */
   resul=justsend("<",0);
  }
  if(resul>0)  
  {
   command_file();
   nap(3000);
   i=0;
   resul=0;
   while(resul==0 && i<10)
   {
    i++;
    nap(2000);
    resul=justsend("END",0);
   }
   return(1);
  } 
  else goto star;
}


/****************************************************************/
connect_file()
{
 int fdd,i;
            /******creat  the send char  file  **************/
            if((fdd=open("/u/omc/tmp/send_f5",O_CREAT|O_RDWR,0666))<0)
            { perror("Open !!!");
              exit(0);
            }
            printf("send_f5 creat \n");
            write(fdd,&conf.omcport,6);
            write(fdd,&BLANK_C,1);
            write(fdd,&CONNECT_C,1);
            for(i=1;i<=159;i++) write(fdd,&BLANK_C,1);
            close(fdd);
            system("cp /u/omc/tmp/send_f5  /u/omc/tmp/send_file");
}
/****************************************************************/

release_file()
{
 int fdd,i;
            /******creat  the release  char  file  **************/
             if((fdd=open("/u/omc/tmp/send_f1",O_CREAT|O_RDWR,0666))<0)
             { perror("Open !!!");
               exit(0);
             }
             printf("send_f1 \n");
              write(fdd,&conf.omcport,6);
              write(fdd,&BLANK_C,1);
              write(fdd,&RELEASE_C,1);
              for(i=1;i<=159;i++) write(fdd,&BLANK_C,1);
              close(fdd);
              system("cp /u/omc/tmp/send_f1  /u/omc/tmp/send_file");
}

/****************************************************************/
command_file()
{
 int fdd,len,i;
            /******creat  the command char  file  **************/
             if((fdd=open("/u/omc/tmp/send_comm",O_CREAT|O_RDWR,0666))<0)
             { perror("Open !!!");
               exit(0);
             }
             len=strlen(COMM);
             printf("send_comm creat \n");
             write(fdd,&conf.omcport,6);
             write(fdd,&BLANK_C,1);
             write(fdd,&COMM,len);
             write(fdd,&SEND_C,1);
             len=167-8-len;
             for(i=1;i<=len;i++) write(fdd,&BLANK_C,1);
             close(fdd);
             system("cp /u/omc/tmp/send_comm  /u/omc/tmp/send_file");
}
/****************************************************************/
passwd_file()
{
 int fdd,len,i;
            /******creat  the command char  file  **************/
             if((fdd=open("/u/omc/tmp/send_pass",O_CREAT|O_RDWR,0666))<0)
             { perror("Open !!!");
               exit(0);
             }
             len=strlen(PASS);
             printf("send_pass \n");
             write(fdd,&conf.omcport,6);
             write(fdd,&BLANK_C,1);
             write(fdd,&PASS,len);
             write(fdd,&SEND_C,1);
             len=167-8-len;
             for(i=1;i<=len;i++) write(fdd,&BLANK_C,1);
             close(fdd);
             system("cp /u/omc/tmp/send_pass  /u/omc/tmp/send_file");
}
/****************************************************************/
user_file()
{
 int fdd,len,i;
            /******creat  the command char  file  **************/
             if((fdd=open("/u/omc/tmp/send_user",O_CREAT|O_RDWR,0666))<0)
             { perror("Open !!!");
               exit(0);
             }
             len=strlen(USER);
             printf("send_user creat \n");
             write(fdd,&conf.omcport,6);
             write(fdd,&BLANK_C,1);
             write(fdd,&USER,len);
             write(fdd,&SEND_C,1);
             len=167-8-len;
             for(i=1;i<=len;i++) write(fdd,&BLANK_C,1);
             close(fdd);
             system("cp /u/omc/tmp/send_user  /u/omc/tmp/send_file");
}
/****************************************************************/

justsend(str,mod)
char *str;
int mod;
{char buff[L_SIZE],endbuff[L_SIZE],portname[6];
 FILE   *fp;
 char   fname[50];
 long	time(),lg;
 struct	tm *localtime(),*tim;

 lg=time(&lg);
 tim=localtime(&lg);
 strcpy(portname,conf.omcport);
 sprintf(fname,"%s/data/%sO%s_%d%d%d%d%d",PATH,conf.office_name,&portname[3],tim->tm_year,(tim->tm_mon+1)/10,(tim->tm_mon+1)%10,tim->tm_mday/10,tim->tm_mday%10);
 printf("%s\n",fname);
 if((fp=fopen(fname,"r"))==NULL)
 {printf("open rawfile error ! \n");
  fclose(fp);
  nap(30000);
  return(-1);
 }

 fgets(endbuff,L_SIZE,fp);
 while(!feof(fp))
 {
   strcpy(buff,endbuff);
   fgets(endbuff,L_SIZE,fp);
  }
 fclose(fp);
 printf("raw buff:%s\n",buff);
 printf("raw endbuff:%s\n",endbuff);
 if(mod==1) strcpy(endbuff,buff);
 if(sub_str(endbuff,str)>0)
    return(1);
 else
    return(0);
}

/****************************************************************/
scandok()
{char portname[6],rawbuff[21][L_SIZE];
 FILE   *fp;
 char   fname[50],hour[6];
 long	time(),lg;
 struct	tm *localtime(),*tim;
 int i,lastok,succok,teleok;
 int yy,mm,dd;
 char mon_name[12][4]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};


 lg=time(&lg);
 tim=localtime(&lg);
 strcpy(portname,conf.omcport);
 sprintf(fname,"%s/data/%sO%s_%d%d%d%d%d",PATH,conf.office_name,&portname[3],tim->tm_year,(tim->tm_mon+1)/10,(tim->tm_mon+1)%10,tim->tm_mday/10,tim->tm_mday%10);
 printf("%s\n",fname);
 if((fp=fopen(fname,"r"))==NULL)
 {printf("open rawfile error ! \n");
  fclose(fp);
  nap(30000);
  return(-1);
 }
 for(i=0;i<21;i++)
   if(!feof(fp))
     fgets(rawbuff[i],L_SIZE,fp);
   else
     break;
 for(;!feof(fp);)
 {
  for(i=1;i<21;i++)
     strcpy(rawbuff[i-1],rawbuff[i]);
  if(!feof(fp))   fgets(rawbuff[20],L_SIZE,fp);
 }
 for(i=0;i<21;i++)
     printf("%s",rawbuff[i]);
 lastok=0;
 teleok=0;
 succok=0;
 for(i=0;i<20;i++)
 { if(sub_str(rawbuff[i],"LAST REPORT")>0)  lastok=1;
   if(sub_str(rawbuff[i],teleno)>0)  teleok=1;
   if(sub_str(rawbuff[i],"SUCCESSFUL")>0)
   {
    succok=1;
    if(sub_str(rawbuff[i],"NOT SUCCESSFUL")>0)  succok=2;
   }
   if(sub_str(rawbuff[i],"Y.L.CHENGBEI")>0)
   {sscanf(rawbuff[i],"%*s %4d-%2d-%2d %5s",&yy,&mm,&dd,hour);
    sprintf(tjtime,"%d %s %d %5s:00",yy,mon_name[mm-1],dd,hour);
   }
 }
 printf("lastok=%d,teleok=%d,succok=%d,time=%s\n",lastok,teleok,succok,tjtime);
 /****1 is success,2 is not success,3 is can't know  */
 if(lastok==1&&teleok==1&&succok==1)
    return(1);
 else
   if(lastok==1&&teleok==1&&succok==2)
      return(2);
   else
      return(3);
}

/****************************************************************/
 sub_str(str1,str2)
char *str1,*str2;
{
	int l1,l2,i;
	l1=strlen(str1);
	l2=strlen(str2);
	if(l1<l2) return(-1);
	for(i=0;i<l1;i++) {
		if(l1-i<l2) return(-1);
		if(!strncmp(str1+i,str2,l2)) return(i);
	}
	return(-1);
}

⌨️ 快捷键说明

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