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

📄 taskproc.cpp

📁 湖北水文黄石试点集中器代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        	else  if (Rftimingwakeupflg) TrigType=0x32;
             else  if (RfIvtwakeupflg) TrigType=0x33;
             	 else  if (Rfalarmflg)    TrigType=0x34;
             	   else  TrigType=0x35;
             	 	
             	
  	  if (ReadRainfallData( "Rain.dat",Center )!=0)
  	  	{
  	  		Rfdwkzbflg=0;
  	  		Rftimingwakeupflg=0;
  	  		RfIvtwakeupflg=0;
  	  		Rfalarmflg=0;
  	  		
  	  		}
  	  		else
  	  			{
  	           Rainfall = OutRainfallregdata.rainfall; 
              RGatherIvtime=OutRainfallregdata.type_of_Ivtime;
              
              if (OutRainfallregdata.datatype=='M')
              	 {
              	    datatype=33;
                 }
              	else  if (OutRainfallregdata.datatype=='Z')
              		{
              	  		datatype=0x01;
              			
              		}	
              	else   if (OutRainfallregdata.datatype=='J')
              			{
              				TrigType=0x99;
              				datatype=0x01;
              		  }
               	
               i = Up_Positive_transfer_data( Rainfall, datatype, TrigType, Center, RGatherIvtime );
               
               if (i<0&&(i!=-999))  ModifyRainHead("Rain.dat", 1,0 ,Center);
              
            }
  		
  	
///////////////////////////////////////////////////////

    if(Wlzcflg==1)         //正常应答召测水位
    {
        Wlzcflg=0;

        Up_passive_transfer_data( CurrentWaterLevel, 0x02, WhoSendZcwlCMD );
           	    	  
        return 8;
    }
    
    ////////////////////////////////////上报水位

        if (Wldwkzbflg) TrigType=0x31;
        	else  if (Wltimingwakeupflg) TrigType=0x32;
             else  if (WlIvtwakeupflg) TrigType=0x33;
             	 else  if (Wlalarmflg)    TrigType=0x34;
             	   else  TrigType=0x35;
             	 	
             	
  	  if (ReadWaterLevelData( "water.dat",Center )!=0)
  	  	{
  	  		Wldwkzbflg=0;
  	  		Wltimingwakeupflg=0;
  	  		WlIvtwakeupflg=0;
  	  		Wlalarmflg=0;
  	  		
  	  		}
  	  		else
  	  			{
  	           WaterLevel = OutWaterLevelregdata.water_level;
              
              if (OutWaterLevelregdata.datatype=='M')
              	 {
              	    datatype=34;
                 }
              	else  if (OutWaterLevelregdata.datatype=='Z')
              		{
              	  		datatype=2;
              			
              		}	
              	else   if (OutWaterLevelregdata.datatype=='J')
              			{
              				TrigType=0x99;
              				datatype=2;
              		  }
               	
               i = Up_Positive_transfer_data( WaterLevel, datatype, TrigType, Center, 0 );
               
               if (i<0&&(i!=-999))  ModifyWaterHead("water.dat", 1, 0 ,Center);
            }
  		
  	

          	    
     //////////////////////////////////////////////////////
    if(Pzrfscflg==1)       //降雨量发送条件配置成功
    {
         Pzrfscflg=0; 
                    
         ConfigSendCondition( NewRfScCmdDataBuf ); //本地保存雨量发送条件
         Save_SendCondition( 0x01 );  //保存雨量发送条件到配置文件中
         Ack_Right_ConfigSendCondition( 0x01, WhoSendPzrfscCMD ); //正常应答配置雨量发送条件            	    	  
           	    	  
         if(WhoSendPzrfscCMD==APPSERVER1)
         {
           	  i = Ack_Right_ReadSendCondition( 0x01, APPSERVER2 );   //通知第二个中心,发送条件有变化
           	  if(i<0) ParaFromCenter2.rfscpara = 0;
         }
         else  
         {
           	  i = Ack_Right_ReadSendCondition( 0x01, APPSERVER1 );  //通知第一个中心,发送条件有变化 
           	  if(i<0) ParaFromCenter1.rfscpara = 0;   
         } 	
           	    	  
         return 6;    	                      
    }                                                                              
                
    //////////////////////////////////////////////////////
    if(Pzrfivtflg==1)      //降雨量采集间隔时间配置成功
    {
        Pzrfivtflg=0;
                	  
        Write_interval_time_of_gatherdata( NewRfIvtCmdDataBuf ); //本地保存雨量采集间隔时间
        Save_GDIvtime( 0x01 ); //保存降雨量采集间隔时间到配置文件中
         Ack_Right_Write_interval_time_of_gatherdata( 0x01, WhoSendPzrfivtCMD ); //正常应答配置降雨量数据采集的间隔时间
                	                  	  
         if(WhoSendPzrfivtCMD==APPSERVER1)
         {
             i = Ack_Right_Read_interval_time_of_gatherdata(0x01, APPSERVER2 );   //通知第二个中心,发送条件有变化
             if(i<0) ParaFromCenter2.rfivtpara = 0;
             //if(GetKPState==LOCK) printf("i=%d\n",i);
         }
         else 
         {
             i = Ack_Right_Read_interval_time_of_gatherdata(0x01, APPSERVER1 ); //通知第一个中心,发送条件有变化
             if(i<0) ParaFromCenter1.rfivtpara = 0;
             //if(GetKPState==LOCK) printf("i=%d\n",i);
         }
                	  
          return 7;
                	  	 
     }           
     
/////////////////////////////////////////////////以下是水位处理函数              	    

     if(Pzwlscflg==1)        //水位发送条件配置成功
     {
          Pzwlscflg=0; 
                    
          ConfigSendCondition( NewWlScCmdDataBuf ); //本地保存水位发送条件
          Save_SendCondition( 0x02 );  //保存水位发送条件到配置文件
          Ack_Right_ConfigSendCondition( 0x02, WhoSendPzwlscCMD ); //正常应答配置水位发送条件 
           	    	             	    	  
          if(WhoSendPzwlscCMD==APPSERVER1)
          {
           	   i = Ack_Right_ReadSendCondition( 0x02, APPSERVER2 );   //通知第二个中心,发送条件有变化
           	   if(i<0) ParaFromCenter2.wlscpara = 0;
          }
          else  
          {           	    	  	
           	   Ack_Right_ReadSendCondition( 0x02, APPSERVER1 );  //通知第一个中心,发送条件有变化   
               if(i<0) ParaFromCenter1.wlscpara = 0;
          }
                    
          return 13;           	    	  	            	    	                      
     }                   

     if(Pzwlivtflg==1)       //水位采集间隔时间配置成功
     {
          Pzwlivtflg=0;
                	  
          Write_interval_time_of_gatherdata( NewWlIvtCmdDataBuf ); //本地保存水位采集间隔时间
          Save_GDIvtime( 0x02 ); //保存水位采集间隔时间到配置文件中
          Ack_Right_Write_interval_time_of_gatherdata( 0x02, WhoSendPzwlivtCMD ); //正常应答配置水位数据采集的间隔时间                	  
                	  
          if(WhoSendPzwlivtCMD==APPSERVER1)
          {                	  	
               i = Ack_Right_Read_interval_time_of_gatherdata(0x02, APPSERVER2 );   //通知第二个中心,发送条件有变化
               if(i<0) ParaFromCenter2.wlivtpara = 0;
          }
          else 
          {
               i = Ack_Right_Read_interval_time_of_gatherdata(0x02, APPSERVER1 ); //通知第一个中心,发送条件有变化
               if(i<0) ParaFromCenter1.wlivtpara = 0;
          }
                	  
          return 14;
     }

        
        if((ReportRFTimeoutFlg%4)==1)  //采集器上报降雨量超时报警
        { 
        	 ReportRFTimeoutFlg++;
        	 GetSystemTime( AlarmTimeBuff );
           FunctionAlarm( 0x08, 0x89 );
           
           return 16;
        }	
        
        if((ReportWLTimeoutFlg%4)==1)  //采集器上报水位超时报警
        { 
        	 ReportWLTimeoutFlg++;
        	 GetSystemTime( AlarmTimeBuff );
           FunctionAlarm( 0x09, 0x89 );
           
           return 17;
        }    	              
    

       if(Wlzcflg==-1)               //正常应答召测水位超时
       {   
        Wlzcflg=0;
        Ack_Wrong_passive_transfer_data( 0x02, WhoSendZcwlCMD ); //异常应答召测水位数据
        FunctionAlarm( 0x0B, 0x89 );
        
        return 19;
        } 

      if(Pzrfscflg==-1)            //正常应答配置雨量发送条件超时
      {
    	 Pzrfscflg = 0;
       if(GetKPState==LOCK) printf("pzrfscflg=%d\n", Pzrfscflg );  
       Ack_Wrong_ConfigSendCondition( 0x01, WhoSendPzrfscCMD ); //异常应答配置雨量发送条件
       FunctionAlarm( 0x0C, 0x89 ); 
       
       return 20;   
           	    	              
      }       
        
        if(Pzwlscflg==-1)          //正常应答配置水位发送条件超时
       {
       Pzwlscflg=0;  
       Ack_Wrong_ConfigSendCondition( 0x02, WhoSendPzwlscCMD ); //异常应答配置水位发送条件
       FunctionAlarm( 0x0D, 0x89 ); 
       
       return 21;                    
       }  

    if(Pzrfivtflg==-1)            //正常应答配置雨量采集间隔时间超时
    {
       Pzrfivtflg=0;
       Ack_Wrong_Write_interval_time_of_gatherdata( 0x01, WhoSendPzrfivtCMD ); //异常应答配置雨量数据采集的间隔时间
       FunctionAlarm( 0x0E, 0x89 );
       
       return 22;
    } 

      if(Pzwlivtflg==-1)         //正常应答配置水位采集间隔时间超时
      {
       Pzwlivtflg=0;
       Ack_Wrong_Write_interval_time_of_gatherdata( 0x02, WhoSendPzwlivtCMD );  //异常应答配置水位数据采集的间隔时间
       FunctionAlarm( 0x0F, 0x89 );
       
       return 23;
       }                
 
 
 /*   
    int GatherIvTime;
    char tmptimebuff[10];
    
    if(strlen(ManualRFBuff)>0)  
    {
    	  i = ManualReport( HDDataBuff, 0x21, 0x35, APPSERVER1 );
    	  if(i<0) 
    	  {
    	  	 Svr1MissRainfallDataFlg = 1;
    	  	 
	 	       ConvertCharTimeToIntTime( ManualTimeBuff, tmptimebuff );	 
	 	       GatherIvTime = ConvertHDFlgToIvtime( HDFlgBuff );  
	 	         	  	 
           SaveMissRainfallData( HDDataBuff, 0x35, APPSERVER1, tmptimebuff, GatherIvTime, IvtimeWakeUp[0]  ); 
	 	                    	  	 
    	  }
    	  
    	  i = ManualReport( HDDataBuff, 0x21, 0x35, APPSERVER2 );
    	  if(i<0) 
    	  {
    	  	 Svr2MissRainfallDataFlg = 1;
    	  	 
	 	       ConvertCharTimeToIntTime( ManualTimeBuff, tmptimebuff );	 
	 	       GatherIvTime = ConvertHDFlgToIvtime( HDFlgBuff );  
	 	         	  	 
           SaveMissRainfallData( HDDataBuff, 0x35, APPSERVER2, tmptimebuff, GatherIvTime, IvtimeWakeUp[0] ); 
	 	                    	  	 
    	  }   
    	  
    	 for( i=0; i<strlen(ManualRFBuff); i++ )
         ManualRFBuff[i] = '\0';	
         
    	  return 24;  
    }

    if(strlen(ManualWLBuff)>0) 
    {
       i = ManualReport( HDDataBuff, 0x22, 0x35, APPSERVER1 ); 
       if(i<0)
       {
       	   Svr1MissWaterLevelDataFlg = 1;
	 	       ConvertCharTimeToIntTime( ManualTimeBuff, tmptimebuff );

           SaveMissWaterLevelData( HDDataBuff, 0x35, APPSERVER1, tmptimebuff, IvtimeWakeUp[1] );	 	       
	 	       	       	  
       }   
       
       i = ManualReport( HDDataBuff, 0x22, 0x35, APPSERVER2 );
       if(i<0)
       {
       	   Svr2MissWaterLevelDataFlg = 1;
	 	       ConvertCharTimeToIntTime( ManualTimeBuff, tmptimebuff );

           SaveMissWaterLevelData( HDDataBuff, 0x35, APPSERVER2, tmptimebuff, IvtimeWakeUp[1] );	 	       
	 	       	       	  
       }  
       
       for( i=0; i<strlen(ManualWLBuff); i++ )
         ManualWLBuff[i] = '\0'; 
       
       return 25; 
    }     
 */   
    return 0;
                       
}



int KeepSameConfigPara(  )
{   
	  int i;
	  //static unsigned long  StartTick = 0;
	  //unsigned long    CurrentTick;   
	  
    //CurrentTick = clock( );
    	  
	  //if(CurrentTick < (StartTick + 3)) return 0;
	  
	  if(TCPManager[0]->GetConnState()==OPEN)
	  {
	  	 

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

⌨️ 快捷键说明

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