📄 dlgstatedisplay.cpp
字号:
// DlgStateDisplay.cpp : implementation file
//
#include "stdafx.h"
#include "PCM120.h"
#include "DlgStateDisplay.h"
#include "DlgPcmmam.h"
#include "DlgConfig.h"
#include "CheckState.h"
#include "RectView.h"
#include "DlgAllStaSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgStateDisplay dialog
CDlgStateDisplay::CDlgStateDisplay(CWnd* pParent /*=NULL*/)
: CDialog(CDlgStateDisplay::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgStateDisplay)
//}}AFX_DATA_INIT
}
void CDlgStateDisplay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgStateDisplay)
DDX_Control(pDX, IDC_LIST_ALERT, m_ListCtrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgStateDisplay, CDialog)
//{{AFX_MSG_MAP(CDlgStateDisplay)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_ALERT, OnDblclkListAlert)
ON_WM_TIMER()
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BTN_NETMANA, OnBtnNetmana)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BEGIN_EVENTSINK_MAP(CDlgStateDisplay, CDialog)
//{{AFX_EVENTSINK_MAP(CDlgStateDisplay)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
CString strSearchstDis;//固定的查询串
CByteArray btahexdatastDis;//最终要发送的内容的十六进制串
/////////////////////////////////////////////////////////////////////////////
// CDlgStateDisplay message handlers
CString CDlgStateDisplay::strAddress="";
int iAllCntSta;//站点总数
CStringArray saAllStaName;//所有的站名;
int iComIndexDis=-1;//选择的com口的序号
CString CDlgStateDisplay::strFileName="";
int iCntSta1Dev;//设备个数;
CString CDlgStateDisplay::strSent="";
int CDlgStateDisplay::iState=0;
int iWorking=-1;
//bool bOK=false;
void CDlgStateDisplay::OnButtonInit()
{
// TODO: Add your control notification handler code here
CStringArray straAlam;//存放所有的警告名
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");
//////////////////////////////////////////////////////////////////////////
ReadConfigStaCnt(iAllCntSta); //先把站点个数取得
ReadConfigStaName(saAllStaName);//再把站点名称数组取得
for(int iIdx=0;iIdx<iAllCntSta;iIdx++)
{
CString strSearch ;
strSearch =saAllStaName.GetAt(iIdx);
if(strStaDisName.Compare(strSearch)==0)
{
iIdxSta=iIdx;
break;
}
}
ReadConfigDevID(iIdxSta+1,straDev1,iCntSta1Dev);
//////////////////////////////////////////////////////////////////////////
LV_COLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.fmt = LVCFMT_LEFT;
lvc.cx = 65;
lvc.iSubItem = 0;
lvc.pszText = "站名";
m_ListCtrl.InsertColumn(0,&lvc);
lvc.iSubItem = 1;
lvc.pszText = "设备序号";
m_ListCtrl.InsertColumn(1,&lvc);
lvc.iSubItem = 2;
lvc.pszText = "设备ID";
m_ListCtrl.InsertColumn(2,&lvc);
for(int i =0;i<7;i++)
{
lvc.iSubItem = i+1;
lvc.pszText = (char *)(LPCTSTR)straAlam.GetAt(i);
m_ListCtrl.InsertColumn(i+3,&lvc);
}
for(int j=iCntSta1Dev-1;j>=0;j--)
{
/* int m;
m=m_ListCtrl.InsertItem(0,straDev1.GetAt(j));
m_ListCtrl.SetItemText(m,1,"★");
*/
CString strIDX;
strIDX.Format("%d",j+1);
int m=m_ListCtrl.InsertItem(0,strStaDisName);
m_ListCtrl.SetItemText(m,1,strIDX);
m_ListCtrl.SetItemText(m,2,straDev1.GetAt(j)+"#4E1");
m=m_ListCtrl.InsertItem(0,strStaDisName);
m_ListCtrl.SetItemText(m,1,strIDX);
m_ListCtrl.SetItemText(m,2,straDev1.GetAt(j)+"#3E1");
m=m_ListCtrl.InsertItem(0,strStaDisName);
m_ListCtrl.SetItemText(m,1,strIDX);
m_ListCtrl.SetItemText(m,2,straDev1.GetAt(j)+"#2E1");
m=m_ListCtrl.InsertItem(0,strStaDisName);
m_ListCtrl.SetItemText(m,1,strIDX);
m_ListCtrl.SetItemText(m,2,straDev1.GetAt(j)+"#1E1");
}
}
void CDlgStateDisplay::OnDblclkListAlert(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
/*
for(int i=0;i<m_ListCtrl.GetItemCount();i++)
{
if(m_ListCtrl.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)//得到选中项的文本
{
CDlgStateDisplay::strAddress=m_ListCtrl.GetItemText(i,2);
CDlgStateDisplay::strAddress.Replace("#1E1","");
CDlgStateDisplay::strAddress.Replace("#2E1","");
CDlgStateDisplay::strAddress.Replace("#3E1","");
CDlgStateDisplay::strAddress.Replace("#4E1","");
}
}
CDlgPcmmam manadlg;
manadlg.DoModal();
*/
CString strID;//选中的设备的ID号
CString strStaName;//选中的设备的站名
int iIdx;//选中的设备是该站的第几个设备
for(int i=0;i<m_ListCtrl.GetItemCount();i++)
{
if(m_ListCtrl.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)//得到选中项的文本
{
CDlgStateDisplay::strAddress=m_ListCtrl.GetItemText(i,2);
CDlgStateDisplay::strAddress.Replace("#1E1","");
CDlgStateDisplay::strAddress.Replace("#2E1","");
CDlgStateDisplay::strAddress.Replace("#3E1","");
CDlgStateDisplay::strAddress.Replace("#4E1","");
strID =m_ListCtrl.GetItemText(i,1);
strStaName=m_ListCtrl.GetItemText(i,0);
iIdx =atoi((LPCTSTR)strID);
iIdx+=1;
}
}
CDlgPcmmam manadlg;
CString strTemptitle;
strTemptitle.Format("站 第%d个设备智能PCM120网管",iIdx-1);
manadlg.m_strManaTitle=strStaName+strTemptitle;
manadlg.DoModal();
*pResult = 0;
}
BOOL CDlgStateDisplay::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
DWORD dwStyle =m_ListCtrl.GetExtendedStyle();
m_ListCtrl.SetExtendedStyle(dwStyle|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
OnButtonInit();
getFileName();
SetTimer(1,CRectView::uiPeriod*1000,NULL);
if(iCntSta1Dev>0)//在OnButtonInit()里得到的iCntSta1Dev的值;
{
for(iWorking=iCntSta1Dev-1;iWorking>=0;iWorking--)
{
strAdd=straDev1.GetAt(iWorking);
char Get[255];
GetPrivateProfileString("default",strAdd,"FF FF FF FF",Get,255,strFileName);
strReciveDis=(LPCTSTR)Get;
strReciveDis+=" ";
OnBtnDisplay(iWorking);
}
}
SetStaticFont();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//找到站点个数
int CDlgStateDisplay::ReadConfigStaCnt(int &iCntSta)
{
CDlgAllStaSet dlgalstaset;
CString strPath;
char Get[255];
dlgalstaset.GetModulePath(strPath,NULL);
strPath+="PCM120networksetup.ini";
GetPrivateProfileString("general","StationCnt","0",Get,255,strPath);
iCntSta =atoi(Get);
return iCntSta;
}
void CDlgStateDisplay::ReadConfigStaName(CStringArray &staName)
{
CDlgAllStaSet dlgalstaset;
CString strPath;
char Get[255];
dlgalstaset.GetModulePath(strPath,NULL);
strPath+="PCM120networksetup.ini";
GetPrivateProfileString("general","StationCnt","0",Get,255,strPath);
int iCntSta =atoi(LPCTSTR(Get));
for(int i=0;i<iCntSta;i++)
{
CString strSection;
strSection.Format("station%d",i+1);
GetPrivateProfileString(strSection,"stationname","NULL",Get,255,strPath);
staName.Add(Get);
}
}
void CDlgStateDisplay::ReadConfigDevID(int iIndxSta,CStringArray &staDevID,int &iCntDev)
{
CDlgAllStaSet dlgalstaset;
CString strPath;
char Get[255];
dlgalstaset.GetModulePath(strPath,NULL);
strPath+="PCM120networksetup.ini";
CString strSection;
strSection.Format("station%d",iIndxSta);
GetPrivateProfileString(strSection,"DevCnt","0",Get,255,strPath);
iCntDev =atoi(Get);
for(int i=0;i<iCntDev;i++)
{
CString strSeach;
strSeach.Format("第%d个设备ID",i+1);
GetPrivateProfileString(strSection,strSeach,"01",Get,255,strPath);
staDevID.Add(Get);
}
}
/*
BEGIN_EVENTSINK_MAP(CDlgStateDisplay, CDialog)
//{{AFX_EVENTSINK_MAP(CDlgStateDisplay)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
CString strSearchstDis;//固定的查询串
CByteArray btahexdatastDis;//最终要发送的内容的十六进制串
*/
void CDlgStateDisplay::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(iCntSta1Dev>0)//在OnButtonInit()里得到的iCntSta1Dev的值;
{
for(iWorking=iCntSta1Dev-1;iWorking>=0;iWorking--)
{
strAdd=straDev1.GetAt(iWorking);
char Get[255];
GetPrivateProfileString("default",strAdd,"FF FF FF FF ",Get,255,strFileName);
strReciveDis=(LPCTSTR)Get;
strReciveDis+=" ";
OnBtnDisplay(iWorking);
}
}
CDialog::OnTimer(nIDEvent);
}
void CDlgStateDisplay::OnBtnDisplay(int iDev)
{
// TODO: Add your control notification handler code here
// UpdateData(true);
if(strReciveDis.GetLength()>=12)
{
CString strWarning;
CString strBin;
CStringArray straBin;
strWarning=strReciveDis.Right(12);
CString strpre;
char Get[255];
strpre.Format("%sE1",strAdd);
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+iDev*4);
}
else
{
CString str1E1Warn;
str1E1Warn =strWarning.Left(2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -