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

📄 main.cpp.bak

📁 湖北水文黄石试点集中器代码
💻 BAK
📖 第 1 页 / 共 2 页
字号:
			  	 	    	     if((Currenttime.ti_min%Ivtime[1])!=0||Currenttime.ti_sec > 20)
			  	 	    	       Send_SyschroTime_to_GatherMachine(  );		
			  	 	    	       	  	 	    	     	 	            
			  	 	        }		  	 	        
			  	 	        else if(Rs485DataBuf[5]==0x88) //水位加报
			  	 	        {  
			  	 	        	 GetSystemTime(OutWaterLevelregdata.time);
			  	 	        	 SaveWaterLevelData( "Water.dat", waterlevelbuff[0], OutWaterLevelregdata.time, 'J');
			  	 	        	 
			  	 	        	 sprintf(CurrentWL,"\nAlmWL = %.2fm\n", atof(waterlevelbuff[0])/100 );
			  	 	        }		  	 	        				  	 	     	
			  	 	        	
			  	 	        SystemState = State_IfReport485Data;
			  	 	    }	  	 	    	    	 	  	
			  	 	    else 
			  	 	    {			  	 	    	
			  	 	    	 if(GetKPState==LOCK) printf("Frame format erro!!!\n");
			  	 	    	 SystemState = State_GatherData;			  	 	    	 
			  	 	    }	  
			  	 	    break;	 	  
			  	 	    	  
			  	 case State_IfReport485Data:  //处理采集器应答,加报,召测,数据触发
                IfReport485DataProc( Rs485DataBuf );
                SystemState = State_IfMalfunAlarm;
                break;
           
           case State_IfMalfunAlarm:  //检测采集器通信异常
                IfNeedMalfunctionAlarm(  );
                SystemState = State_IfFixTimeReportData;
                break;
                
           case State_IfFixTimeReportData: //间隔时间,定时自报
           	    FixTimeReportDataProc( );
           	    SystemState = State_Idle;
           	    break;
           	                    
	         case State_Idle:  	         	
	              if(TaskFlg==WaitingActive)        SystemState = State_CheckActCmd; 	  		     	    		   
   		          else if(TaskFlg==PPPConneting)    SystemState = State_SetPPPLink; 		   	
  		          else if(TaskFlg==NeedInitUART)    SystemState = State_ReInitUART; 		           		         
  		          else if(TaskFlg==FTPdownload)     SystemState = State_FTPdownload;
  		          else if(TaskFlg==MANUALDATA)      SystemState = State_CheckKeyPadInput;
	              break;       
	                                	     		         		
	         case State_CheckActCmd:	        
                if(CheckActCmd())  //检查是否有上线指令
                {
                	 TaskFlg = PPPConneting;
                	 SystemState = State_SetPPPLink;
                }
	         	    else SystemState = SystemState = State_GatherData;
	         	    break;

	         case State_CheckKeyPadInput:   //人工置数  
	         	    ManualDataProc( );
	         	    TaskFlg = PPPConneting;
	         	    SystemState = State_SetPPPLink;
	         	    break;
	         	    	
           case State_SetPPPLink:           	           	 
           	    PPPState = PPP_Running( ); 
           	    Timer_PPPLinkCntFlg = 1;
           	    
           	    		 
           	    if( PPPState!=PPPLINKUP ) 
           	    {    
           	        if(GetKPState==LOCK) printf( "PPPState = %d\r", PPPState ); 
           	        if(Timer_PPPLinkCnt > PPPCONNTIMEOUTCNT)  SystemState = State_SetPPPLinkTimeout;
           	        else SystemState = State_GatherData; 
           	    }
           	    else  
           	    {
           	        Timer_PPPLinkCnt = 0;
           	        Timer_PPPLinkCntFlg = 0;          	    	
           	    	  SystemState = State_SetTCPLink; 
           	    }         	    
           	    break;
           	    
           case State_SetPPPLinkTimeout: 
           	    Timer_PPPLinkCnt = 0;
           	    Timer_PPPLinkCntFlg = 0;
           	    CloseAllTCPConn( );
           	    TaskFlg = NeedInitUART;
           	    SystemState = State_GatherData;
           	    break;
           	    
           case State_SetTCPLink:  
                GetTCPState = TCP_Running( );  
                Timer_TCPLinkCntFlg = 1; 		   		   
   		          if( GetTCPState==TCPOPEN )  //GPRS goto internet
   		          {   
           	        Timer_TCPLinkCnt = 0;
           	        Timer_TCPLinkCntFlg = 0;    		          	
   		          	  SystemState = State_HeartBeat ;     /////转移到心跳
   		          }
   		          else if( GetTCPState!=TCPFAIL ) 
   		          {    		          	
   		          	  if(Timer_TCPLinkCnt > TCPCONNTIMEOUTCNT)  SystemState = State_SetTCPLinkTimeout;
   		          	  else SystemState = State_GatherData;
   		          }
   		          else  SystemState = State_SetTCPLinkTimeout;
   		          	
	       			  break;  
	       			  
	       	 case State_SetTCPLinkTimeout:
           	    Timer_TCPLinkCnt = 0;
           	    Timer_TCPLinkCntFlg = 0;  
           	    CloseAllTCPConn( );
           	    TaskFlg = NeedInitUART;	       	 	    	   
           	    SystemState = State_GatherData;
           	    break;
	       	
	       	 case State_HeartBeat:  
	       		    HeartBeat_Proc( ); 
           	    SystemState = State_TransferData;
           	    break;	       		     
	       		    
           case State_TransferData:
 
                if(TCPManager[0]->GetConnState( )==OPEN)   TansferData_to_Center(APPSERVER1, waterlevelbuff[0]); 
                if(TCPManager[1]->GetConnState( )==OPEN)   TansferData_to_Center(APPSERVER2, waterlevelbuff[0]); 	                                

                KeepSameConfigPara(  );
                
                SystemState = State_ReciveCommand;
                break;                             
                                                                 	            	    	       	  	              	    
           case State_ReciveCommand:
                CmdStrLen = Get_from_Svr( CmdDataBuf );
                if(CmdStrLen > 0) 
                {   
                	  SystemState = State_CmdPro;
                }
                else 
                {   
                	if((TCPManager[0]->GetConnState( )==OPEN)&&(TCPManager[1]->GetConnState( )==OPEN))
                	{
                		 if (TCPManager[0]->TalkIsTimeout()&&TCPManager[1]->TalkIsTimeout())
                	   {                   	
                	  	   CloseAllTCPConn( );      	         	
	                       TaskFlg = NeedInitUART;
       	  	             if(GetKPState==LOCK) printf("Talk Timeout,Close TCP!\n");                	  	                 	     
                	    }   
                	 }
                	 else if ((TCPManager[0]->GetConnState( )==OPEN)&&(TCPManager[1]->GetConnState( )!=OPEN))  
                	 {
                	 	  if (TCPManager[0]->TalkIsTimeout())
                	  	{
                	  		 CloseAllTCPConn( );      	         	
	                       TaskFlg = NeedInitUART;
       	  	             if(GetKPState==LOCK) printf("Talk Timeout,Close TCP!\n"); 
       	  	          }               	 	
                	 } 
                	 else if ((TCPManager[0]->GetConnState( )!=OPEN)&&(TCPManager[1]->GetConnState( )==OPEN)) 
                	 {
                	 	
                	 	  if (TCPManager[1]->TalkIsTimeout())
                	  	{
                	  		CloseAllTCPConn( );      	         	
	                      TaskFlg = NeedInitUART;
       	  	           if(GetKPState==LOCK) printf("Talk Timeout,Close TCP!\n"); 
       	  	          }                  	 	
                	 }        	  
                	  
                	  SystemState = State_GatherData;
                }
                break;
                	
           case State_CmdPro:   //上游命令处理
           	    //put data process code here
           	    UpCmd_Master_Proc( CmdDataBuf );
           	    if(ReadHistroyDataFlg==1)  ReadHistroyData( RHDCMDTmpBuf, WhoSendRHDCMD );
           	    SystemState = State_GatherData;
           	    break;          	    

	         case State_ReInitUART:          //初始化串口
	    	        if(ReInitUART(SMSCOM, 2, 0 ))  TaskFlg = WaitingActive;
	    	        SystemState = State_GatherData;
	    	        break;
	    	        	      
	         case State_FTPdownload:
	    	        Release( );
	              SysExitState = FTPDOWNLOAD;
	              break;
 
	         default: SystemState = State_GatherData;	
	         	        break;
	 	    
       }
	 	
	 	
   }  
      
   SysExit( );
   
   clrscr( );
   
   printf("Exit AppProgram!\n");
   
   return SysExitState;	

}

int SysInit( )
{   
    ////////////////////////////
    GPRSPowerOnCheck( );
    
    GetGMSendIniPara( "Config.ini" );
    
    TCPManager[0] = new TCPClientManager( );
    TCPManager[1] = new TCPClientManager( );
  
    GetIniPara("Config.ini", "[CONFIG1]");  
    TCPManager[0]->Init( &Svr_ID );
    TCPManager[0]->SetServerNum(0);

    GetIniPara("Config.ini", "[CONFIG2]");  
    TCPManager[1]->Init( &Svr_ID );
    TCPManager[1]->SetServerNum(1);
    
    InitUART(0,12,0);  //初始化COM1串口
    InstallISR(0);
   
    InitUART( 1, 2, 0 );  //初始化COM2串口
    InstallISR( 1 );
    
    InitUART(2,12,0);   //初始化COM3串口
    InstallISR(2);
    
    SetTMR1( 20000 );
    InstallISR12( );
    
    KeyPadMenuInit(  );  //add by wuhuan 2006.7.13 for keypad

    Send_InitWLValue_to_GatherMachine( InitWaterLevel );   
        
/////////////////////////////////////////

    SetWDTLong( 15.5 );		// 15.5 sec Watchdog   
    
    return 0; 
    // Let's go to main loop!
}

int SysExit( )
{
	 Release( );
   UninstallISR12( );
   UninstallISR( 0 ); 
   UninstallISR(SMSCOM);
   UninstallISR( 2 ); 
   delete TCPManager[0];
   delete TCPManager[1];
   
   return 0;
    // Let's go back to DOS
}

void  flashchar(char inchar)
{
	  if(((inchar!=flashc[0])&&(flashc[0]!=0))||(flashc[7]!=0))
		{	
		   for(int i=0;i<8;i++)
			   flashc[i]=0;
		}	
		
	  for( int i=0;i<8;i++)
			if (flashc[i]==0) { flashc[i]=inchar; break;}
				
}	  		  	 	    	  	    	 	    	      		  	 	    	  	  	

⌨️ 快捷键说明

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