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

📄 polingrrcdialog.cpp

📁 这是一个变电站的监控程序
💻 CPP
字号:
// PolingRRCDialog.cpp : implementation file
//

#include "stdafx.h"
#include "fert2000.h"
#include "PolingRRCDialog.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern RTU Rtus[MAX_RTU_NUM];

IMPLEMENT_DYNCREATE(CPolingRRCDialog, CDialog)

/////////////////////////////////////////////////////////////////////////////
// CPolingRRCDialog dialog


CPolingRRCDialog::CPolingRRCDialog()
	:CDialog(CPolingRRCDialog::IDD)
{
	//{{AFX_DATA_INIT(CPolingRRCDialog)
	m_Cao0 = 0;
	m_Cao9 = 0;
	m_Cao10 = 0;
	m_Cao11 = 0;
	m_Cao12 = 0;
	m_Cao13 = 0;
	m_Cao14 = 0;
	m_Cao15 = 0;
	m_Cao1 = 0;
	m_Cao2 = 0;
	m_Cao3 = 0;
	m_Cao4 = 0;
	m_Cao5 = 0;
	m_Cao6 = 0;
	m_Cao7 = 0;
	m_Cao8 = 0;
	m_WaitTime = 0;
	m_DeadArea = 0;
	m_AnswerWaitTime = 0;
	//}}AFX_DATA_INIT
	for (int i = 0;i < 16;i++)
		CaoConfig[i] = 0;

}


void CPolingRRCDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPolingRRCDialog)
	DDX_CBIndex(pDX, IDC_COMBO1, m_Cao0);
	DDX_CBIndex(pDX, IDC_COMBO10, m_Cao9);
	DDX_CBIndex(pDX, IDC_COMBO11, m_Cao10);
	DDX_CBIndex(pDX, IDC_COMBO12, m_Cao11);
	DDX_CBIndex(pDX, IDC_COMBO13, m_Cao12);
	DDX_CBIndex(pDX, IDC_COMBO14, m_Cao13);
	DDX_CBIndex(pDX, IDC_COMBO15, m_Cao14);
	DDX_CBIndex(pDX, IDC_COMBO16, m_Cao15);
	DDX_CBIndex(pDX, IDC_COMBO2, m_Cao1);
	DDX_CBIndex(pDX, IDC_COMBO3, m_Cao2);
	DDX_CBIndex(pDX, IDC_COMBO4, m_Cao3);
	DDX_CBIndex(pDX, IDC_COMBO5, m_Cao4);
	DDX_CBIndex(pDX, IDC_COMBO6, m_Cao5);
	DDX_CBIndex(pDX, IDC_COMBO7, m_Cao6);
	DDX_CBIndex(pDX, IDC_COMBO8, m_Cao7);
	DDX_CBIndex(pDX, IDC_COMBO9, m_Cao8);
	DDX_Text(pDX, IDC_EDIT1, m_WaitTime);
	DDX_Text(pDX, IDC_EDIT2, m_DeadArea);
	DDX_Text(pDX, IDC_ANSWER_TIME, m_AnswerWaitTime);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPolingRRCDialog, CDialog)
	//{{AFX_MSG_MAP(CPolingRRCDialog)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO10, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO11, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO12, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO13, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO14, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO15, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO16, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO2, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO3, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO4, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO5, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO6, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO7, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO8, OnSelchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO9, OnSelchangeCombo)
	ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
	ON_EN_CHANGE(IDC_EDIT2, OnChangeEdit2)
	ON_EN_CHANGE(IDC_ANSWER_TIME, OnChangeAnswerTime)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPolingRRCDialog message handlers


void CPolingRRCDialog::OnSelchangeCombo() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CComboBox *Wnd = (CComboBox*)GetFocus();

	CaoConfig[Wnd->GetDlgCtrlID()-IDC_COMBO1] = Wnd->GetCurSel();
	RtuPara->m_KwhNum = 0;
	RtuPara->m_YcNum = 0;
	RtuPara->m_YxNum = 0;
	for (int i = 0;i < 16;i++)
	{
		switch (CaoConfig[i])
		{
		case 1:
			RtuPara->m_YxNum += 24;
			break;
		case 2:
			RtuPara->m_YcNum += 12;
			break;
		case 5:
			RtuPara->m_KwhNum += 8;
			break;
		default:
			break;
		}
	}
	UpdateData(FALSE);
	Rtus[CurRtu].ModifyFlag=1;	
}


void CPolingRRCDialog::DispARtuRRC()
{
	m_WaitTime=Rtus[CurRtu].WaitTime;
	m_AnswerWaitTime = Rtus[CurRtu].AnswerWaitTime;
	m_DeadArea=Rtus[CurRtu].DeadArea;
//	m_ComboProtocol.SetCurSel(Rtus[CurRtu].Protocol);
	for (int i = 0;i < 16;i++)
	{
		switch (Rtus[CurRtu].RRC[i])
		{
		case 0x0:
			CaoConfig[i] = 0;
			break;
		case 0x11:
			CaoConfig[i] = 1;
			break;
		case 0x32:
			CaoConfig[i] = 2;
			break;
		case 0x14:
			CaoConfig[i] = 3;
			break;
		case 0x05:
			CaoConfig[i] = 4;
			break;
		case 0x3B:
			CaoConfig[i] = 5;
			break;
		case 0x26:
			CaoConfig[i] = 6;
			break;
		case 0x30:
			CaoConfig[i] = 7;
			break;
		default:
			CaoConfig[i] = 0;
			break;
		}
	}
	m_Cao0 = CaoConfig[0];
	m_Cao1 = CaoConfig[1];
	m_Cao2 = CaoConfig[2];
	m_Cao3 = CaoConfig[3];
	m_Cao4 = CaoConfig[4];
	m_Cao5 = CaoConfig[5];
	m_Cao6 = CaoConfig[6];
	m_Cao7 = CaoConfig[7];
	m_Cao8 = CaoConfig[8];
	m_Cao9 = CaoConfig[9];
	m_Cao10 = CaoConfig[10];
	m_Cao11 = CaoConfig[11];
	m_Cao12 = CaoConfig[12];
	m_Cao13 = CaoConfig[13];
	m_Cao14 = CaoConfig[14];
	m_Cao15 = CaoConfig[15];
//	OnSelchangeCombo1();
	if (ProtocolType == 1)
	{
		RtuPara->m_KwhNum = 0;
		RtuPara->m_YcNum = 0;
		RtuPara->m_YxNum = 0;
		for (i = 0;i < 16;i++)
		{
			switch (CaoConfig[i])
			{
			case 1:
				RtuPara->m_YxNum += 24;
				break;
			case 2:
				RtuPara->m_YcNum += 12;
				break;
			case 5:
				RtuPara->m_KwhNum += 8;
				break;
			default:
				break;
			}
		}
	}

//	ProtocolDo();//
	UpdateData(FALSE);
}

BOOL CPolingRRCDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	DispARtuRRC();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPolingRRCDialog::SaveARtuRRC()
{
	UpdateData(TRUE);
	Rtus[CurRtu].WaitTime = m_WaitTime;
	Rtus[CurRtu].AnswerWaitTime = m_AnswerWaitTime;
	Rtus[CurRtu].DeadArea = m_DeadArea;
	CaoConfig[0] = m_Cao0;
	CaoConfig[1] = m_Cao1;
	CaoConfig[2] = m_Cao2;
	CaoConfig[3] = m_Cao3;
	CaoConfig[4] = m_Cao4;
	CaoConfig[5] = m_Cao5;
	CaoConfig[6] = m_Cao6;
	CaoConfig[7] = m_Cao7;
	CaoConfig[8] = m_Cao8;
	CaoConfig[9] = m_Cao9;
	CaoConfig[10] = m_Cao10;
	CaoConfig[11] = m_Cao11;
	CaoConfig[12] = m_Cao12;
	CaoConfig[13] = m_Cao13;
	CaoConfig[14] = m_Cao14;
	CaoConfig[15] = m_Cao15;
	int YxNum=0,YcNum=0,KwhNum=0;
	for (int i = 0;i < 16;i++)
	{
		switch (CaoConfig[i])
		{
		case 0:
			Rtus[CurRtu].RRC[i] = 0;
			break;
		case 1:
			Rtus[CurRtu].RRC[i] = 0x11;
			YxNum += 24;
			break;
		case 2:
			Rtus[CurRtu].RRC[i] = 0x32;
			YcNum += 12;
			break;
		case 3:
			Rtus[CurRtu].RRC[i] = 0x14;
			break;
		case 4:
			Rtus[CurRtu].RRC[i] = 0x05;
			break;
		case 5:
			Rtus[CurRtu].RRC[i] = 0x3B;
			KwhNum += 8;
			break;
		case 6:
			Rtus[CurRtu].RRC[i] = 0x26;
			break;
		case 7:
			Rtus[CurRtu].RRC[i] = 0x30;
			break;
		default:
			Rtus[CurRtu].RRC[i] = 0;
			break;
		}
	}
	Rtus[CurRtu].YcNum = YcNum;
	Rtus[CurRtu].YxNum = YxNum;
	Rtus[CurRtu].KwhNum = KwhNum;
}


void CPolingRRCDialog::OnChangeEdit1() 
{
	UpdateData();
	if (m_WaitTime < 1 || m_WaitTime > 10)
	{
		AfxMessageBox("遥控等待时间范围不合适!",MB_OK + MB_ICONSTOP);
		m_WaitTime = 5;
		UpdateData(FALSE);
		return;
	}
	Rtus[CurRtu].ModifyFlag=1;
}

void CPolingRRCDialog::OnChangeEdit2() 
{
	UpdateData();
	if (m_DeadArea < 0 || m_DeadArea > 4096)
	{
		AfxMessageBox("死区值范围不合适!",MB_OK + MB_ICONSTOP);
		m_DeadArea = 5;
		UpdateData(FALSE);
		return;
	}
	Rtus[CurRtu].ModifyFlag=1;
}

void CPolingRRCDialog::OnChangeAnswerTime() 
{
	UpdateData();
	if (m_AnswerWaitTime < 5 || m_AnswerWaitTime > 60)
	{
		AfxMessageBox("死区值范围不合适!",MB_OK + MB_ICONSTOP);
		m_AnswerWaitTime = 5;
		UpdateData(FALSE);
		return;
	}
	Rtus[CurRtu].ModifyFlag=1;
}

void CPolingRRCDialog::OnOK() 
{
	// TODO: Add extra validation here
	SaveARtuRRC();
	CDialog::OnOK();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -