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

📄 netctlheartbeatdlg.cpp

📁 TM8000硬盘录像机客户端编程文档和Demo源代码
💻 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 + -