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

📄 dlgyxupara.cpp

📁 串口收发工具
💻 CPP
字号:
// DlgYxuPara.cpp : implementation file
//

#include "stdafx.h"
#include "maintain.h"
#include "DlgYxuPara.h"
#include "public.h"
#include "mainfrm.h"
#include "DlgMsuPara.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern char *unit[];
/////////////////////////////////////////////////////////////////////////////
// CDlgYxuPara property page

IMPLEMENT_DYNCREATE(CDlgYxuPara, CPropertyPage)

CDlgYxuPara::CDlgYxuPara() : CPropertyPage(CDlgYxuPara::IDD)
{
	//{{AFX_DATA_INIT(CDlgYxuPara)
	m_Com1_yx = FALSE;
	m_Com2_yx = FALSE;
	m_Com3_yx = FALSE;
	m_Point1Allow = FALSE;
	m_Point2Allow = FALSE;
	m_YxName = _T("");
	m_Point1_yx = 0;
	m_Point2_yx = 0;
	m_ActionAlarm = -1;


	m_AlarmName = _T("");
	m_Voice1 = 0;
	//}}AFX_DATA_INIT

	nUnitNo = 0;
	//}}AFX_DATA_INIT
}

CDlgYxuPara::~CDlgYxuPara()
{
}

void CDlgYxuPara::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgYxuPara)
		DDX_Control(pDX, IDC_COMBO1, m_UnitNo);
	DDX_Control(pDX, IDC_COMBO_YX_NO, m_YxNo);
	DDX_Check(pDX, IDC_CHECK_COM4, m_Com1_yx);
	DDX_Check(pDX, IDC_CHECK_COM5, m_Com2_yx);
	DDX_Check(pDX, IDC_CHECK_COM6, m_Com3_yx);
	DDX_Check(pDX, IDC_CHECK_POINT_ALLOW, m_Point1Allow);
	DDX_Check(pDX, IDC_CHECK_POINT1_ALLOW, m_Point2Allow);
	DDX_Text(pDX, IDC_EDIT_YX_NAME, m_YxName);
	DDV_MaxChars(pDX, m_YxName, 17);
	DDX_Text(pDX, IDC_EDIT_POINT3, m_Point1_yx);
	DDX_Text(pDX, IDC_EDIT_POINT4, m_Point2_yx);
	DDX_Radio(pDX, IDC_RADIO_ACTION_ALARM, m_ActionAlarm);
	DDX_Control(pDX, IDC_COMBO_ALARMLEVEL2, m_AlarmLevel);
	DDX_Control(pDX, IDC_COMBO_ALARM_NO, m_AlarmNo);
	DDX_Text(pDX, IDC_EDIT_ALARM_NAME, m_AlarmName);
	DDV_MaxChars(pDX, m_AlarmName, 20);
	DDX_Text(pDX, IDC_EDIT_ALARM_VOICE1, m_Voice1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgYxuPara, CPropertyPage)
	//{{AFX_MSG_MAP(CDlgYxuPara)
	ON_CBN_SELENDOK(IDC_COMBO1, OnSelendokCombo1)
	ON_CBN_SELENDOK(IDC_COMBO_YX_NO, OnSelendokComboYxNo)
	ON_EN_CHANGE(IDC_EDIT_YX_NAME, OnChangeEditYxName)
	ON_BN_CLICKED(IDC_RADIO_ACTION_ALARM, OnRadioActionAlarm)
	ON_BN_CLICKED(IDC_RADIO_STATUS_ALARM, OnRadioStatusAlarm)
	ON_EN_CHANGE(IDC_EDIT_POINT3, OnChangeEditPoint3)
	ON_EN_CHANGE(IDC_EDIT_POINT4, OnChangeEditPoint4)
	ON_BN_CLICKED(IDC_CHECK_POINT_ALLOW, OnCheckPointAllow)
	ON_BN_CLICKED(IDC_CHECK_POINT1_ALLOW, OnCheckPoint1Allow)
	ON_BN_CLICKED(IDC_CHECK_COM4, OnCheckCom4)
	ON_BN_CLICKED(IDC_CHECK_COM5, OnCheckCom5)
	ON_BN_CLICKED(IDC_CHECK_COM6, OnCheckCom6)
	ON_CBN_SELENDOK(IDC_COMBO_ALARM_NO, OnSelendokComboAlarmNo)
	ON_EN_CHANGE(IDC_EDIT_ALARM_NAME, OnChangeEditAlarmName)
	ON_CBN_SELENDOK(IDC_COMBO_ALARMLEVEL2, OnSelendokComboAlarmlevel2)
	ON_EN_CHANGE(IDC_EDIT_ALARM_VOICE1, OnChangeEditAlarmVoice1)
	ON_BN_CLICKED(IDC_BUTTON_PASTE, OnButtonPaste)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgYxuPara message handlers
void CDlgYxuPara::RefreshData()
{
	int nCurSel = m_YxNo.GetCurSel();
	m_YxName = p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Name;
	m_Point1_yx = p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].OnPtr;
	m_Point2_yx = p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].OffPtr;
	m_Com1_yx = (p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control&0x01)?true:false;
	m_Com2_yx =( p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control&0x02)?true:false;
	m_Com3_yx = (p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control&0x04)?true:false;
	m_ActionAlarm = (p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control&0x08)?true:false;
	m_Point1Allow = (p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control&0x80)?true:false;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT3))->EnableWindow(m_Point1Allow);
	m_Point2Allow = (p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control&0x40)?true:false;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT4))->EnableWindow(m_Point2Allow);


	nCurSel = m_AlarmNo.GetCurSel();
	m_AlarmName = p.YXU_Coe[nUnitNo].Alarm_Coe[nCurSel].Display;
	m_Voice1 = (BYTE)p.YXU_Coe[nUnitNo].Alarm_Coe[nCurSel].Sound[0];
	m_AlarmLevel.SetCurSel(p.YXU_Coe[nUnitNo].Alarm_Coe[nCurSel].Control);
	
	UpdateData(false);
}

void CDlgYxuPara::OnSelendokCombo1() 
{
	// TODO: Add your control notification handler code here
		int nCurSel = m_UnitNo.GetCurSel();
	if(nCurSel!=CB_ERR)
		nUnitNo = nCurSel;
	RefreshData();
}

void CDlgYxuPara::OnSelendokComboYxNo() 
{
	RefreshData();	
}

void CDlgYxuPara::OnChangeEditYxName() 
{
	UpdateData(true);
	int nCurSel = m_YxNo.GetCurSel();
	strcpy(p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Name,m_YxName);
	SETDF0241PARA	
}

void CDlgYxuPara::OnRadioActionAlarm() 
{
		UpdateData(true);
	int nCurSel = m_YxNo.GetCurSel();
	p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control &= 0xF7;
	SETDF0241PARA
}

void CDlgYxuPara::OnRadioStatusAlarm() 
{
		UpdateData(true);
	int nCurSel = m_YxNo.GetCurSel();
	p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control |= 0x08;
	SETDF0241PARA
}

void CDlgYxuPara::OnChangeEditPoint3() 
{
	UpdateData(true);

		int nCurSel = m_YxNo.GetCurSel();
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].OnPtr = m_Point1_yx;
	
	SETDF0241PARA	
}

void CDlgYxuPara::OnChangeEditPoint4() 
{
UpdateData(true);
	
		int nCurSel = m_YxNo.GetCurSel();
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].OffPtr = m_Point2_yx;
	
	SETDF0241PARA
}

void CDlgYxuPara::OnCheckPointAllow() 
{
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_POINT_ALLOW)))->GetCheck();
	if(check)
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control |= 0x80;
	else
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control &= 0x7F;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT3))->EnableWindow(check);
	SETDF0241PARA
}

void CDlgYxuPara::OnCheckPoint1Allow() 
{
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_POINT1_ALLOW)))->GetCheck();
	if(check)
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control |= 0x40;
	else
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control &= 0xBF;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT4))->EnableWindow(check);
	SETDF0241PARA
}

void CDlgYxuPara::OnCheckCom4() 
{
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM4)))->GetCheck();
	if(check)
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control |= 0x01;
	else
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control &= 0xFE;
	SETDF0241PARA
}

void CDlgYxuPara::OnCheckCom5() 
{
int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM5)))->GetCheck();
	if(check)
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control |= 0x02;
	else
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control &= 0xFD;
	SETDF0241PARA
}

void CDlgYxuPara::OnCheckCom6() 
{
	int nCurSel = m_YxNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM6)))->GetCheck();
	if(check)
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control |= 0x04;
	else
		p.YXU_Coe[nUnitNo].YX_Coe[nCurSel].Control &= 0xFB;
	SETDF0241PARA
}

void CDlgYxuPara::OnSelendokComboAlarmNo() 
{
		RefreshData();
}

void CDlgYxuPara::OnChangeEditAlarmName() 
{
UpdateData(true);
	int nCurSel = m_AlarmNo.GetCurSel();
	strcpy(p.YXU_Coe[nUnitNo].Alarm_Coe[nCurSel].Display,m_AlarmName);
	SETDF0241PARA
}

void CDlgYxuPara::OnSelendokComboAlarmlevel2() 
{
		UpdateData(true);
	int nCurSel = m_AlarmNo.GetCurSel();
	p.YXU_Coe[nUnitNo].Alarm_Coe[nCurSel].Control = m_AlarmLevel.GetCurSel();
	SETDF0241PARA
}

void CDlgYxuPara::OnChangeEditAlarmVoice1() 
{
UpdateData(true);
	int nCurSel = m_AlarmNo.GetCurSel();
	p.YXU_Coe[nUnitNo].Alarm_Coe[nCurSel].Sound[0] = m_Voice1;
	SETDF0241PARA
}

BOOL CDlgYxuPara::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	SetModified();
	((CMainFrame*)AfxGetMainWnd())->GetDF0241Para(p);

	m_UnitNo.SetCurSel(0);

	m_YxNo.SetCurSel(0);
	m_AlarmNo.SetCurSel(0);

	RefreshData();	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CDlgYxuPara::OnApply() 
{
	// TODO: Add your specialized code here and/or call the base class
	CFile file;
	p.CheckSum = ((CMainFrame*)AfxGetMainWnd())->Check_Coe((BYTE*)&p,sizeof(p)-2);
	if(file.Open(strFileName,CFile::modeWrite|CFile::modeCreate))
	{
		file.Write(&p,sizeof(p));
		file.Close();
	}
	return CPropertyPage::OnApply();
}
void CDlgYxuPara::OnButtonPaste()
{
	int nFromNo = ((CComboBox*)GetDlgItem(IDC_COMBO2))->GetCurSel();
	int nToNo = ((CComboBox*)GetDlgItem(IDC_COMBO3))->GetCurSel();
	if ((nFromNo<0)||(nToNo<0))
	{
		MessageBox("请选择需要复制的源单元和目的单元!");
		return;
	}
	p.YXU_Coe[nToNo] = p.YXU_Coe[nFromNo];
	OnSelendokCombo1();
	OnApply();
	MessageBox("复制成功!");
}

⌨️ 快捷键说明

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