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

📄 ibmsgateway.c

📁 一个uclinux下进行网络数据处理,及串口读取,CGI配置
💻 C
📖 第 1 页 / 共 2 页
字号:
  }  printf("the local server socket(fd=%d) is now listening...\n",localserver_fd);  //creat the udp socket  udp_fd=socket(AF_INET,SOCK_DGRAM,0);  if (udp_fd==-1)  {     printf("create device message socket error.\n");     exit(1);  }  fcntl(udp_fd,F_SETFL,O_NONBLOCK);  bzero(&udp_addr,sizeof(udp_addr));  udp_addr.sin_family=AF_INET;  udp_addr.sin_port=htons(atoi(deviceport));  inet_aton(read_net.serverip,&udp_addr.sin_addr);  printf("the udp socket(fd=%d) is now already...\n",udp_fd);  //open comm port  com_fd=opencommport("/dev/ttyS1",read_com);  printf("the serial comport(fd=%d) is now already...\n",com_fd);  if (com_fd>max_fd)   max_fd=com_fd;  FD_ZERO(&readfds);  FD_SET(localserver_fd,&readfds);  FD_SET(com_fd,&readfds);  sendbuff=(char *)malloc(sizeof(char)*6);  while (1)  {    sleep(1);    if (isdigital==1)    {	    strcpy(sendbuff,"$016\r");    }    if (isdigital==0)    {	      strcpy(sendbuff,"#030\r");    }    isdigital=!isdigital;    write(com_fd,sendbuff,5);     select(max_fd+1,&readfds,NULL,NULL,NULL);    if (FD_ISSET(com_fd,&readfds))    {	FD_SET(localserver_fd,&readfds);        FD_SET(com_fd,&readfds);	numbytes=read(com_fd,recvbuff,sizeof(recvbuff));	for (i=0;i<numbytes;i++)		printf("%d ",recvbuff[i]);	printf("\n");	t=time(NULL);	gt=localtime(&t);	sprintf(str_t,"%d-%d-%d %d:%d:%d",(*gt).tm_year+1900,(*gt).tm_mon+1,(*gt).tm_mday,(*gt).tm_hour,(*gt).tm_min,(*gt).tm_sec);        if ((numbytes==8) &&  (recvbuff[0]=='!') && (recvbuff[7]=='\r'))	{             strncpy(mytmp,recvbuff+1,4);	     mytmp[4]='\0';	     strcpy(processdata,"");	     strcatall(processdata,"0x",mytmp,NULL);	   //  printf("%s\n",processdata);	     mytmpd=strtol(processdata,NULL,0);                 if (FindDeviceNo(point,pointnumber,"06.1",deviceno)==1)	     {		     strcpy(strbuf,"");		     if ((mytmpd & 0x0001)==0x0001)			     strcpy(s,"1");		     else			     strcpy(s,"0");		     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.1",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);		     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));							     }             if (FindDeviceNo(point,pointnumber,"06.2",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0002)==0x0002)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.2",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.3",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0004)==0x0004)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.3",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.4",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0008)==0x0008)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.4",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.5",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0010)==0x0010)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.5",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.6",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0020)==0x0020)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.6",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.7",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0040)==0x0040)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.7",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.8",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0080)==0x0080)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.8",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.9",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0100)==0x0100)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.9",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.10",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0200)==0x0200)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.10",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.11",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0400)==0x0400)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.11",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.12",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x0800)==0x0800)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.12",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.13",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x1000)==0x1000)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.13",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.14",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x2000)==0x2000)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.14",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.15",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x4000)==0x4000)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.15",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }             if (FindDeviceNo(point,pointnumber,"06.16",deviceno)==1)             {                     strcpy(strbuf,"");                     if ((mytmpd & 0x8000)==0x8000)                             strcpy(s,"1");                     else                             strcpy(s,"0");                     strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"06.16",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);                     sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));             }	}	if ((numbytes==9) &&  (recvbuff[0]=='>') && (recvbuff[8]=='\r')) 	{		if (FindDeviceNo(point,pointnumber,"03.1",deviceno)==1)		{			strncpy(s,recvbuff+1,7);	//		f=atof(s)*25;	//		printf("%f\n",f);	//		gcvt(f,8,s);			strcpy(strbuf,"");			strcatall(strbuf,TokenSeparator,token,TokenSeparator,DeviceSeparator,deviceno,DeviceSeparator,DataSeparator,"03.1",DataSeparator,DataSeparator,s,DataSeparator,DataSeparator,str_t,DataSeparator,NULL);			sendto(udp_fd,strbuf,strlen(strbuf),0,(struct sockaddr *)&udp_addr,sizeof(struct sockaddr));		}	}    }    if (FD_ISSET(localserver_fd,&readfds))    {         FD_SET(localserver_fd,&readfds);         FD_SET(com_fd,&readfds);         sin_size=sizeof(struct sockaddr_in);         if ((new_fd=accept(localserver_fd,(struct sockaddr *)&their_addr,&sin_size))==-1)         {                continue;         }         printf("local server socket get connection from %s.\n",inet_ntoa(their_addr.sin_addr));         close(new_fd);	        }  }}int main(int argc,char **argv){  int conn_fd;  struct sockaddr_in serv_addr;  int ret,re;   char str[20]="";  char buf[20]="";  char *msgid;  int i;  alarm_index=0;  //read the point file  pointnumber=read_data_from_file("/etc/config/pointfile",point);  if (pointnumber==0)  {     printf("cannot open the pointfile.\n");     exit(1);  }  printf("pointnumber:%d\n",pointnumber);  //read the communication parameters file  re=read_comdata_from_file("/etc/config/param.conf",&read_net,&read_com);  if (re==0)  {     printf("cannot read the param file.\n");     exit(1);  }  printf("serverip:%s\n",read_net.serverip);  printf("serverport:%s\n",read_net.serverport);  printf("baudrate:%s\n",read_com.baudrate);  printf("parity:%s\n",read_com.parity);  printf("databits:%s\n",read_com.databits);  printf("stopbits:%s\n",read_com.stopbits);  printf("handshaking:%s\n",read_com.handshaking);  //request token,deviceport,localserverport  token=(char *)malloc(20*sizeof(char));  msgid=(char *)malloc(20*sizeof(char));  deviceport=(char *)malloc(20*sizeof(char));  localserverport=(char *)malloc(20*sizeof(char));  conn_fd=socket(AF_INET,SOCK_STREAM,0);  if (conn_fd==-1)  {    printf("create socket error.\n");    exit(1);  }  bzero(&serv_addr,sizeof(serv_addr));  serv_addr.sin_family=AF_INET;  serv_addr.sin_port=htons(atoi(read_net.serverport));  inet_aton(read_net.serverip,&serv_addr.sin_addr);  ret=connect(conn_fd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr));  if (ret==-1)  {    printf("cannot connect to the server.\n");    printf("switch to single monitor mode.\n"); //   processcomdata();  }  strcatall(str,MessageSeparator,REQUEST_TOKEN,MessageSeparator,DataSeparator,"fire",DataSeparator,NULL);  send(conn_fd,str,strlen(str),0);  //request the token num  recv(conn_fd,buf,sizeof(buf),0);  strparse(buf,MessageSeparator,msgid);  strparse(buf,DataSeparator,token);  if (strcmp(msgid,REQUEST_TOKEN)==0)  {     printf("token:%s\n",token);     strcpy(str,"");     strcatall(str,MessageSeparator,REQUEST_SEND_DEVICE_MESSAGE_REMOTE_PORT,MessageSeparator,DataSeparator,token,DataSeparator,NULL);     send(conn_fd,str,strlen(str),0);  //request the device message send port     recv(conn_fd,buf,sizeof(buf),0);     strparse(buf,MessageSeparator,msgid);     strparse(buf,DataSeparator,deviceport);     if (strcmp(msgid,REQUEST_SEND_DEVICE_MESSAGE_REMOTE_PORT)==0)     {        printf("device port:%s\n",deviceport);        strcpy(str,"");        strcatall(str,MessageSeparator,REQUEST_LOCAL_SERVER_PORT,MessageSeparator,DataSeparator,token,DataSeparator,NULL);        send(conn_fd,str,strlen(str),0);  //request the local server port        recv(conn_fd,buf,sizeof(buf),0);        strparse(buf,MessageSeparator,msgid);        strparse(buf,DataSeparator,localserverport);        if (strcmp(msgid,REQUEST_LOCAL_SERVER_PORT)==0)        {           printf("local server port:%s\n",localserverport);        }        else        {           printf("receive local server port error.\n");           exit(1);        }     }     else     {        printf("receive device port error.\n");        exit(1);     }  }  else  {     printf("receive token number error.\n");     exit(1);  }  processdata();  free(token);  free(msgid);  free(deviceport);  free(localserverport);  exit(0);}

⌨️ 快捷键说明

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