⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgstatedisplay.cpp

📁 使用vc++技术实现光电机串口通信管理程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -