📄 checkstate.cpp
字号:
// CheckState.cpp : implementation file
//
#include "stdafx.h"
#include "PCM120.h"
#include "CheckState.h"
#include "DlgConfig.h"
#include "DlgE1Mod.h"
#include "DlgAllStaSet.h"
#include "DlgShx.h"
#include "DlgE1Sch.h"
#include "DlgStateDisplay.h"
#include "RectView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCheckState dialog
CCheckState::CCheckState(CWnd* pParent /*=NULL*/)
: CDialog(CCheckState::IDD, pParent)
{
//{{AFX_DATA_INIT(CCheckState)
// m_iCom = 1;
//}}AFX_DATA_INIT
}
void CCheckState::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCheckState)
// DDX_Text(pDX, IDC_EDIT_COM, m_iCom);
// DDV_MinMaxInt(pDX, m_iCom, 1, 20);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCheckState, CDialog)
//{{AFX_MSG_MAP(CCheckState)
ON_WM_TIMER()
ON_MESSAGE(WM_COMM_RXCHAR,OnCommunication)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCheckState message handlers
BEGIN_EVENTSINK_MAP(CCheckState, CDialog)
//{{AFX_EVENTSINK_MAP(CCheckState)
// ON_EVENT(CCheckState, IDC_MSCOMM1, 1 /* OnComm */, OnComm, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
int nError;
CString CCheckState::strGetSection="default";
CString CCheckState::strColorbefore="";
CString CCheckState::strRecive="";
CString CCheckState::strPath="";
int CCheckState::iState=0;
int iSelfState=0;
int CCheckState::iTime=0;
bool CCheckState::bAuto=false;
CStringArray staAllStaName;
CStringArray staAllID;//所有站点的所有的设备ID
BOOL CCheckState::OnInitDialog()
{
CDialog::OnInitDialog();
//////////////////////////////////////////////////////////////////////////
SYSTEMTIME mySystemTime;
GetLocalTime(&mySystemTime);
CString filetime;
// filetime.Format ("%d-%d-%d %s%d %d:%d:%d",mySystemTime.wYear,mySystemTime.wMonth,mySystemTime.wDay,"星期",mySystemTime.wDayOfWeek,mySystemTime.wHour,mySystemTime.wMinute,mySystemTime.wSecond);
filetime.Format("%d-%d-%d.ini",mySystemTime.wYear,mySystemTime.wMonth,mySystemTime.wDay);
CDlgAllStaSet dlgalstaset;
dlgalstaset.GetModulePath(strPath,NULL);
CString strConfigaPath;
strConfigaPath=strPath+"config.ini";
char charGedelay[255];
GetPrivateProfileString("General","延时(毫秒)","1000",charGedelay,255,strConfigaPath);
idelay=atoi((LPTSTR)charGedelay);
strFileName=strPath+"log\\"+filetime;
SetTimer(3,10,NULL);
//////////////////////////////////////////////////////////////////////////
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCheckState::OnOK()
{
CDialog::OnOK();
}
BOOL over;
void CCheckState::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1:
KillTimer(1);
m_Port.ClosePort();
if(m_strRXData.Find("7E 7E")>=0)
{
int ipos7E =m_strRXData.Find("7E 7E");
CString strWarn ;
m_strRXData=m_strRXData.Right(m_strRXData.GetLength()-ipos7E-3);
strWarn =m_strRXData.Right(12);
char charGetbe[255];
CString strIDtemp;//取得的ID
strIDtemp=m_strRXData.Mid(6,2);
GetPrivateProfileString("default",m_strRXData.Mid(6,2)," ",charGetbe,255,strFileName);
CString strbefore;
strbefore=(LPCTSTR)charGetbe;
WritePrivateProfileString("default",m_strRXData.Mid(6,2),strWarn,strFileName);
CString strSecIDE;//存“01E1,01E2 01E3 01E4之类的”
strSecIDE=strIDtemp+"E1";
GetPrivateProfileString("default",strSecIDE,"0",charGetbe,255,strFileName);
CString strchancewarn;//经修改后的告警信息;
CString strGetModeset;
strGetModeset=(LPCTSTR)charGetbe;
CString strCRC,strbinCRC;
strCRC=strWarn.Left(2);
XstrtoBin(strCRC,strbinCRC);
if(strGetModeset.Compare("1")==0)
{
if(strbinCRC.Mid(5,1)=="1")
{
strchancewarn+="04 ";
}
else
{
strchancewarn+="00 ";
}
}
else
{
strchancewarn+=strWarn.Left(3);
}
strSecIDE=strIDtemp+"E2";
GetPrivateProfileString("default",strSecIDE,"0",charGetbe,255,strFileName);
strGetModeset=(LPCTSTR)charGetbe;
strCRC=strWarn.Mid(3,2);
XstrtoBin(strCRC,strbinCRC);
if(strGetModeset.Compare("1")==0)
{
if(strbinCRC.Mid(5,1)=="1")
{
strchancewarn+="04 ";
}
else
{
strchancewarn+="00 ";
}
}
else
{
strchancewarn+=strWarn.Mid(3,3);
}
strSecIDE=strIDtemp+"E3";
GetPrivateProfileString("default",strSecIDE,"0",charGetbe,255,strFileName);
strGetModeset=(LPCTSTR)charGetbe;
strCRC=strWarn.Mid(6,2);
XstrtoBin(strCRC,strbinCRC);
if(strGetModeset.Compare("1")==0)
{
if(strbinCRC.Mid(5,1)=="1")
{
strchancewarn+="04 ";
}
else
{
strchancewarn+="00 ";
}
}
else
{
strchancewarn+=strWarn.Mid(6,3);
}
strSecIDE=strIDtemp+"E4";
GetPrivateProfileString("default",strSecIDE,"0",charGetbe,255,strFileName);
strGetModeset=(LPCTSTR)charGetbe;
strCRC=strWarn.Mid(9,2);
XstrtoBin(strCRC,strbinCRC);
if(strGetModeset.Compare("1")==0)
{
if(strbinCRC.Mid(5,1)=="1")
{
strchancewarn+="04";
}
else
{
strchancewarn+="00";
}
}
else
{
strchancewarn+=strWarn.Mid(9,2);
}
WritePrivateProfileString("default",m_strRXData.Mid(6,2),strchancewarn,strFileName);
CString strStand;
strStand=strbefore;
//strStand="04 04 04 04";
// strStand+=" ";06.10.19去掉的;
if(strchancewarn.Compare(strStand)!=0)
{
WritePrivateProfileString(strLogSection,m_strRXData.Mid(6,2),strchancewarn,strFileName);
}
if(iIDidx<iCntID-1)
{
iIDidx++;
checkmod();
// SetTimer(5,idelay,NULL);
// OneCyle();
}
else
{
m_Port.ClosePort();
CCheckState::strGetSection= strLogSection;
strColor="";
//////////////////////////取各站的状态即颜色显示////////////////////////////////////////////////
for(int i =0;i<staAllStaName.GetSize();i++)
{
CStringArray staTemp;
int iDevCntTemp=0;
ReadConfigDevID(i+1,staTemp,iDevCntTemp);
int nErr=0;
for(int j=0;j<staTemp.GetSize();j++)
{
CString staAddTemp=staTemp.GetAt(j);
char Get[255];
//GetPrivateProfileString("default",staAddTemp,"04 04 04 04",Get,255,strPath);
GetPrivateProfileString("default",staAddTemp,"FF FF FF FF",Get,255,strFileName);
CString strGetWarning;
strGetWarning=Get;
if(strGetWarning=="FF FF FF FF")
{
nErr++;
}
else
{
strGetWarning.Replace("04","00");
if(strGetWarning.Compare("00 00 00 00")!=0)
{
nErr+=100;
}
}
}
int iSizeDev=staTemp.GetSize();
if(nErr==iSizeDev)
{
strColor+="0";
}
else if(nErr==0)
{
strColor+="2";
}
else if(nErr>=100||nErr<iSizeDev)
{
strColor+="1";
}
}
strColorbefore=strColor;
//////////////////////////////////////////////////////////////////////////
}
}
else//收到的串的长度不是57时,不是正常的
{
////////////////////////////////////////////////////F//////////////////////
char charGetbe[255];
GetPrivateProfileString("default",staAdd," ",charGetbe,255,strFileName);
WritePrivateProfileString("default",staAdd,"FF FF FF FF",strFileName);
CString strStand;
CString strIDEn;
strIDEn.Format("%sE1",staAdd);
WritePrivateProfileString("default",strIDEn,0,strFileName);
strIDEn.Format("%sE2",staAdd);
WritePrivateProfileString("default",strIDEn,0,strFileName);
strIDEn.Format("%sE3",staAdd);
WritePrivateProfileString("default",strIDEn,0,strFileName);
strIDEn.Format("%sE4",staAdd);
WritePrivateProfileString("default",strIDEn,0,strFileName);
strStand=charGetbe;
// strStand="04 04 04 04";
if(strStand.Compare("FF FF FF FF")!=0)
{
WritePrivateProfileString(strLogSection,staAdd,"FF FF FF FF",strFileName);
}
//////////////////////////////////////////////////////////////////////////
//WritePrivateProfileString(strLogSection,staAdd,"FF FF FF FF ",strPath);
// WritePrivateProfileString("default",staAdd,"FF FF FF FF",strPath);
if(iIDidx<iCntID-1)
{
iIDidx++;
checkmod();
// SetTimer(5,idelay,NULL);
// OneCyle();
}
else
{
// m_Port.ClosePort();//当所有站的设备检查一遍后关闭串
CCheckState::strGetSection= strLogSection;
strColor="";
//////////////////////////取各站的状态即颜色显示////////////////////////////////////////////////
for(int i =0;i<staAllStaName.GetSize();i++)
{
CStringArray staTemp;
int iDevCntTemp=0;
ReadConfigDevID(i+1,staTemp,iDevCntTemp);
int nErr=0;
for(int j=0;j<staTemp.GetSize();j++)
{
CString staAddTemp=staTemp.GetAt(j);
char Get[255];
// GetPrivateProfileString("default",staAddTemp,"04 04 04 04",Get,255,strPath);
GetPrivateProfileString("default",staAddTemp,"FF FF FF FF",Get,255,strFileName);
CString strGetWarning;
strGetWarning=Get;
if(strGetWarning=="FF FF FF FF")
{
nErr++;
}
else
{
strGetWarning.Replace("04","00");
if(strGetWarning.Compare("00 00 00 00")!=0)
{
nErr+=100;
}
}
}
int iSizeDev=staTemp.GetSize();
if(nErr==iSizeDev)
{
strColor+="0";
}
else if(nErr==0)
{
strColor+="2";
}
else if(nErr>=100||nErr<iSizeDev)
{
strColor+="1";
}
}
strColorbefore=strColor;
//////////////////////////////////////////////////////////////////////////
}
}
break;
case 2:
if(bAuto==true)
{
doCheck();
}
break;
case 3:
if(CDlgConfig::iState==0&& CDlgShx::iState==0&&CDlgE1Mod::iState==0)
{
if(CCheckState::bAuto==0)
{
CCheckState::bAuto=true;
OnAutoCheck();
}
}
else
{
OnAutoStop();
CCheckState::bAuto=false;
}
break;
case 4:
KillTimer(4);
if(bAuto==true)
{
doCheck();
}
break;
case 5:
KillTimer(5);
// m_Port.ClosePort();
CCheckState::iState=0;
if(!m_strRXData.IsEmpty())
{
CString strRXTemp,strRXBin,strGetAdd;
strRXTemp=m_strRXData.Right(3);
int nPos7E=m_strRXData.Find("7E 7E");
if(nPos7E>=0)
{
strGetAdd=m_strRXData.Mid(nPos7E+9,2);
strRXTemp.Replace(" ","");
CString strpre;
XstrtoBin(strRXTemp,strRXBin);
if(strRXBin.Left(1)=="1")
{
strpre.Format("%sE4",strGetAdd);
WritePrivateProfileString("default",strpre,"1",strFileName);
}
else
{
strpre.Format("%sE4",strGetAdd);
WritePrivateProfileString("default",strpre,"0",strFileName);
}
if(strRXBin.Mid(1,1)=="1")
{
strpre.Format("%sE3",strGetAdd);
WritePrivateProfileString("default",strpre,"1",strFileName);
}
else
{
strpre.Format("%sE3",strGetAdd);
WritePrivateProfileString("default",strpre,"0",strFileName);;
}
if(strRXBin.Mid(2,1)=="1")
{
strpre.Format("%sE2",strGetAdd);
WritePrivateProfileString("default",strpre,"1",strFileName);
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -