📄 recsysdlg.cpp
字号:
break;
case PROCSATAE_FAILD:
{
m_trk_state.SetIcon(hicons[3].m_hIcon);
m_trk_state_hold++;
if(m_trk_state_hold%10==0)
{
sprintf(ts,"链路或电路故障%f分钟,请检查!",m_ftp_state_hold/120);
m_trunkmsglist.InsertString(0,ts);
//拨打告警电话
}
}
break;
}
switch(ModernProc_state) {
case PROCSTATE_NOTSTART:
{
m_mod_state.SetIcon(hicons[0].m_hIcon);
m_mod_state_hold++;
if(m_mod_state_hold>10)
ModernProc_state=PROCSTATE_WARNING;
}
break;
case PROCSTATE_WORKING:
{
m_mod_state.SetIcon(hicons[1].m_hIcon);
m_mod_state_hold=0;
}
break;
case PROCSTATE_WARNING:
{
m_mod_state.SetIcon(hicons[2].m_hIcon);
m_mod_state_hold++;
if(m_mod_state_hold>10)
ModernProc_state=PROCSATAE_FAILD;
}
break;
case PROCSATAE_FAILD:
{
m_mod_state.SetIcon(hicons[3].m_hIcon);
m_mod_state_hold++;
if(m_mod_state_hold%5==0)
{
sprintf(ts,"MODERM失效%ld秒钟,请检查!",m_mod_state_hold/2);
m_trunkmsglist.InsertString(0,ts);
//重启告警进程
StartModemWarn();
}
}
break;
}
ProcCommunicate(PROCCESS_WORKING);
}
CDialog::OnTimer(nIDEvent);
}
void CRecsysDlg::OnResetFtpTh()
{
// TODO: Add your control notification handler code here
m_trunkmsglist.AddString("手动重启FTP线程!");
if(EndFtpTh())
{
if(StartFtpTh())
m_trunkmsglist.AddString("手动重启FTP线程成功!");
else m_trunkmsglist.AddString("手动重启FTP线程失败,请稍后再试!");
}
else
{
m_trunkmsglist.AddString("FTP线程结束失败,不能重启!");
}
}
void CRecsysDlg::OnResetModTh()
{
// TODO: Add your control notification handler code here
}
void CRecsysDlg::OnResetSqlTh()
{
// TODO: Add your control notification handler code here
}
void CRecsysDlg::OnResetTrkTh()
{
// TODO: Add your control notification handler code here
}
void CRecsysDlg::OnRstFtpCheck()
{
// TODO: Add your control notification handler code here
}
void CRecsysDlg::OnRstModCheck()
{
// TODO: Add your control notification handler code here
}
void CRecsysDlg::OnRstSqlCheck()
{
// TODO: Add your control notification handler code here
}
void CRecsysDlg::OnRstTrkCheck()
{
// TODO: Add your control notification handler code here
}
BOOL CRecsysDlg::StartSsmmonitor()
{
// zero out and initialize STARTUPINFO
pH=NULL;
memset( &si, 0, sizeof( si ) );
si.cb = sizeof( si );
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;
BOOL proc_ret=FALSE;
try
{
proc_ret=CreateProcess(NULL,( char * )LPCSTR( "c:\\ShCti\\Ss7Monitor.exe" ),
NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,
( char * )LPCSTR( "c:\\ShCti\\" ),&si,&pi);
if(proc_ret)
{
m_trunkmsglist.AddString("Ss7Monitor启动成功");
pH=pi.hProcess;
}
else
{
m_trunkmsglist.AddString("Ss7Monitor启动失败");
}
}
catch (...)
{
m_trunkmsglist.AddString("Ss7Monitor启动异常");
proc_ret=false;
}
return proc_ret;
}
BOOL CRecsysDlg::EndSsmmonitor()
{
BOOL proc_ret=FALSE;
try
{
if(pH!=NULL)
{
proc_ret=TerminateProcess( pH, 0 );
if(proc_ret)
{
m_trunkmsglist.AddString("Ss7Monitor程序结束成功");
pH=pi.hProcess;
}
else
{
m_trunkmsglist.AddString("Ss7Monitor程序结束失败");
}
}
else
{
m_trunkmsglist.AddString("Ss7Monitor程序未启动");
}
}
catch (...)
{
m_trunkmsglist.AddString("Ss7Monitor程序结束异常");
proc_ret=false;
}
/* CString str="Ss7Monitor";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
pWnd->PostMessage(WM_QUIT,0,0); */
return proc_ret;
}
BOOL CRecsysDlg::StartFtpTh()
{
FtpProc_pTh=NULL;
FtpProc_pTh = AfxBeginThread( RUNTIME_CLASS( CFtpProc ) );
//
if(FtpProc_pTh)
return true;
else
return false;;
}
BOOL CRecsysDlg::EndFtpTh()
{
DWORD exitcode=StopWinThread(FtpProc_pTh,3000);
if(exitcode==99)
return false;
else return true;
}
BOOL CRecsysDlg::StartSqlTh()
{
//
SqlProc_pTh=NULL;
SqlProc_pTh = AfxBeginThread( RUNTIME_CLASS( CSqlProc ) );
//
if(SqlProc_pTh)
return true;
else
return false;
}
BOOL CRecsysDlg::EndSqlTh()
{
DWORD exitcode=StopWinThread(SqlProc_pTh,3000);
if(exitcode==99)
return false;
else return true;
}
BOOL CRecsysDlg::StartModernTh()
{
BOOL th_ret=false;
//
//
return th_ret;
}
BOOL CRecsysDlg::EndModernTh()
{
DWORD exitcode=StopWinThread(ModProc_pTh,3000);
if(exitcode==99)
return false;
else return true;
}
BOOL CRecsysDlg::StartTrkTh()
{
BOOL th_ret=false;
//
//
return th_ret;
}
BOOL CRecsysDlg::EndTrkTh()
{
BOOL th_ret=false;
//
//
return th_ret;
}
void CRecsysDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
EndTrkTh();
EndFtpTh();
EndSqlTh();
EndModernTh();
Sleep(1000);
EndSsmmonitor();
}
LRESULT CRecsysDlg::OnProcMsg(WPARAM wParam, LPARAM lParam)
{
CString ts;
char state[51];
char state2[51];
char curtime[30];
char *endchar;
long templ=0;
long groupid=0;
SYSTEMTIME systime;
GetLocalTime(&systime);
sprintf(curtime,"%04d-%02d-%02d %02d:%02d:%02d",
systime.wYear,systime.wMonth,systime.wDay,systime.wHour,systime.wMinute,systime.wSecond);
if(m_trunkmsglist.GetCount()>1000)
m_trunkmsglist.ResetContent();
switch(lParam) {
case SQLPROC_SHOWMSG:
{
ts.Format("(%s):%s",curtime,Sql_ProcMsg[wParam]);
m_trunkmsglist.InsertString(0,ts);
WriteLog(ts);
}
break;
case SQLPROC_NEEDFTP:
{
ts.Format("%s",Sql_ProcMsg[wParam]);
int stridx=ts.Delete(0,7);
strcpy(state,ts);
groupid=strtol(state,&endchar,10);
//发送FTP消息
strcpy(ftpinfo[m_ftpinfopos].filename,Sql_ProcMsg[wParam]);
ftpinfo[m_ftpinfopos].groupid=groupid;
FtpProc_pTh->PostThreadMessage(FTP_WANTE,m_ftpinfopos,0);
m_ftpinfopos=(m_ftpinfopos+1)%FTPQUEUE_MAX;
}
break;
case SQLPROC_SERV_FAILD :
{
ts.Format("(%s):%s",curtime,"数据库不可用");
m_trunkmsglist.InsertString(0,ts);
SqlServer_state=PROCSTATE_WARNING;
WriteLog(ts);
}
break;
case SQLPROC_SERV_RECOVER:
{
ts.Format("(%s):%s",curtime,"数据库连接恢复");
m_trunkmsglist.InsertString(0,ts);
SqlServer_state=PROCSTATE_WORKING;
WriteLog(ts);
}
break;
case SQLPROC_WORKING:
{
//界面显示正常
SqlServer_state=PROCSTATE_WORKING;
}
break;
case FTP_FAILD :
{
strcat(ftpinfo[wParam].statemsg,curtime);
m_trunkmsglist.InsertString(0,ftpinfo[wParam].statemsg);
ts.Format("insert into FTP_FAILD values"
"('%s','%s',%d,0)",curtime,ftpinfo[wParam].filename,ftpinfo[wParam].groupid);
sprintf(Sql_Command[m_sqlcompos],"%s",ts);
SqlProc_pTh->PostThreadMessage(WM_EXESQL,m_sqlcompos,0);
m_sqlcompos=(m_sqlcompos+1)%SQLPROC_MAXQUEUE;
ts.Format("(%s)%s上传失败!",curtime,ftpinfo[wParam].filename);
WriteLog(ts);
}
break;
case FTP_WORKING:
{
FtpServer_state=PROCSTATE_WORKING;
}
break;
case FTPSERVER_FAILD:
{
FtpServer_state=PROCSTATE_WARNING;
ts.Format("(%s)FTPSERVER不可用!",curtime);
m_trunkmsglist.InsertString(0,ts);
WriteLog(ts);
}
break;
case FTPSERVER_RECORVER:
{
FtpServer_state=PROCSTATE_WORKING;
SqlProc_pTh->PostThreadMessage(WM_GETFTPQUEUE,0,0);
}
break;
case SHOW_FTP_MSG :
{
strcat(ftpinfo[wParam].statemsg,curtime);
m_trunkmsglist.InsertString(0,ftpinfo[wParam].statemsg);
}
break;
case SHOW_CHN_NOTUSE :
{
m_trunkstatelist.GetItemText( orginfo_queue[wParam].trunkno, 1, state, 50 );
if(strcmp(state,"不可用")==0)
return 0;
m_trunkstatelist.SetItemText(orginfo_queue[wParam].trunkno,1,"不可用");
m_trunkstatelist.SetItemText(orginfo_queue[wParam].trunkno,2,"");
m_trunkstatelist.SetItemText(orginfo_queue[wParam].trunkno,3,"");
m_trunkstatelist.SetItemText(orginfo_queue[wParam].trunkno,4,"");
m_trunkstatelist.SetItemText(orginfo_queue[wParam].trunkno,5,"");
TrunkProc_state=PROCSTATE_WARNING;
}
break;
case SHOW_CHN_GRS :
{
m_trunkstatelist.GetItemText( orginfo_queue[wParam].trunkno, 1, state, 50 );
if(strcmp(state,"电路复原")==0)
return 0;
m_trunkstatelist.SetItemText(orginfo_queue[wParam].trunkno,1,"电路复原");
m_trunkstatelist.SetItemText(orginfo_queue[wParam].trunkno,2,"");
m_trunkstatelist.SetItemText(orginfo_queue[wParam].trunkno,3,"");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -