📄 dlge1sch.cpp
字号:
// DlgE1Sch.cpp : implementation file
//
#include "stdafx.h"
#include "PCM120.h"
#include "DlgE1Sch.h"
#include "DlgConfig.h"
#include "DlgStateDisplay.h"
#include "CheckState.h"
#include "DlgAllStaSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgE1Sch dialog
CDlgE1Sch::CDlgE1Sch(CWnd* pParent /*=NULL*/)
: CDialog(CDlgE1Sch::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgE1Sch)
//}}AFX_DATA_INIT
}
void CDlgE1Sch::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgE1Sch)
DDX_Control(pDX, IDC_LIST_ALERT, m_ListCtrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgE1Sch, CDialog)
//{{AFX_MSG_MAP(CDlgE1Sch)
ON_BN_CLICKED(IDC_BTN_DISPLAY, OnBtnDisplay)
ON_WM_TIMER()
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgE1Sch message handlers
CString strRecive;
CString strSearchst;
CString CDlgE1Sch::strSent="";
int CDlgE1Sch::iState=0;
CByteArray btahexdatast;//最终要发送的内容的十六进制串
CDlgConfig configdlg;
int iSchComIndex=-1;//选择的COM口,默认是COM1;
BOOL CDlgE1Sch::OnInitDialog()
{
CDialog::OnInitDialog();
getFileName();
//////////////////////////////////////////////////////////////////////////
CCheckState::bAuto=false;
CString strPath;
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);
//////////////////////////////////////////////////////////////////////////
InitList();
// TODO: Add extra initialization here
// CDlgE1Sch::strSent.Format("7E 81 %s %s 00 06 00",CDlgStateDisplay::strAddress,CDlgStateDisplay::strAddress);
//////////////////////////////////////////////////////////////////////////
char Get[255];
GetPrivateProfileString("default",CDlgStateDisplay::strAddress,"FF FF FF FF ",Get,255,strFileName);
strRecive=(LPCTSTR)Get;
strRecive+=" ";
OnBtnDisplay();
//////////////////////////////////////////////////////////////////////////
SetTimer(1,idelay,NULL);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/*
void CDlgE1Sch::OnBtnDisplay()
{
// TODO: Add your control notification handler code here
// UpdateData(true);
CString strWarning;
CString strBin;
CStringArray straBin;
strWarning=strRecive.Right(12);
CString str1E1Warn;
str1E1Warn =strWarning.Left(2);
CString str2E1Warn;
str2E1Warn =strWarning.Mid(3,2);
CString str3E1Warn;
str3E1Warn =strWarning.Mid(6,2);
CString str4E1Warn;
str4E1Warn =strWarning.Mid(9,2);
XstrtoBin(str1E1Warn,strBin);
WarnSet(strBin,0);
XstrtoBin(str2E1Warn,strBin);
WarnSet(strBin,1);
XstrtoBin(str3E1Warn,strBin);
WarnSet(strBin,2);
XstrtoBin(str4E1Warn,strBin);
WarnSet(strBin,3);
// UpdateData(false);
}
*/
////////////////////////////////////////////////////////////////////////////
void CDlgE1Sch::OnBtnDisplay()
{
if(strRecive.GetLength()>=12)
{
CString strWarning;
CString strBin;
CStringArray straBin;
strWarning=strRecive.Right(12);
/* CString strpre;
char Get[255];
strpre.Format("%sE1",CDlgStateDisplay::strAddress);
GetPrivateProfileString("default",strpre,"0",Get,255,strFileName);
CString strtem;
strtem=(LPTSTR)Get;
if(strtem=="0")
{
CString str1E1Warn;
str1E1Warn =strWarning.Left(2);
XstrtoBin(str1E1Warn,strBin);
WarnSet(strBin,0);
}
else
{
CString str1E1Warn;
str1E1Warn =strWarning.Left(2);
XstrtoBin(str1E1Warn,strBin);
protectSet(strBin,0);
}
strpre.Format("%sE2",CDlgStateDisplay::strAddress);
GetPrivateProfileString("default",strpre,"0",Get,255,strFileName);
strtem=(LPTSTR)Get;
if(strtem=="0")
{
CString str2E1Warn;
str2E1Warn =strWarning.Mid(3,2);
XstrtoBin(str2E1Warn,strBin);
WarnSet(strBin,1);
}
else
{
CString str2E1Warn;
str2E1Warn =strWarning.Mid(3,2);
XstrtoBin(str2E1Warn,strBin);
protectSet(strBin,1);
}
strpre.Format("%sE3",CDlgStateDisplay::strAddress);
GetPrivateProfileString("default",strpre,"0",Get,255,strFileName);
strtem=(LPTSTR)Get;
if(strtem=="0")
{
CString str3E1Warn;
str3E1Warn =strWarning.Mid(6,2);
XstrtoBin(str3E1Warn,strBin);
WarnSet(strBin,2);
}
else
{
CString str3E1Warn;
str3E1Warn =strWarning.Mid(6,2);
XstrtoBin(str3E1Warn,strBin);
protectSet(strBin,2);
}
strpre.Format("%sE4",CDlgStateDisplay::strAddress);
GetPrivateProfileString("default",strpre,"0",Get,255,strFileName);
strtem=(LPTSTR)Get;
if(strtem=="0")
{
CString str4E1Warn;
str4E1Warn =strWarning.Mid(9,2);
XstrtoBin(str4E1Warn,strBin);
WarnSet(strBin,3);
}
else
{
CString str4E1Warn;
str4E1Warn =strWarning.Mid(9,2);
XstrtoBin(str4E1Warn,strBin);
protectSet(strBin,3);
}
*/ CString strpre;
char Get[255];
strpre.Format("%sE1",CDlgStateDisplay::strAddress);
GetPrivateProfileString("default",strpre,"0",Get,255,strFileName);
CString strtem;
strtem=(LPTSTR)Get;
if(strtem=="0")
{
CString str1E1Warn;
str1E1Warn =strWarning.Left(2);
XstrtoBin(str1E1Warn,strBin);
WarnSet(strBin,0);
}
else
{
CString str1E1Warn;
str1E1Warn =strWarning.Left(2);
XstrtoBin(str1E1Warn,strBin);
protectSet(strBin,0);
}
strpre.Format("%sE2",CDlgStateDisplay::strAddress);
GetPrivateProfileString("default",strpre,"0",Get,255,strFileName);
strtem=(LPTSTR)Get;
if(strtem=="0")
{
CString str2E1Warn;
str2E1Warn =strWarning.Mid(3,2);
XstrtoBin(str2E1Warn,strBin);
WarnSet(strBin,1);
}
else
{
CString str2E1Warn;
str2E1Warn =strWarning.Mid(3,2);
XstrtoBin(str2E1Warn,strBin);
protectSet(strBin,1);
}
strpre.Format("%sE3",CDlgStateDisplay::strAddress);
GetPrivateProfileString("default",strpre,"0",Get,255,strFileName);
strtem=(LPTSTR)Get;
if(strtem=="0")
{
CString str3E1Warn;
str3E1Warn =strWarning.Mid(6,2);
XstrtoBin(str3E1Warn,strBin);
WarnSet(strBin,2);
}
else
{
CString str3E1Warn;
str3E1Warn =strWarning.Mid(6,2);
XstrtoBin(str3E1Warn,strBin);
protectSet(strBin,2);
}
strpre.Format("%sE4",CDlgStateDisplay::strAddress);
GetPrivateProfileString("default",strpre,"0",Get,255,strFileName);
strtem=(LPTSTR)Get;
if(strtem=="0")
{
CString str4E1Warn;
str4E1Warn =strWarning.Mid(9,2);
XstrtoBin(str4E1Warn,strBin);
WarnSet(strBin,3);
}
else
{
CString str4E1Warn;
str4E1Warn =strWarning.Mid(9,2);
XstrtoBin(str4E1Warn,strBin);
protectSet(strBin,3);
}
}
else
{
return;
}
}
////////////////////////////////////////////////////////////////////////////
void CDlgE1Sch::WarnSet(CString strBinValue,int iLine)
{
CStringArray straWarning;
straWarning.Add(strBinValue.Left(1));
straWarning.Add(strBinValue.Mid(1,1));
straWarning.Add(strBinValue.Mid(2,1));
straWarning.Add(strBinValue.Mid(3,1));
straWarning.Add(strBinValue.Mid(4,1));
straWarning.Add(strBinValue.Mid(5,1));
straWarning.Add(strBinValue.Mid(6,1));
straWarning.Add(strBinValue.Mid(7,1));
CString strMess;
for(int i=0;i<8;i++)
{
strMess =straWarning.GetAt(i);
if(strMess.Compare("1")==0)
{
switch(i) {
case 0:
m_ListCtrl.SetItemText(iLine,1,"★");
break;
case 1:
m_ListCtrl.SetItemText(iLine,2,"★");
break;
case 2:
m_ListCtrl.SetItemText(iLine,3,"★");
break;
case 3:
m_ListCtrl.SetItemText(iLine,4,"★");
break;
case 4:
m_ListCtrl.SetItemText(iLine,5,"★");
break;
case 5:
// m_ListCtrl.SetItemText(iLine,6,"★");
break;
case 6:
m_ListCtrl.SetItemText(iLine,6,"★");
break;
case 7:
m_ListCtrl.SetItemText(iLine,7,"★");
break;
}
}
}
}
void CDlgE1Sch::protectSet(CString strBinValue,int iLine)
{
CStringArray straWarning;
straWarning.Add(strBinValue.Left(1));
straWarning.Add(strBinValue.Mid(1,1));
straWarning.Add(strBinValue.Mid(2,1));
straWarning.Add(strBinValue.Mid(3,1));
straWarning.Add(strBinValue.Mid(4,1));
straWarning.Add(strBinValue.Mid(5,1));
straWarning.Add(strBinValue.Mid(6,1));
straWarning.Add(strBinValue.Mid(7,1));
CString strMess;
for(int i=0;i<8;i++)
{
// strMess =straWarning.GetAt(i);
// if(strMess.Compare("1")==0)
// {
switch(i) {
case 0:
m_ListCtrl.SetItemText(iLine,1,"☆");
break;
case 1:
m_ListCtrl.SetItemText(iLine,2,"☆");
break;
case 2:
m_ListCtrl.SetItemText(iLine,3,"☆");
break;
case 3:
m_ListCtrl.SetItemText(iLine,4,"☆");
break;
case 4:
m_ListCtrl.SetItemText(iLine,5,"☆");
break;
case 5:
// m_ListCtrl.SetItemText(iLine,8,"☆");
break;
case 6:
m_ListCtrl.SetItemText(iLine,6,"☆");
break;
case 7:
m_ListCtrl.SetItemText(iLine,7,"☆");
break;
}
// }
/* else
{
switch(i) {
case 0:
m_ListCtrl.SetItemText(iLine,1,"★");
break;
case 1:
m_ListCtrl.SetItemText(iLine,2,"★");
break;
case 2:
m_ListCtrl.SetItemText(iLine,3,"★");
break;
case 3:
m_ListCtrl.SetItemText(iLine,4,"★");
break;
case 4:
m_ListCtrl.SetItemText(iLine,5,"★");
break;
case 5:
// m_ListCtrl.SetItemText(iLine,8,"★");
break;
case 6:
m_ListCtrl.SetItemText(iLine,6,"★");
break;
case 7:
m_ListCtrl.SetItemText(iLine,7,"★");
break;
}
}
*/
}
}
void CDlgE1Sch::InitList()
{
DWORD dwStyle =m_ListCtrl.GetExtendedStyle();
m_ListCtrl.SetExtendedStyle(dwStyle|LVS_EX_GRIDLINES);
CStringArray straAlam;//存放所有的警告名
/* straAlam.Add("告警1");
straAlam.Add("告警2");
straAlam.Add("告警3");
straAlam.Add("告警4");
straAlam.Add("告警5");
straAlam.Add("告警6");
straAlam.Add("告警7");
straAlam.Add("告警8");
*/
//////////////////////////////////////////////////////////////////////////
straAlam.Add("LOS");
straAlam.Add("AIS");
straAlam.Add("SYN");
straAlam.Add("D_N");
straAlam.Add("MSYN");
//straAlam.Add("告警6");
straAlam.Add("CRC_FL");
straAlam.Add("ER_CRC");
//////////////////////////////////////////////////////////////////////////
LV_COLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.fmt = LVCFMT_LEFT;
lvc.cx = 80;
lvc.iSubItem = 0;
lvc.pszText ="E1";
m_ListCtrl.InsertColumn(0,&lvc);
for(int i =0;i<7;i++)
{
lvc.iSubItem = i;
lvc.pszText = (char *)(LPCTSTR)straAlam.GetAt(i);
m_ListCtrl.InsertColumn(i+1,&lvc);
}
CStringArray straStaID;//存放所有的设备ID(从配置文件里读来的)
straStaID.Add("第四路E1");
straStaID.Add("第三路E1");
straStaID.Add("第二路E1");
straStaID.Add("第一路E1");
for(int j=0;j<straStaID.GetSize();j++)
{
int m;
m=m_ListCtrl.InsertItem(0,straStaID.GetAt(j));
}
}
BEGIN_EVENTSINK_MAP(CDlgE1Sch, CDialog)
//{{AFX_EVENTSINK_MAP(CDlgE1Sch)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CDlgE1Sch::XstrtoBin(CString str,CString &strBin)
{
str.Replace("0","0000");
str.Replace("1","0001");
str.Replace("2","0010");
str.Replace("3","0011");
str.Replace("4","0100");
str.Replace("5","0101");
str.Replace("6","0110");
str.Replace("7","0111");
str.Replace("8","1000");
str.Replace("9","1001");
str.Replace("A","1010");
str.Replace("B","1011");
str.Replace("C","1100");
str.Replace("D","1101");
str.Replace("E","1110");
str.Replace("F","1111");
strBin=str;
}
void CDlgE1Sch::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
KillTimer(1);
CDlgE1Sch::iState=0;
char Get[255];
GetPrivateProfileString("default",CDlgStateDisplay::strAddress,"FF FF FF FF ",Get,255,strFileName);
strRecive=(LPCTSTR)Get;
strRecive+=" ";
OnBtnDisplay();
CDialog::OnTimer(nIDEvent);
}
void CDlgE1Sch::OnClose()
{
// TODO: Add your message handler code here and/or call default
CDialog::OnClose();
}
int CDlgE1Sch::Str2Hex(CString str, char* data)
{
int t,t1;
int rlen=0,len=str.GetLength();
//data.SetSize(len/2);
for(int i=0;i<len;)
{
char l,h=str[i];
if(h==' ')
{
i++;
continue;
}
i++;
if(i>=len)
break;
l=str[i];
t=HexChar(h);
t1=HexChar(l);
if((t==16)||(t1==16))
break;
else
t=t*16+t1;
i++;
data[rlen]=(char)t;
rlen++;
}
return rlen;
}
char CDlgE1Sch::HexChar(char c)
{
if((c>='0')&&(c<='9'))
return c-0x30;
else if((c>='A')&&(c<='F'))
return c-'A'+10;
else if((c>='a')&&(c<='f'))
return c-'a'+10;
else
return 0x10;
}
void CDlgE1Sch::getFileName()
{
SYSTEMTIME mySystemTime;
GetLocalTime(&mySystemTime);
CString filetime;
CString strPath;
// 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);
strFileName=strPath+"log\\"+filetime;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -