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

📄 dlge1sch.cpp

📁 使用vc++技术实现光电机串口通信管理程序
💻 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 + -