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

📄 netremotectrldlg.cpp

📁 TM8000硬盘录像机客户端编程文档和Demo源代码
💻 CPP
字号:
// NetRemoteCtrlDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Sample.h"
#include "NetRemoteCtrlDlg.h"
#include "ConSDK.h"
#include <WinSock2.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//----------------------------------------------
BOOL  DVRParaChange;
extern BOOL	ENGLISH;
//----------------------------------------------

/////////////////////////////////////////////////////////////////////////////
// CNetRemoteCtrlDlg dialog


CNetRemoteCtrlDlg::CNetRemoteCtrlDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CNetRemoteCtrlDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CNetRemoteCtrlDlg)
	//}}AFX_DATA_INIT
	pParent = NULL ;
	m_nDVRType = 0;
}


void CNetRemoteCtrlDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CNetRemoteCtrlDlg)
	DDX_Control(pDX, IDC_NETCTL_TAB, m_TabSheet);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNetRemoteCtrlDlg, CDialog)
	//{{AFX_MSG_MAP(CNetRemoteCtrlDlg)
	ON_WM_CLOSE()
	ON_WM_SHOWWINDOW()
	ON_NOTIFY(TCN_SELCHANGE, IDC_NETCTL_TAB, OnSelchangeNetctlTab)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNetRemoteCtrlDlg message handlers

BOOL CNetRemoteCtrlDlg::Create(CWnd* pParentWnd) 
{	
//	pParent = (CNetDlg *)pParentWnd ;

	return CDialog::Create(IDD, pParentWnd);
}

BOOL CNetRemoteCtrlDlg::OnInitDialog() 
{
	char * l_RecordPara;//=_T("Record PARA");	
	char * l_VideoPara;
	char * l_SchedulePara;//=_T("Schedule PARA");	
	
	char * l_MotionPara;//=_T("Motion PARA");	
	char * l_MotionRegion;
	char * l_ContactPara;//=_T("Contact PARA");	
	char * l_NetAttr;//=_T("Net setup");	
	char * l_OtherSet;//=_T("Other setup");
	char * l_Record;//=_T("Record");
	char * l_Alarm_Log;
	char * l_GetLog;
	char * l_HeartBeat;
	if(ENGLISH)
	{
		l_RecordPara=_T("Record PARA");	
		l_VideoPara=_T("Video PARA");
		l_SchedulePara=_T("Schedule PARA");	
		
		l_MotionPara=_T("Motion PARA");	
		l_MotionRegion=_T("Motion Region");
		l_ContactPara=_T("Contact PARA");	
		l_NetAttr=_T("Net setup");	
		l_OtherSet=_T("Other setup");
		l_Record=_T("Record");
		l_Alarm_Log=_T("Alarm log");
		l_GetLog = _T("Get Log");
		l_HeartBeat = _T("Heart Beat PARA");
	}
	else
	{
		l_RecordPara=_T("录像参数");
		l_VideoPara=_T("视频参数");
		l_SchedulePara=_T("定时参数");	
		l_MotionPara=_T("移动报警参数");	
		l_MotionRegion=_T("移动报警区域");
		l_ContactPara=_T("探头报警参数");	
		l_NetAttr=_T("网络属性");	
		l_OtherSet=_T("其他设置");	
		l_Record=_T("录像");	
		l_Alarm_Log=_T("报警日志");
		l_GetLog = _T("读取日志");
		l_HeartBeat = _T("心跳属性");
	}
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
    m_TabSheet.AddPage (l_VideoPara,&VideoParaDlg,IDD_NETCTL_VIDEOPARA_DLG);	///视频参数

    m_TabSheet.AddPage (l_Record,&RecDlg,IDD_NETCTL_REC_DLG);//"录像"	
    m_TabSheet.AddPage (l_RecordPara,&RecSetDlg,IDD_NETCTL_RECSET_DLG);//"录像参数"	
    m_TabSheet.AddPage (l_SchedulePara,&SchRecDlg,IDD_NETCTL_SCHREC_DLG);//"定时参数"	
    m_TabSheet.AddPage (l_MotionPara,&MAlarmDlg,IDD_NETCTL_MALARM_DLG);//"移动报警参数"	
 	m_TabSheet.AddPage (l_MotionRegion,&MRegionDlg,IDD_NETCTL_MREGION_DLG);
	m_TabSheet.AddPage (l_ContactPara,&PAlarmDlg,IDD_NETCTL_PALARM_DLG);//"探头报警参数"	
    m_TabSheet.AddPage (l_NetAttr,&NetAddrDlg,IDD_NETCTL_NETADDR_DLG);//"添加DVR"	
	//  add

    m_TabSheet.AddPage (l_OtherSet,&ElseDlg,IDD_NETCTL_ELSE_DLG);//"其他设置"
	m_TabSheet.AddPage (l_GetLog, &ReadLog, IDD_NETCTL_DVRLOG_DLG);//读取日志	
	m_TabSheet.AddPage (l_HeartBeat, &HeartBeatDlg, IDD_NETCTL_HEARTBEAT); // 该页面为专用
	
	m_TabSheet.Show();

	return TRUE ;
}

BOOL CNetRemoteCtrlDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	DWORD t1=0;
	DWORD t2=0;

    t1=pMsg->message;
	t2=(DWORD)pMsg->wParam;
	if(t1==WM_KEYDOWN&&(t2==VK_RETURN||t2==VK_ESCAPE))
       return true;
	
	return CDialog::PreTranslateMessage(pMsg);
}

void CNetRemoteCtrlDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default

/*	if(DVRParaChange)
	{
		DVRParaChange=false;
	    pParent->SetNetRemoteSaveFlash();
	}*/
	
	CDialog::OnClose();
}

void CNetRemoteCtrlDlg::PostNcDestroy() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CDialog::PostNcDestroy();
	DestroyWindow();
}

void CNetRemoteCtrlDlg::Refresh()
{
	RecDlg.Refresh();
	RecSetDlg.Refresh();
	SchRecDlg.Refresh();
	MAlarmDlg.Refresh();
	PAlarmDlg.Refresh();
	ElseDlg.Refresh();
	VideoParaDlg.Refresh();
	NetAddrDlg.Refresh();
	MRegionDlg.Refresh();
	if ((m_nDVRType == 3) || 
		(m_nDVRType == 6) ||
		(m_nDVRType == 7))
		HeartBeatDlg.Refresh();
}

void CNetRemoteCtrlDlg::SetIpPort(unsigned long nIpAddr,unsigned short nServPort, int nDVRType)
{
	char * l_RemoteCtrl;
	if(ENGLISH)
	{
		l_RemoteCtrl=_T("Remote Ctrl");
	}
	else
	{
		l_RemoteCtrl=_T("远程控制");
	}
	CString Title;
	IN_ADDR	InAddr;
	m_nIpAddr=nIpAddr;
	m_nServPort=nServPort;
	m_nDVRType = nDVRType;
	InAddr.s_addr=nIpAddr;
	Title.Format("%s %s(%04d)",l_RemoteCtrl,inet_ntoa(InAddr),nServPort);
	SetWindowText(Title);
}


void CNetRemoteCtrlDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	if( (bShow) && (nStatus == 0))
	{
		SetWindowPos (&wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);	
		UpdateData(TRUE);
        SetWindowPos (&wndNoTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);	  
	}
}

void CNetRemoteCtrlDlg::SetNetPortName(unsigned char PortNo,char *strPortName)
{
	Con_SetLabel(m_nIpAddr,m_nServPort,PortNo,strPortName);
}

void CNetRemoteCtrlDlg::SetNetRemoteDefault()
{
	Con_RecoverDefaultSet(m_nIpAddr,m_nServPort);
}

void CNetRemoteCtrlDlg::SetNetRemoteSaveFlash()
{
	Con_SavePara(m_nIpAddr,m_nServPort);
}

void CNetRemoteCtrlDlg::SetNetRemoteRec(unsigned char PortNo,unsigned char nSchRec,unsigned char nMotionRec,unsigned char nContactRec,unsigned char nManualRec)
{
	Con_SetRecord(m_nIpAddr,m_nServPort,PortNo,nSchRec,nMotionRec,nContactRec,nManualRec);
}

void CNetRemoteCtrlDlg::SetVideoParaDefault(unsigned char nPort)
{
    Con_SetVideoParaDefault(m_nIpAddr,m_nServPort,nPort);
}

void CNetRemoteCtrlDlg::SetDVRSysTime(unsigned char y, unsigned char mo, unsigned char d, unsigned char h, unsigned char mi, unsigned char s, unsigned char w)
{
   	Con_SetDvrSysTime(m_nIpAddr,m_nServPort,y,mo,d,	h,mi,s,w);
}

void CNetRemoteCtrlDlg::GetDVRSysTime()
{
    Con_GetDvrSysTime(m_nIpAddr,m_nServPort);
}

void CNetRemoteCtrlDlg::SetNetRemoteMAlarmRecSet(unsigned char nPort, unsigned char nWeek,CTime BgnTime1,CTime EndTime1,CTime BgnTime2,CTime EndTime2,unsigned char Smart,unsigned char RecTime,unsigned char nMotionAlarmOut,unsigned char nSelDay,unsigned short nMotionRecPort)
{
	char Buf[20];
	unsigned char Buflen;
	Buf[0]=(unsigned char)BgnTime1.GetHour();
	Buf[1]=(unsigned char)BgnTime1.GetMinute();
	Buf[2]=(unsigned char)EndTime1.GetHour();
	Buf[3]=(unsigned char)EndTime1.GetMinute();
	Buf[4]=(unsigned char)BgnTime2.GetHour();
	Buf[5]=(unsigned char)BgnTime2.GetMinute();
	Buf[6]=(unsigned char)EndTime2.GetHour();
	Buf[7]=(unsigned char)EndTime2.GetMinute();
	Buf[8]=Smart;
	Buf[9]=RecTime;
	memcpy(Buf+10,&nMotionRecPort,2);
	Buflen=12;
	Con_SetMoveAlarmPara(m_nIpAddr,m_nServPort,nPort,nWeek,Buf,nMotionAlarmOut,nSelDay,Buflen);
}

void CNetRemoteCtrlDlg::SetNetRemoteMAlarmRegionSet(unsigned char nPort,unsigned char* MotionCheck,unsigned char Smart,unsigned char *MaskCheck,int NewVersion)
{
	char Buf[128];
	unsigned char Buflen;
	if(NewVersion)
	{
		memcpy(Buf,MotionCheck,52);
		memcpy(Buf+52,MaskCheck,52);
		Buflen=104;
	}
	else
	{
		memcpy(Buf,MotionCheck,13);
		memcpy(Buf+13,MaskCheck,13);
		Buflen=26;
	}
	Con_SetVideoMoveRegion(m_nIpAddr,m_nServPort,nPort,Buf,Smart,Buflen);//设置视频移动报警区域及屏蔽区域
}

void CNetRemoteCtrlDlg::SetNetRemoteAddress(unsigned long ipaddr, unsigned long gateway,unsigned long mask)
{
	Con_SetNetAttr(m_nIpAddr,m_nServPort,htonl(ipaddr),htonl(gateway),htonl(mask));
}

void CNetRemoteCtrlDlg::SetNetRemoteName(CString m_EditNetName)
{
	char Buf[50];
	memset(Buf,0,50);
	strcpy(Buf,m_EditNetName);
	Con_SetDVRName(m_nIpAddr,m_nServPort,Buf);
}

void CNetRemoteCtrlDlg::SetNetRemotePAlarmRecSet(unsigned char nInput,unsigned char nWeek,CTime BgnTime1,CTime EndTime1,CTime BgnTime2,CTime EndTime2,unsigned char m_ProbeTime,unsigned char nProbeOutput,unsigned short nRecPort,unsigned char m_ContactRec,unsigned char nSelDay,unsigned char *nProbePreset,unsigned char PresetNolen)
{
	char Buf[12];
	Buf[0]=(unsigned char)BgnTime1.GetHour();
	Buf[1]=(unsigned char)BgnTime1.GetMinute();
	Buf[2]=(unsigned char)EndTime1.GetHour();
	Buf[3]=(unsigned char)EndTime1.GetMinute();
	Buf[4]=(unsigned char)BgnTime2.GetHour();
	Buf[5]=(unsigned char)BgnTime2.GetMinute();
	Buf[6]=(unsigned char)EndTime2.GetHour();
	Buf[7]=(unsigned char)EndTime2.GetMinute();
	Buf[8]=m_ProbeTime;
	Buf[9]=nProbeOutput;
//	Buf[10]=nRecPort;
	memcpy(Buf+10,&nRecPort,sizeof(unsigned short));
	Con_SetProbeAlarmPara(m_nIpAddr,m_nServPort,nInput,nWeek,Buf,m_ContactRec,
		nSelDay, nProbePreset,PresetNolen);

}

void CNetRemoteCtrlDlg::SetCameraPara(unsigned char PortNo,unsigned char CameraBaudRateNo,unsigned char CameraAddr)
{
    Con_SetCameraPara(m_nIpAddr,m_nServPort,PortNo,CameraBaudRateNo,CameraAddr);
}

void CNetRemoteCtrlDlg::SetNetRemoteRecSet(unsigned char nPort,int m_RecQuality,unsigned char m_RecFrames,unsigned char m_Audio, 
				unsigned char m_RecRateVarySmart,unsigned char m_RecRateVarySpeed,unsigned char m_DiskCovery,unsigned char m_DatePrint)
{
	if(m_RecQuality>10)
	{// 仅用于支持码率连续可调的主机
		char Buf[10];
		memcpy(Buf,&m_RecQuality,sizeof(int));
		Buf[4]=m_RecFrames;
		Buf[5]=m_Audio;
		Buf[6]=m_RecRateVarySmart;
		Buf[7]=m_RecRateVarySpeed;
		Buf[8]=m_DiskCovery;
		Buf[9]=m_DatePrint;
		Con_SetRecordPara(m_nIpAddr,m_nServPort,nPort,Buf);
	}
	else
	{
		char Buf[7];
		Buf[0]=m_RecQuality;
		Buf[1]=m_RecFrames;
		Buf[2]=m_Audio;
		Buf[3]=m_RecRateVarySmart;
		Buf[4]=m_RecRateVarySpeed;
		Buf[5]=m_DiskCovery;
		Buf[6]=m_DatePrint;
		Con_SetRecordPara(m_nIpAddr,m_nServPort,nPort,Buf);
	}
}

void CNetRemoteCtrlDlg::SetNetRemoteSchRecSet(unsigned char nPort,unsigned char nWeek,CTime m_BgnTime1,CTime m_EndTime1,CTime m_BgnTime2,CTime m_EndTime2,unsigned char nSelDay)
{
	char Buf[8];
	Buf[0]=(unsigned char)m_BgnTime1.GetHour();
	Buf[1]=(unsigned char)m_BgnTime1.GetMinute();
	Buf[2]=(unsigned char)m_EndTime1.GetHour();
	Buf[3]=(unsigned char)m_EndTime1.GetMinute();
	Buf[4]=(unsigned char)m_BgnTime2.GetHour();
	Buf[5]=(unsigned char)m_BgnTime2.GetMinute();
	Buf[6]=(unsigned char)m_EndTime2.GetHour();
	Buf[7]=(unsigned char)m_EndTime2.GetMinute();
	Con_SetScheduleRecordPara(m_nIpAddr,m_nServPort,nPort,nWeek,Buf,nSelDay);
}

void CNetRemoteCtrlDlg::SetNetRemoteVideoPara(unsigned char portno,unsigned char Luma,unsigned char Chroma,unsigned char Contrast)
{
	Con_SetVideoPara(m_nIpAddr,m_nServPort,portno ,Luma,Chroma,Contrast) ;
}

void CNetRemoteCtrlDlg::GetNetRemoteVideoPara(unsigned char portno)
{
	Con_GetVideoPara(m_nIpAddr,m_nServPort,portno);
}

void CNetRemoteCtrlDlg::SetIFrameInterval(unsigned char nPort,UINT nIFrameInterval)
{
	Con_SetDvrIFrameInterval(m_nIpAddr,m_nServPort,nPort,nIFrameInterval);
}

void CNetRemoteCtrlDlg::SendDomeBeta(char *Buf,int size)
{
	CString aa ;
	aa.Format("%d",inet_ntoa(*(struct in_addr*)&m_nIpAddr));
   Con_SendDomeBeta(m_nIpAddr,m_nServPort,Buf,size);
}
void CNetRemoteCtrlDlg::GetDvrLog(unsigned char nLogType,CTime LogTime)
{
	char Buf[10];
	memset(Buf,0,10);
	Buf[0]=nLogType;
	Buf[1]=LogTime.GetYear()-2000;
	Buf[2]=LogTime.GetMonth();
	Buf[3]=LogTime.GetDay();
	Con_GetDvrLog(m_nIpAddr,m_nServPort,Buf,4);

}

void CNetRemoteCtrlDlg::SetLog(CString str)
{
	unsigned int i;
	CString strContent,strTime,strindex;
		
	
	for(i = 0; i < strlen(str) ;)
	{
		int n = str.Find(" ",i);
		if(n == -1)
			break;
		int m = str.Find("\r\n",n);
		if(m == -1)
			break;
		strTime = str.Mid(i,n-i);
		if(strTime=="")
			break;
		strContent = str.Mid(n , m-n);
		if(strContent=="")
			break;
		i = m+2;
		
		int index = 0;
		int nCount = ReadLog.m_LogList.GetItemCount();
		strindex.Format("%d",nCount+1);
		index = ReadLog.m_LogList.InsertItem(nCount+1,strindex);
		ReadLog.m_LogList.SetItem(index,1,LVIF_TEXT,strTime, 0, 0, 0,0);
		ReadLog.m_LogList.SetItem(index,2,LVIF_TEXT,strContent, 0, 0, 0,0);
		
	}

	ReadLog.GetDlgItem(IDC_BTN_GETSYSLOG)->EnableWindow(TRUE);
	ReadLog.GetDlgItem(IDC_BTN_GETNETLOG)->EnableWindow(TRUE);
	ReadLog.GetDlgItem(IDC_BTN_GETALARMLOG)->EnableWindow(TRUE);
	ReadLog.GetDlgItem(IDC_BTN_GETOPLOG)->EnableWindow(TRUE);
	UpdateData(FALSE);
}

void CNetRemoteCtrlDlg::GetDvrParam(unsigned char nChannel,unsigned char WeekNo,DWORD dwCmd,LPVOID lpData,DWORD dwSize)
{
	Con_GetDvrParam(m_nIpAddr,m_nServPort,nChannel,WeekNo,dwCmd,lpData,dwSize);
}

void CNetRemoteCtrlDlg::OnSelchangeNetctlTab(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int i = m_TabSheet.GetCurSel();
		CDialog *pTempDlg = m_TabSheet.m_pPages[i];
		if(pTempDlg==&RecSetDlg)
              RecSetDlg.Refresh();
		if(pTempDlg==&(VideoParaDlg))
			VideoParaDlg.Refresh();
		if(pTempDlg==&(SchRecDlg))
			SchRecDlg.Refresh();
		if(pTempDlg==&(MAlarmDlg))
			MAlarmDlg.Refresh();
		if(pTempDlg==&(MRegionDlg))
			MRegionDlg.Refresh();
		if(pTempDlg==&(PAlarmDlg))
			PAlarmDlg.Refresh();
		if(pTempDlg==&(ElseDlg))
			ElseDlg.Refresh();
		if(pTempDlg==&(RecDlg))
			RecDlg.Refresh();
		if(pTempDlg==&(NetAddrDlg))
			NetAddrDlg.Refresh();
		if(pTempDlg==&(HeartBeatDlg))
			HeartBeatDlg.Refresh();
	*pResult = 0;
}

void CNetRemoteCtrlDlg::SetNetHeartRegParam(DWORD dwCode, void *pData, DWORD dwDataSize)
{
	Con_SetHeartBeatParam(m_nIpAddr,m_nServPort,dwCode,pData,dwDataSize);
}

void CNetRemoteCtrlDlg::SetNetHeartBeatParam(BOOL bBeat, int nPeriod)
{
	Con_SetHeartBeatCondition(m_nIpAddr,m_nServPort,bBeat);	
	Con_SetHeartBeatPeriod(m_nIpAddr,m_nServPort,nPeriod);
}

void CNetRemoteCtrlDlg::GetNetHeartParam()
{
	Con_GetHeartBeatCondition(m_nIpAddr,m_nServPort);
	Con_GetHeartBeatPeriod(m_nIpAddr,m_nServPort);
	Con_GetHeartBeatParam(m_nIpAddr,m_nServPort,NETCOM_CTRL_GET_CMS_REGISTER_PARA);
}

void CNetRemoteCtrlDlg::RefreshHeartParam(BYTE bMsgID, PBYTE pbData)
{
	HeartBeatDlg.DisplayHeartParam(bMsgID, pbData);
}

void CNetRemoteCtrlDlg::SetOSDParam(BYTE nDateSizeType, BYTE nDatePosType, BYTE nChSizeType, BYTE nChPosType, BOOL bReverseColor)
{
	Con_SetOSDParam(m_nIpAddr,m_nServPort, nDateSizeType, nDatePosType, nChSizeType, nChPosType, bReverseColor);
}

⌨️ 快捷键说明

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