📄 ykytdlg.cpp
字号:
// YkYtDlg.cpp : implementation file
//
#include "stdafx.h"
#include "maintain.h"
#include "YkYtDlg.h"
#include "maintainview.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CYkYtDlg dialog
CYkYtDlg::CYkYtDlg(CWnd* pParent /*=NULL*/)
: CDialog(CYkYtDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CYkYtDlg)
m_YkNo = 0;
m_YkAction = -1;
m_YtValue = 0.0;
//}}AFX_DATA_INIT
pWnd = pParent;
}
void CYkYtDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CYkYtDlg)
DDX_Control(pDX, IDC_EDIT_YTNO, m_YtNo);
DDX_Control(pDX, IDC_EDIT_RETURNINFO, m_info);
DDX_Control(pDX, IDC_BTN_YKEXECUTE, m_ykExecute);
DDX_Control(pDX, IDC_BTN_YKCANCEL, m_ykCancel);
DDX_Text(pDX, IDC_EDIT_YKNO, m_YkNo);
DDV_MinMaxInt(pDX, m_YkNo, 0, 255);
DDX_CBIndex(pDX, IDC_COMBO_YKACTION, m_YkAction);
DDX_Text(pDX, IDC_EDIT_YTVALUE, m_YtValue);
DDV_MinMaxDouble(pDX, m_YtValue, 0., 1000.);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CYkYtDlg, CDialog)
//{{AFX_MSG_MAP(CYkYtDlg)
ON_BN_CLICKED(IDC_BTN_YKSELECT, OnBtnYkselect)
ON_BN_CLICKED(IDC_BTN_YKEXECUTE, OnBtnYkexecute)
ON_BN_CLICKED(IDC_BTN_YKCANCEL, OnBtnYkcancel)
ON_BN_CLICKED(IDC_BTN_YTEXECUTE, OnBtnYtexecute)
ON_MESSAGE(MSG_CONTROLRETURN, OnControlResult)
ON_MESSAGE(MSG_CONTROLRETURN_MODBUS, OnModbusControlResult)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CYkYtDlg message handlers
void CYkYtDlg::OnBtnYkselect()
{
// TODO: Add your control notification handler code here
UpdateData(true);
((CMaintainView*)pWnd)->SetYkPara(m_YkNo,m_YkAction);
m_info.SetWindowText(_T(""));
}
void CYkYtDlg::OnBtnYkexecute()
{
// TODO: Add your control notification handler code here
int nCurGuiyue = ((CMaintainView*)pWnd)->GetGuiyueType();
if((nCurGuiyue == 3)||(nCurGuiyue == 4))//0420 modbus
{
UpdateData(true);
((CMaintainView*)pWnd)->SetYkPara(m_YkNo,m_YkAction);
}
else
{
m_info.SetWindowText(_T("遥控执行"));
((CMaintainView*)pWnd)->YkExecute();
((CButton*)GetDlgItem(IDC_BTN_YKEXECUTE))->EnableWindow(false);
((CButton*)GetDlgItem(IDC_BTN_YKCANCEL))->EnableWindow(false);
}
}
void CYkYtDlg::OnBtnYkcancel()
{
// TODO: Add your control notification handler code here
((CMaintainView*)pWnd)->YkCancel();
int nCurGuiyue = ((CMaintainView*)pWnd)->GetGuiyueType();
if((nCurGuiyue == 1)||(nCurGuiyue == 2))//cdt,fdk
{
m_info.SetWindowText(_T("遥控撤销"));
((CButton*)GetDlgItem(IDC_BTN_YKEXECUTE))->EnableWindow(false);
((CButton*)GetDlgItem(IDC_BTN_YKCANCEL))->EnableWindow(false);
}
}
void CYkYtDlg::OnBtnYtexecute()
{
// TODO: Add your control notification handler code here
UpdateData(true);
CString ytno,ytvalue;
m_YtNo.GetWindowText(ytno);
int nCurGuiyue = ((CMaintainView*)pWnd)->GetGuiyueType();
if(nCurGuiyue == 4)//modbus遥调不含小数位
((CMaintainView*)pWnd)->SetYtPara(int(m_YtValue),atoi(ytno));
else
((CMaintainView*)pWnd)->SetYtPara(int(m_YtValue*10),atoi(ytno));
if((nCurGuiyue == 1)||(nCurGuiyue == 2))//cdt,fdk
m_info.SetWindowText(_T("遥调执行"));
}
BOOL CYkYtDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_YtNo.SetWindowText("0");
// TODO: Add extra initialization here
m_YkAction = 0;
UpdateData(false);
//fdk cdt都应该有反校 0420 0241 modbus遥控遥调都是直接下发
int nCurGuiyue = ((CMaintainView*)pWnd)->GetGuiyueType();
if((nCurGuiyue == 3)||((nCurGuiyue == 4)))
{
((CButton*)GetDlgItem(IDC_BTN_YKSELECT))->EnableWindow(false);
((CButton*)GetDlgItem(IDC_BTN_YKEXECUTE))->EnableWindow(true);
((CButton*)GetDlgItem(IDC_BTN_YKCANCEL))->EnableWindow(false);
m_YtNo.EnableWindow(true);
if (nCurGuiyue == 3)
m_info.SetWindowText("遥调值可为整数或带一位小数,实际下发值为设定值的10倍");
else
m_info.SetWindowText("遥调值不含小数,例如256V则传0x100");
}
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CYkYtDlg::OnModbusControlResult(WPARAM wParam, LPARAM lParam)
{
CString str;
WORD rtn1 = (WORD)wParam;
WORD rtn2 = (WORD)lParam;
switch(rtn1) {
case 1://yk return
if (rtn2 == 0x00)
str = _T("遥控分");
else
str = _T("遥控合");
break;
case 2://yt return
str.Format("遥调电压值:%d",rtn2);
break;
default:
break;
}
m_info.SetWindowText(str);
}
void CYkYtDlg::OnControlResult(WPARAM wParam, LPARAM lParam)
{
CString str;
int rtn1 = (int)wParam;
int rtn2 = (int)lParam;
switch(rtn1)
{
case -1:
str = _T("遥控反校返回数据长度错误或校验错误!");
break;
case 0:
str = _T("操作正确");
break;
case 0xff://cdt
case 0x03://fdk
str = _T("遥控反校错误!");
break;
case 0xCC://cdt合
case 0x33://cdt分
case 0x02://fdk
str = _T("遥控反校正确,请执行或撤销遥控操作!");
m_ykCancel.EnableWindow(true);
m_ykExecute.EnableWindow(true);
break;
case 101://0420
str = _T("遥控执行正确!");
break;
case 100://0420
str = _T("遥控执行错误!");
break;
case 201://0420
str = _T("遥调执行正确!");
break;
case 200://0420
str = _T("遥调执行错误!");
break;
default:
break;
}
m_info.SetWindowText(str);
if(rtn2>0)
{
switch(rtn2)
{
case 1:
str = _T("无效命令");
break;
case 2:
str = _T("校验错误");
break;
case 3:
str = _T("无效帧长度");
break;
case 4:
str = _T("I/O错误");
break;
case 5:
str = _T("函数操作错误");
break;
case 6:
str = _T("笔记本反应超时");
break;
case 7:
str = _T("信件错误");
break;
case 8:
str = _T("地址错误");
break;
case 9:
str = _T("超时错误");
break;
case 10:
str = _T("两次命令不一致");
break;
}
m_info.SetWindowText(str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -