📄 netctlheartbeatdlg.cpp
字号:
// NetCtlHeartBeatDlg.cpp : implementation file
//
#include "stdafx.h"
#include "sample.h"
#include "NetCtlHeartBeatDlg.h"
#include "NetRemoteCtrlDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNetCtlHeartBeatDlg dialog
extern CNetRemoteCtrlDlg *pNetRemoteCtlDlg;
CNetCtlHeartBeatDlg::CNetCtlHeartBeatDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNetCtlHeartBeatDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNetCtlHeartBeatDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CNetCtlHeartBeatDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNetCtlHeartBeatDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNetCtlHeartBeatDlg, CDialog)
//{{AFX_MSG_MAP(CNetCtlHeartBeatDlg)
ON_BN_CLICKED(IDC_BUTTON_REG, OnButtonReg)
ON_BN_CLICKED(IDC_BUTTON_ADDDEV, OnButtonAdddev)
ON_BN_CLICKED(IDC_BUTTON_DELDEV, OnButtonDeldev)
ON_BN_CLICKED(IDC_BUTTON_SETHEART, OnButtonSetheart)
ON_BN_CLICKED(IDC_BUTTON_UNREG, OnButtonUnreg)
ON_BN_CLICKED(IDC_BUTTON_SETREG, OnButtonSetreg)
ON_BN_CLICKED(IDC_BUTTON_REFRESHREG, OnButtonRefreshreg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNetCtlHeartBeatDlg message handlers
void CNetCtlHeartBeatDlg::OnButtonReg()
{
// TODO: Add your control notification handler code here
HEARTBEAT_REG_SERVER ServerParam;
memset(&ServerParam,0,sizeof(ServerParam));
ServerParam.bParaMask = 0x10;
pNetRemoteCtlDlg->SetNetHeartRegParam(NETCOM_CTRL_SET_CMS_REGISTER_PARA,
&(ServerParam.bParaMask),
sizeof(HEARTBEAT_REG_SERVER)-3);
}
void CNetCtlHeartBeatDlg::Refresh()
{
pNetRemoteCtlDlg->GetNetHeartParam();
}
void CNetCtlHeartBeatDlg::OnButtonAdddev()
{
// TODO: Add your control notification handler code here
CComboBox *pDevIDSComboBox = ((CComboBox *)GetDlgItem(IDC_COMBO_AROUND_DEVIDS));
CString strSubDevID="";
BOOL bEnable=0;
GetDlgItemText(IDC_EDIT_AROUND_DEVID,strSubDevID);
bEnable = ((CButton *)GetDlgItem(IDC_CHECK_ENABLEDEV))->GetCheck();
if(strSubDevID.GetLength() > 20)
{
MessageBox("设备ID不能超过20个字节!");
return;
}
if(pDevIDSComboBox->GetCount()>=20)
{
MessageBox("周边设备数量不能超过20个!");
return;
}
if (bEnable)
{
strSubDevID = "1-"+strSubDevID;
}
else
{
strSubDevID = "0-"+strSubDevID;
}
int nNextSel = pDevIDSComboBox->GetCount();
pDevIDSComboBox->InsertString(nNextSel,strSubDevID);
pDevIDSComboBox->SetCurSel(0);
}
void CNetCtlHeartBeatDlg::OnButtonDeldev()
{
// TODO: Add your control notification handler code here
CComboBox *pDevIDSComboBox = ((CComboBox *)GetDlgItem(IDC_COMBO_AROUND_DEVIDS));
int nCurSel = pDevIDSComboBox->GetCurSel();
if(nCurSel < 0)
{
MessageBox("请选择要删除的设备ID!");
return;
}
CString str="";
pDevIDSComboBox->GetLBText( nCurSel, str);
//str.ReleaseBuffer();
SetDlgItemText(IDC_EDIT_AROUND_DEVID,
str.Right(str.GetLength()-2));
int nEnable = atoi(str.Left(1));
((CButton *)GetDlgItem(IDC_CHECK_ENABLEDEV))->SetCheck(nEnable);
pDevIDSComboBox->DeleteString(nCurSel);
if (pDevIDSComboBox->GetCount()>0)
pDevIDSComboBox->SetCurSel(0);
else
pDevIDSComboBox->SetCurSel(-1);
}
void CNetCtlHeartBeatDlg::OnButtonSetheart()
{
// TODO: Add your control notification handler code here
CString str="";
GetDlgItemText(IDC_EDIT_HEARTPERIOD,str);
int nBeatPeriod = atoi(str);
BOOL bBeat = ((CButton *)GetDlgItem(IDC_CHECK_ENABLEHEARTBEAT))->GetCheck();
pNetRemoteCtlDlg->SetNetHeartBeatParam(bBeat, nBeatPeriod);
}
void CNetCtlHeartBeatDlg::DisplayHeartParam(BYTE bMsgID, PBYTE pbData)
{
CString str="";
HEARTBEAT_REG_SERVER RegParaHead;
BYTE pbTemp[23];
memset(pbTemp,0,23);
memset(&RegParaHead,0,sizeof(RegParaHead));
CComboBox *pSubDevIDS;
switch(bMsgID)
{
case NETCOM_CTRL_GET_HEARTBEAT_PERIOD:
str.Format("%d",*(int *)pbData);
SetDlgItemText(IDC_EDIT_HEARTPERIOD,str);
break;
case NETCOM_CTRL_GET_HEARTBEAT_CONDITION:
((CButton *)GetDlgItem(IDC_CHECK_ENABLEHEARTBEAT))->SetCheck(*pbData);
break;
case NETCOM_CTRL_GET_CMS_REGISTER_PARA:
{
memcpy(&(RegParaHead.dwSerIP),pbData+1,sizeof(RegParaHead)-4);
((CIPAddressCtrl *)GetDlgItem(IDC_IP_HEART))->SetAddress(RegParaHead.dwSerIP);
SetDlgItemInt(IDC_EDIT_HEARTPORT,RegParaHead.wSerPort);
memcpy(pbTemp,RegParaHead.pbDevID,20);
SetDlgItemText(IDC_EDIT_DEVID,(char *)pbTemp);
if (RegParaHead.wSubDevNum <= 20)
{
pSubDevIDS = (CComboBox *)(GetDlgItem(IDC_COMBO_AROUND_DEVIDS));
pSubDevIDS->ResetContent();
for (int i=0;i<RegParaHead.wSubDevNum;i++)
{
BOOL bEnable = RegParaHead.dwSubDevMask&(1<<i);
memcpy(pbTemp,bEnable?"1-":"0-",2);
memcpy(pbTemp+2,pbData+sizeof(RegParaHead)-3+i*20,20);
pSubDevIDS->AddString((char *)pbTemp);
}
pSubDevIDS->SetCurSel(0);
}
}
break;
default:
break;
}
}
void CNetCtlHeartBeatDlg::OnButtonUnreg()
{
// TODO: Add your control notification handler code here
HEARTBEAT_REG_SERVER ServerParam;
memset(&ServerParam,0,sizeof(ServerParam));
ServerParam.bParaMask = 0x40;
pNetRemoteCtlDlg->SetNetHeartRegParam(NETCOM_CTRL_SET_CMS_REGISTER_PARA,
&(ServerParam.bParaMask),
sizeof(HEARTBEAT_REG_SERVER)-3);
}
void CNetCtlHeartBeatDlg::OnButtonSetreg()
{
// TODO: Add your control notification handler code here
this->UpdateData();
CString strHeartIP = "";
CString strHeartPort = "";
CString strDevID = "";
CString strPass = "";
GetDlgItemText(IDC_IP_HEART,strHeartIP);
GetDlgItemText(IDC_EDIT_HEARTPORT,strHeartPort);
GetDlgItemText(IDC_EDIT_DEVID,strDevID);
GetDlgItemText(IDC_EDIT_PASS,strPass);
if (strDevID.GetLength() >20)
{
MessageBox("设备ID不能超过20个字节!");
return;
}
if (strPass.GetLength() > 12)
{
MessageBox("注册服务器密码不能超过12个字节!");
return;
}
BYTE pbRegInfo[48+400];
memset(pbRegInfo,0,sizeof(pbRegInfo));
HEARTBEAT_REG_SERVER *pServerParam = (HEARTBEAT_REG_SERVER *)pbRegInfo;
pServerParam->bParaMask = 0x0f;
pServerParam->dwSerIP = inet_addr(strHeartIP);
pServerParam->wSerPort = atoi(strHeartPort);
memcpy(pServerParam->pbPass, strPass, strPass.GetLength());
memcpy(pServerParam->pbDevID, strDevID,strDevID.GetLength());
CComboBox *pDevIDSComboBox = ((CComboBox *)GetDlgItem(IDC_COMBO_AROUND_DEVIDS));
pServerParam->wSubDevNum = pDevIDSComboBox->GetCount()>20?20:pDevIDSComboBox->GetCount();
for (int i=0; i<pServerParam->wSubDevNum; i++)
{
CString str="";
int n = pDevIDSComboBox->GetLBTextLen( i );
if (n <= 2)
break;
pDevIDSComboBox->GetLBText( i, str.GetBuffer(n) );
str.ReleaseBuffer();
BYTE bEnable = atoi(str.Left(1));
if (bEnable)
pServerParam->dwSubDevMask |= 1<<i;
memcpy(pbRegInfo+48+i*20,str.GetBuffer(n)+2,n-2);
}
pNetRemoteCtlDlg->SetNetHeartRegParam(NETCOM_CTRL_SET_CMS_REGISTER_PARA,
&(pServerParam->bParaMask),
sizeof(HEARTBEAT_REG_SERVER)-3+pServerParam->wSubDevNum*20);
}
void CNetCtlHeartBeatDlg::OnButtonRefreshreg()
{
// TODO: Add your control notification handler code here
HEARTBEAT_REG_SERVER ServerParam;
memset(&ServerParam,0,sizeof(ServerParam));
ServerParam.bParaMask = 0x20;
pNetRemoteCtlDlg->SetNetHeartRegParam(NETCOM_CTRL_SET_CMS_REGISTER_PARA,
&(ServerParam.bParaMask),
sizeof(HEARTBEAT_REG_SERVER)-3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -