📄 main.cpp.bak
字号:
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 + -