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

📄 dlgycpara.cpp

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

#include "stdafx.h"
#include "maintain.h"
#include "DlgYcPara.h"
#include "public.h"
#include "mainfrm.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgYcPara property page

IMPLEMENT_DYNCREATE(CDlgYcPara, CPropertyPage)

CDlgYcPara::CDlgYcPara() : CPropertyPage(CDlgYcPara::IDD)
{
	//{{AFX_DATA_INIT(CDlgYcPara)
	m_Com1 = FALSE;
	m_Com2 = FALSE;
	m_Com3 = FALSE;
	m_AllowMaxLimitAlarm = FALSE;
	m_LingDian = 0;
	m_MaxLimit = 0;
	m_MinLimit = 0;
	m_DecimalPoint = 0;
	m_TopValue = 0;
	m_Xishu = 0;
	m_YcName = _T("");
	m_Point1 = 0;
	m_Point2 = 0;
	m_CaiYang = -1;
	m_AllowMaxLimitAlarm = FALSE;
	//}}AFX_DATA_INIT
}

CDlgYcPara::~CDlgYcPara()
{
}

void CDlgYcPara::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgYcPara)
	DDX_Control(pDX, IDC_COMBO_YC_NO, m_YcNo);
	DDX_Control(pDX, IDC_COMBO_UNIT, m_Unit);
	DDX_Check(pDX, IDC_CHECK_COM1, m_Com1);
	DDX_Check(pDX, IDC_CHECK_COM2, m_Com2);
	DDX_Check(pDX, IDC_CHECK_COM3, m_Com3);
	DDX_Check(pDX, IDC_CHECK_MAXLIMIT_ALLOW, m_AllowMaxLimitAlarm);
	DDX_Check(pDX, IDC_CHECK_MINLIMIT_ALLOW, m_AllowMinLimitAlarm);
	DDX_Text(pDX, IDC_EDIT_LINGDIAN, m_LingDian);
	DDV_MinMaxInt(pDX, m_LingDian, 0, 9999);
	DDX_Text(pDX, IDC_EDIT_MAXLIMIT, m_MaxLimit);
	DDV_MinMaxInt(pDX, m_MaxLimit, 0, 9999);
	DDX_Text(pDX, IDC_EDIT_MINLIMIT, m_MinLimit);
	DDV_MinMaxInt(pDX, m_MinLimit, 0, 9999);
	DDX_Text(pDX, IDC_EDIT_POINT, m_DecimalPoint);
	DDV_MinMaxInt(pDX, m_DecimalPoint, 0, 9999);
	DDX_Text(pDX, IDC_EDIT_TOPVALUE, m_TopValue);
	DDV_MinMaxInt(pDX, m_TopValue, 0, 9999);
	DDX_Text(pDX, IDC_EDIT_XISHU, m_Xishu);
	DDV_MinMaxInt(pDX, m_Xishu, 0, 9999);
	DDX_Text(pDX, IDC_EDIT_YC_NAME, m_YcName);
	DDV_MaxChars(pDX, m_YcName, 17);
	DDX_Text(pDX, IDC_EDIT_POINT1, m_Point1);
	DDV_MinMaxInt(pDX, m_Point1, 0, 9999);
	DDX_Text(pDX, IDC_EDIT_POINT2, m_Point2);
	DDV_MinMaxInt(pDX, m_Point2, 0, 9999);
	DDX_Radio(pDX, IDC_RADIO_JIAOLIU, m_CaiYang);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgYcPara, CPropertyPage)
	//{{AFX_MSG_MAP(CDlgYcPara)
	ON_CBN_SELENDOK(IDC_COMBO_YC_NO, OnSelendokComboYcNo)
	ON_BN_CLICKED(IDC_RADIO_JIAOLIU, OnRadioJiaoliu)
	ON_BN_CLICKED(IDC_RADIO_ZHILIU, OnRadioZhiliu)
	ON_EN_CHANGE(IDC_EDIT_YC_NAME, OnChangeEditYcName)
	ON_EN_CHANGE(IDC_EDIT_XISHU, OnChangeEditXishu)
	ON_EN_CHANGE(IDC_EDIT_LINGDIAN, OnChangeEditLingdian)
	ON_EN_CHANGE(IDC_EDIT_TOPVALUE, OnChangeEditTopvalue)
	ON_CBN_SELENDOK(IDC_COMBO_UNIT, OnSelendokComboUnit)
	ON_EN_CHANGE(IDC_EDIT_POINT, OnChangeEditPoint)
	ON_EN_CHANGE(IDC_EDIT_MAXLIMIT, OnChangeEditMaxlimit)
	ON_EN_CHANGE(IDC_EDIT_MINLIMIT, OnChangeEditMinlimit)
	ON_EN_CHANGE(IDC_EDIT_POINT1, OnChangeEditPoint1)
	ON_EN_CHANGE(IDC_EDIT_POINT2, OnChangeEditPoint2)
	ON_BN_CLICKED(IDC_CHECK_MAXLIMIT_ALLOW, OnCheckMaxlimitAllow)
	ON_BN_CLICKED(IDC_CHECK_MINLIMIT_ALLOW, OnCheckMinlimitAllow)
	ON_BN_CLICKED(IDC_CHECK_COM1, OnCheckCom1)
	ON_BN_CLICKED(IDC_CHECK_COM2, OnCheckCom2)
	ON_BN_CLICKED(IDC_CHECK_COM3, OnCheckCom3)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgYcPara message handlers
char *unit[]={"V","A","℃"," "};
BOOL CDlgYcPara::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
	CString str;
	for(int i=1;i<YCCOE_COUNT;i++)
	{
		str.Format("%d",i);
		m_YcNo.AddString(str);
	}
	for(i=0;i<4;i++)
		m_Unit.AddString(unit[i]);

	((CMainFrame*)AfxGetMainWnd())->GetPara(p);
	m_YcNo.SetCurSel(0);
	RefreshData();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgYcPara::RefreshData()
{
	int nCurSel = m_YcNo.GetCurSel();
	m_YcName = p.YC_Coe[nCurSel].Name;
	m_Xishu	= p.YC_Coe[nCurSel].Coe;
	m_TopValue = p.YC_Coe[nCurSel].Scale;
	m_LingDian = p.YC_Coe[nCurSel].Zero;
	m_Unit.SetCurSel(-1);
	for(int i=0;i<4;i++)
	{
		if(strcmp(unit[i],p.YC_Coe[nCurSel].Unit)==0)
			m_Unit.SetCurSel(i);
	}
	m_DecimalPoint = BYTE(p.YC_Coe[nCurSel].Dot);
	m_MaxLimit = p.YC_Coe[nCurSel].UpperLimit;
	m_MinLimit = p.YC_Coe[nCurSel].UnderLimit;
	m_Point1 = p.YC_Coe[nCurSel].UpperPtr;
	m_Point2 = p.YC_Coe[nCurSel].UnderPtr;

	m_Com1 = (p.YC_Coe[nCurSel].Control&0x01)?true:false;
	m_Com2 =( p.YC_Coe[nCurSel].Control&0x02)?true:false;
	m_Com3 = (p.YC_Coe[nCurSel].Control&0x04)?true:false;
	m_CaiYang = (p.YC_Coe[nCurSel].Control&0x08)?true:false;
	m_AllowMinLimitAlarm = (p.YC_Coe[nCurSel].Control&0x40)?true:false;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT2))->EnableWindow(m_AllowMinLimitAlarm);
	m_AllowMaxLimitAlarm = (p.YC_Coe[nCurSel].Control&0x80)?true:false;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT1))->EnableWindow(m_AllowMaxLimitAlarm);
	UpdateData(false);
}

void CDlgYcPara::OnSelendokComboYcNo() 
{
	// TODO: Add your control notification handler code here
	RefreshData();
}

void CDlgYcPara::OnRadioJiaoliu() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int nCurSel = m_YcNo.GetCurSel();
	p.YC_Coe[nCurSel].Control &= 0xF7;
	SETPARA
}

void CDlgYcPara::OnRadioZhiliu() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int nCurSel = m_YcNo.GetCurSel();
	p.YC_Coe[nCurSel].Control &= 0x08;
	SETPARA
}

void CDlgYcPara::OnChangeEditYcName() 
{
	UpdateData(true);
	int nCurSel = m_YcNo.GetCurSel();
	strcpy(p.YC_Coe[nCurSel].Name,m_YcName);
	SETPARA
}

void CDlgYcPara::OnChangeEditXishu() 
{
	UpdateData(true);
	int nCurSel = m_YcNo.GetCurSel();
	p.YC_Coe[nCurSel].Coe = m_Xishu;
	SETPARA
}

void CDlgYcPara::OnChangeEditLingdian() 
{
	UpdateData(true);
	int nCurSel = m_YcNo.GetCurSel();
	p.YC_Coe[nCurSel].Zero = m_LingDian;
	SETPARA
}

void CDlgYcPara::OnChangeEditTopvalue() 
{
	UpdateData(true);
	int nCurSel = m_YcNo.GetCurSel();
	p.YC_Coe[nCurSel].Scale = m_TopValue;
	SETPARA
}

void CDlgYcPara::OnSelendokComboUnit() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YcNo.GetCurSel();
	int Sel = m_Unit.GetCurSel();
	if(Sel >= 0)
		m_Unit.GetLBText(Sel,p.YC_Coe[nCurSel].Unit);
	SETPARA
}

void CDlgYcPara::OnChangeEditPoint() 
{
	UpdateData(true);
	int nCurSel = m_YcNo.GetCurSel();
	p.YC_Coe[nCurSel].Dot = m_DecimalPoint;
	SETPARA
}

void CDlgYcPara::OnChangeEditMaxlimit() 
{
	UpdateData(true);
	if(m_MaxLimit<m_MinLimit)
	{
		MessageBox(_T("下限值不能超过上限值"));
		return;
	}
	int nCurSel = m_YcNo.GetCurSel();
	p.YC_Coe[nCurSel].UpperLimit = m_MaxLimit;
	SETPARA
}

void CDlgYcPara::OnChangeEditMinlimit() 
{
	UpdateData(true);
	if(m_MinLimit>m_MaxLimit)
	{
		MessageBox(_T("下限值不能超过上限值"));
		return;
	}
	int nCurSel = m_YcNo.GetCurSel();
	p.YC_Coe[nCurSel].UnderLimit = m_MinLimit;
	SETPARA
}

void CDlgYcPara::OnChangeEditPoint1() 
{
	UpdateData(true);
	
		int nCurSel = m_YcNo.GetCurSel();
		p.YC_Coe[nCurSel].UpperPtr = m_Point1;
	
	SETPARA
}

void CDlgYcPara::OnChangeEditPoint2() 
{
	UpdateData(true);
	
		int nCurSel = m_YcNo.GetCurSel();
		p.YC_Coe[nCurSel].UnderPtr = m_Point2;
	
	SETPARA
}

void CDlgYcPara::OnCheckMaxlimitAllow() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YcNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_MAXLIMIT_ALLOW)))->GetCheck();
	if(check)
		p.YC_Coe[nCurSel].Control |= 0x80;
		
	else
		p.YC_Coe[nCurSel].Control &= 0x7F;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT1))->EnableWindow(check);
	SETPARA
}

void CDlgYcPara::OnCheckMinlimitAllow() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YcNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_MINLIMIT_ALLOW)))->GetCheck();
	if(check)
		p.YC_Coe[nCurSel].Control |= 0x40;
	else
		p.YC_Coe[nCurSel].Control &= 0xBF;
	((CEdit*)GetDlgItem(IDC_EDIT_POINT2))->EnableWindow(check);
	SETPARA
}

void CDlgYcPara::OnCheckCom1() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YcNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM1)))->GetCheck();
	if(check)
		p.YC_Coe[nCurSel].Control |= 0x01;
	else
		p.YC_Coe[nCurSel].Control &= 0xFE;
	SETPARA
}

void CDlgYcPara::OnCheckCom2() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YcNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM2)))->GetCheck();
	if(check)
		p.YC_Coe[nCurSel].Control |= 0x02;
	else
		p.YC_Coe[nCurSel].Control &= 0xFD;
	SETPARA
}

void CDlgYcPara::OnCheckCom3() 
{
	// TODO: Add your control notification handler code here
	int nCurSel = m_YcNo.GetCurSel();
	int check = ((CButton*)(GetDlgItem(IDC_CHECK_COM3)))->GetCheck();
	if(check)
		p.YC_Coe[nCurSel].Control |= 0x04;
	else
		p.YC_Coe[nCurSel].Control &= 0xFB;
	SETPARA
}

⌨️ 快捷键说明

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