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

📄 taskproc.cpp

📁 湖北水文黄石试点集中器代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	     if(ParaFromCenter1.wlscpara == 0)
	     {
	  	     i = Ack_Right_ReadSendCondition( 0x02, APPSERVER1 );  //通知第一个中心,发送条件有变化

	  	     if(i>0) ParaFromCenter1.wlscpara=1;
	  	     else {if(GetKPState==LOCK) printf("Svr_1_2\n");} //add by wuhuan 2006.6.5 
	  	     	
	  	     //StartTick = CurrentTick;	  	  	
	  	     return 2;
	     }  
	  
	     if(ParaFromCenter1.rfivtpara == 0)
	     {
	  	     i = Ack_Right_Read_interval_time_of_gatherdata(0x01, APPSERVER1 ); //通知第一个中心,发送条件有变化   

	  	     if(i>0) ParaFromCenter1.rfivtpara=1;
	  	     else {if(GetKPState==LOCK) printf("Svr_1_3\n");} //add by wuhuan 2006.6.5 
	  	  	
	  	  	 //StartTick = CurrentTick;
	  	     return 3;
	     }  

	     if(ParaFromCenter1.wlivtpara == 0)
	     {
	  	     i = Ack_Right_Read_interval_time_of_gatherdata(0x02, APPSERVER1 ); //通知第一个中心,发送条件有变化  

	  	     if(i>0) ParaFromCenter1.wlivtpara=1;
	  	     else {if(GetKPState==LOCK) printf("Svr_1_4\n");} //add by wuhuan 2006.6.5 
	  	     
	  	     //StartTick = CurrentTick;
	  	     return 4;
	     }	
	 
	  }
	
	  if(TCPManager[1]->GetConnState()==OPEN)
	  {  

	      if(ParaFromCenter2.rfscpara == 0)
	      {
	  	     i = Ack_Right_ReadSendCondition( 0x01, APPSERVER2 );  //通知第二个中心,发送条件有变化
	  	     if(i>0) ParaFromCenter2.rfscpara=1;
	  	     else {if(GetKPState==LOCK) printf("Svr_2_1\n");} //add by wuhuan 2006.6.5 
	  	  	
	  	  	 //StartTick = CurrentTick;
	  	     return 5;
	      }
	  
	      if(ParaFromCenter2.wlscpara == 0)
	      {
	  	     i = Ack_Right_ReadSendCondition( 0x02, APPSERVER2 );  //通知第二个中心,发送条件有变化
	  	     if(i>0) ParaFromCenter2.wlscpara=1;
	  	     else {if(GetKPState==LOCK) printf("Svr_2_2\n");} //add by wuhuan 2006.6.5
	  	     
	  	     //StartTick = CurrentTick;
	  	     return 6;
	      }  
	  
	      if(ParaFromCenter2.rfivtpara == 0)
	      {
	  	     i = Ack_Right_Read_interval_time_of_gatherdata(0x01, APPSERVER2 ); //通知第二个中心,发送条件有变化 
	  	     if(i>0) ParaFromCenter2.rfivtpara=1;
	  	     else {if(GetKPState==LOCK) printf("Svr_2_3\n");} //add by wuhuan 2006.6.5
	  	  	 
	  	  	 //StartTick = CurrentTick;
	  	     return 7;
	      }  

	      if(ParaFromCenter2.wlivtpara == 0)
	      {
	  	     i = Ack_Right_Read_interval_time_of_gatherdata(0x02, APPSERVER2 ); //通知第二个中心,发送条件有变化  
	  	     if(i>0) ParaFromCenter2.wlivtpara=1;
	  	     else {if(GetKPState==LOCK) printf("Svr_2_4\n");} //add by wuhuan 2006.6.5
	  	  	
	  	  	 //StartTick = CurrentTick;
	  	     return 8;
	      }	
	  
	  }
	
	 return 0;	  
}


int ManualFrameAnalysis( unsigned char *InStr )
{
    int i, j, len, HDdatalen;
    
    len=strlen(InStr);
    
    //if(InStr[12]!=' ')  return -1;
    	
    for( i=0; i<10; i++ )
     ManualTimeBuff[i] = InStr[2+i];   
    ManualTimeBuff[10] = '\0';
    
    for(i=0; i<4; i++)
    {
       if(InStr[13+i]==' ') break;    	
       HDFlgBuff[i] = InStr[13+i];
    }
    HDFlgBuff[i]='\0';
    
    HDdatalen = len-14-i;
    
    for( j=0; j<HDdatalen; j++ )
    {
    	 HDDataBuff[j] = InStr[14+i+j];
    }
    HDDataBuff[j]='\0';  
    
    return 0;
    
}

int ManualReport( unsigned char *GetInDataBuff,  unsigned char typeofdata, unsigned char datawktype, 
      unsigned char center )
{
	  int           r;
	  int           num,len;
	  unsigned char checksum = 0;
	  unsigned char cs_bytecount;
	  unsigned char i,j,k;
	  int           type_byte_len=0;
	  unsigned char real_len_of_data_region;
	  unsigned char num_of_fill_byte;	 
	  unsigned char *PutOutTemBuff;
	
	  PutOutTemBuff = TmpBuf; //让指针变量的地址指向TmpBuf    	  

/////////////////////////上报数据的固定格式	  
	  PutOutTemBuff[0]=	0x68;
	  PutOutTemBuff[1]=	DTUAddress[0];
	  PutOutTemBuff[2]=	DTUAddress[1];
	  PutOutTemBuff[3]=	typeofdata;    
	  PutOutTemBuff[4]=	0x68;        
	  
	  PutOutTemBuff[5]= 0x82;  //自报数据的功能码  
	  
	  PutOutTemBuff[6] = 4;    //数据域的长度4*8个字节
	  
	  PutOutTemBuff[7]= datawktype;

    for(i=0; i<10; i++)
      PutOutTemBuff[8+i] = ManualTimeBuff[i];   //add by wuhuan 2006.7.18

    PutOutTemBuff[18]= 0x20; //添加空格符
 
////////////////////////////////添加水情数据种类标识符 
    type_byte_len = strlen( HDFlgBuff );
    
    for( i=0; i<type_byte_len; i++ )
      PutOutTemBuff[19+i] = HDFlgBuff[i];
    
////////////////////////添加水情数据种类标识符结束
   
    PutOutTemBuff[19+type_byte_len]= 0x20; //添加空格符

//////////////////////////////////    
    len = strlen(GetInDataBuff);
    for(j=0; j<len; j++)
    {  
    	 //存放采集的数值,字符型数据格式
       PutOutTemBuff[20+type_byte_len+j]= GetInDataBuff[j];	 
    }	          
    
    PutOutTemBuff[20+type_byte_len+len]= 0x20;  //添加空格符 

    PutOutTemBuff[21+type_byte_len+len]= 0x4E;  //添加固定格式的数据域结束字符
       
    PutOutTemBuff[22+type_byte_len+len]= 0x4E;  //添加固定格式的数据域结束字符   
   
    real_len_of_data_region = 16+type_byte_len+len;    //数据域的长度,<=32个字节    
    
    num_of_fill_byte = 32-real_len_of_data_region;
    
    for(k=0; k<num_of_fill_byte; k++)
      PutOutTemBuff[7 + real_len_of_data_region + k]= 0x00;
  
/////////////////////////////计算校验和  
		cs_bytecount = PutOutTemBuff[6]*8 + 7;
		for( i=0; i < cs_bytecount; i++ )
	 	checksum += PutOutTemBuff[i];   
	 	
	 	PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
	 	
	 	PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR;  //帧结束标志	 

//////////////////////////////数据打包结束

    PutOutTemBuff[cs_bytecount+2]= '\0';

    r = Send_to_Single_Svr(PutOutTemBuff, center, cs_bytecount+2); //向应用端发送数据
    
    return r;	 	 
	
}

int ConvertCharTimeToIntTime( char *InTime, char *OutTime )
{
	 int i;
	 
	 for(i=0; i<5; i++)
    OutTime[i]=(InTime[0+2*i]-48)*10 + InTime[1+2*i]-48;
   OutTime[5]='\0';
   
   return 0;

}

int ConvertIntTimeToCharTime( char *OutTime )
{   
	  char string[10]; 
	  
	  struct time t;
    struct date d;
    	
///////////////////////////////////////给上报的数据包中添加时间
	  getdate( &d ); //取系统的时间
	  gettime( &t ); 	         

//添加年		
    itoa(d.da_year,string,10);  //把整型转换成十进制字符型,存放在string字符串中
	  OutTime[0]=	string[2];  
	  OutTime[1]=	string[3];  

//添加月份
    itoa(d.da_mon,string,10); //把整型转换成十进制字符型,存放在string字符串中
    if(strlen(string)<2)
    {
    	 OutTime[2]='0';   //月份少于两个字节前面补零
	     OutTime[3]= string[0];
	  }
	  else 
	  {
    	 OutTime[2]= string[0];	 
	     OutTime[3]= string[1];	 
	  }  

//添加日期
    itoa(d.da_day,string,10); //把整型转换成十进制字符型,存放在string字符串中
    if(strlen(string)<2)
    {
    	 OutTime[4]='0';  //日期少于两个字节前面补零
	     OutTime[5]= string[0];
	  }
	  else
	  {
    	 OutTime[4]= string[0];	 
	     OutTime[5]= string[1];	 
	  } 	  

//添加小时 	
    itoa(t.ti_hour,string,10); //把整型转换成十进制字符型,存放在string字符串中
    if(strlen(string)<2)
    {
    	 OutTime[6]='0';  //小时数少于两个字节前面补零
	     OutTime[7]= string[0];
	  }
	  else 
	  {
    	 OutTime[6]= string[0];	 
	     OutTime[7]= string[1];	 
	  } 

//添加分钟
    itoa(t.ti_min,string,10);  //把整型转换成十进制字符型,存放在string字符串中
    if(strlen(string)<2)
    {
    	 OutTime[8]='0';   //分钟数少于两个字节前面补零
	     OutTime[9]= string[0];
	  }
	  else 
	  {
    	 OutTime[8]= string[0];	 
	     OutTime[9]= string[1];	 
	  }	 
	  
/*//添加秒钟
    itoa(t.ti_sec,string,10);  //把整型转换成十进制字符型,存放在string字符串中
    if(strlen(string)<2)
    {
    	 OutTime[10]='0';   //分钟数少于两个字节前面补零
	     OutTime[11]= string[0];
	  }
	  else
	  {
    	 OutTime[10]= string[0];	 
	     OutTime[11]= string[1];	 
	  }*/
/////////////////////////////////////////////添加时间结束  

    return 1;

}

int ConvertHDFlgToIvtime( char *HDFlg )
{	
	  int GatherIvTime=0;
	  
	  if(strcmp(HDFlg, "PN01")==0)  GatherIvTime = 0x0001;
	  else if(strcmp(HDFlg, "PN05")==0)  GatherIvTime = 0x0005;
	  else if(strcmp(HDFlg, "PN10")==0)  GatherIvTime = 0x000A;
	  else if(strcmp(HDFlg, "PN15")==0)  GatherIvTime = 0x000F;
	  else if(strcmp(HDFlg, "PN30")==0)  GatherIvTime = 0x001E;
	  else if(strcmp(HDFlg, "P1")==0)  GatherIvTime = 0x003C;
	  else if(strcmp(HDFlg, "P2")==0)  GatherIvTime = 0x0078;
	  else if(strcmp(HDFlg, "P3")==0)  GatherIvTime = 0x00B4;
	  else if(strcmp(HDFlg, "P6")==0)  GatherIvTime = 0x0168;
	  else if(strcmp(HDFlg, "P12")==0)  GatherIvTime = 0x02D0;
	  else if(strcmp(HDFlg, "P24")==0)  GatherIvTime = 0x05A0;  	
	  else 
	  {  
	  	 if(GetKPState==LOCK) printf("no match GatherIvTime\n");
	  	 return 0;
	  }
	  	
	  return GatherIvTime;
		
}

int ManualDataProc(  )
{
	 int GatherIvTime;
	 char tmptimebuff[10];
	 
	 if(strlen(ManualWLBuff)>0) 
	 {
	 	  ManualFrameAnalysis( ManualWLBuff );
	 	  ConvertCharTimeToIntTime( ManualTimeBuff, tmptimebuff );
	 	  
	    SaveWaterLevelData( "Water.dat", HDDataBuff, tmptimebuff ,'M');	
	    
	    ManualWLBuff[0]='\0';
	    
	    
	 } 
	 	
	 if(strlen(ManualRFBuff)>0) 
	 {
	 	  ManualFrameAnalysis( ManualRFBuff );
	 	  ConvertCharTimeToIntTime( ManualTimeBuff, tmptimebuff );	 
	 	  GatherIvTime = ConvertHDFlgToIvtime( HDFlgBuff );	  
	    SaveRainfallData( "Rain.dat", HDDataBuff, tmptimebuff, GatherIvTime,'M' );
	    
	    ManualRFBuff[0] = '\0';	

	 }	

   return 0;
}


⌨️ 快捷键说明

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