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

📄 remotechannelconfig.cpp

📁 SDK DVR/DVS HIKVISION
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// RemoteChannelConfig.cpp : implementation file
//

#include "stdafx.h"
#include "newclient.h"
#include "RemoteChannelConfig.h"
#include "RemoteRecordPlanConfig.h"
#include "RemoteDetectConfig.h"
#include "RemoteHideConfig.h"
#include "RemoteHideAlarm.h"
#include "VideoLost.h"

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

extern SERVER_INFO serverinfo[MAXIPNUMBER];
extern	CLIENTPARAM	ClientParam;
LPNET_DVR_MOTION lpMotionDetect;
LPNET_DVR_HIDEALARM lpHideAlarm;
LPNET_DVR_VILOST lpVILost;

WORD getFrameI(DWORD selFrameRate)
{
	WORD nRet = 0;
	switch(selFrameRate)
	{
	case 0:
		nRet = 25;
		break;
	case 6:
		nRet = 2;
		break;
	case 7:
		nRet = 4;
		break;
	case 8:
		nRet = 6;
		break;
	case 9:
		nRet = 8;
		break;
	case 10:
		nRet = 10;
		break;
	case 11:
		nRet = 12;
		break;
	case 12:
		nRet = 16;
		break;
	case 13:
		nRet = 20;
		break;
	case 14:
		nRet = 15;
		break;
	case 15:
		nRet = 18;
		break;
	case 16:
		nRet = 22;
		break;
	default:
		nRet = 1;
	}
	nRet *= 4;
	return nRet;
}
/////////////////////////////////////////////////////////////////////////////
// CRemoteChannelConfig dialog


CRemoteChannelConfig::CRemoteChannelConfig(CWnd* pParent /*=NULL*/)
	: CDialog(CRemoteChannelConfig::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRemoteChannelConfig)
	m_ChannelName = _T("");
	m_bOsd = FALSE;
	m_bRecord = FALSE;
	m_bHide = FALSE;
	m_channame_x = 0;
	m_channame_y = 0;
	m_bChanname = FALSE;
	m_bDispWeek = FALSE;
	m_osd_y = 0;
	m_osd_x = 0;
	m_bMotion = FALSE;
	m_bHideAlarm = FALSE;
	m_BitRate = 0;
	m_bVideoLost = FALSE;
	m_FrameI = 0;
	m_bEventEffect = FALSE;
	//}}AFX_DATA_INIT
}


void CRemoteChannelConfig::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRemoteChannelConfig)
	DDX_Control(pDX, IDC_COMBOCOMPRESS, m_CompressCombo);
	DDX_Control(pDX, IDC_COMBOBPINTERVAL, m_BPIntervalCtrl);
	DDX_Control(pDX, IDC_PRERECORDTIME, m_PreRecordTime);
	DDX_Control(pDX, IDC_DELAY, m_DelayCtrl);
	DDX_Control(pDX, IDC_OSDTYPE, m_OsdType);
	DDX_Control(pDX, IDC_OSDATTRIB, m_OsdAttrib);
	DDX_Control(pDX, IDC_COMBOCOPYCHAN, m_CopyChannelCtrl);
	DDX_Control(pDX, IDC_COMCHAN, m_ChannelCtrl);
	DDX_Control(pDX, IDC_COMBOSTREAMTYPE, m_StreamTypeCtrl);
	DDX_Control(pDX, IDC_COMBORESOLUTION, m_ResolutionCtrl);
	DDX_Control(pDX, IDC_COMBOIMAGEQUALITY, m_ImageQualityCtrl);
	DDX_Control(pDX, IDC_COMBOBITRATETYPE, m_BitRateTypeCtrl);
	DDX_Control(pDX, IDC_COMBOFRAMERATE, m_FrameRateCtrl);
	DDX_Control(pDX, IDC_COMBOBITRATE, m_BitRateCtrl);
	DDX_Text(pDX, IDC_CHANNELNAME, m_ChannelName);
	DDX_Check(pDX, IDC_CHKOSD, m_bOsd);
	DDX_Check(pDX, IDC_CHKRECORD, m_bRecord);
	DDX_Check(pDX, IDC_CHKHIDEAREA, m_bHide);
	DDX_Text(pDX, IDC_CHANNAME_X, m_channame_x);
	DDX_Text(pDX, IDC_CHANNAME_Y, m_channame_y);
	DDX_Check(pDX, IDC_CHKCHANNAME, m_bChanname);
	DDX_Check(pDX, IDC_CHKDISPWEEK, m_bDispWeek);
	DDX_Text(pDX, IDC_OSD_Y, m_osd_y);
	DDX_Text(pDX, IDC_OSD_X, m_osd_x);
	DDX_Check(pDX, IDC_CHKMOTION, m_bMotion);
	DDX_Check(pDX, IDC_CHKHIDEALARM, m_bHideAlarm);
	DDX_Text(pDX, IDC_EDITBITRATE, m_BitRate);
	DDX_Check(pDX, IDC_CHKVIDEOLOST, m_bVideoLost);
	DDX_Text(pDX, IDC_EDITFRAMEI, m_FrameI);
	DDX_Check(pDX, IDC_CHECKEVENT, m_bEventEffect);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRemoteChannelConfig, CDialog)
	//{{AFX_MSG_MAP(CRemoteChannelConfig)
	ON_BN_CLICKED(IDC_BUTCHANCOPY, OnButchancopy)
	ON_BN_CLICKED(IDC_BUTMOTION, OnButmotion)
	ON_BN_CLICKED(IDC_BUTRECORD, OnButrecord)
	ON_BN_CLICKED(IDC_CHKRECORD, OnChkrecord)
	ON_BN_CLICKED(IDC_BUTHIDE, OnButhide)
	ON_BN_CLICKED(IDC_CHKHIDEAREA, OnChkhidearea)
	ON_BN_CLICKED(IDC_CHKOSD, OnChkosd)
	ON_BN_CLICKED(IDC_CHKCHANNAME, OnChkchanname)
	ON_CBN_SELCHANGE(IDC_COMCHAN, OnSelchangeComchan)
	ON_CBN_SELCHANGE(IDC_COMBOCOPYCHAN, OnSelchangeCombocopychan)
	ON_BN_CLICKED(IDCHANCFGOK, OnChancfgok)
	ON_BN_CLICKED(IDCHANCFGEXIT, OnChancfgexit)
	ON_BN_CLICKED(IDC_CHKMOTION, OnChkmotion)
	ON_BN_CLICKED(IDC_CHKHIDEALARM, OnChkhidealarm)
	ON_BN_CLICKED(IDC_BUTHIDEALARM, OnButhidealarm)
	ON_CBN_SELCHANGE(IDC_COMBOBITRATE, OnSelchangeCombobitrate)
	ON_BN_CLICKED(IDC_CHKVIDEOLOST, OnChkvideolost)
	ON_BN_CLICKED(IDC_BUTVILOST, OnButvilost)
	ON_CBN_SELCHANGE(IDC_COMBOFRAMERATE, OnSelchangeComboframerate)
	ON_CBN_SELCHANGE(IDC_COMBOCOMPRESS, OnSelchangeCombocompress)
	ON_BN_CLICKED(IDC_SAVEPARA, OnSavepara)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRemoteChannelConfig message handlers

BOOL CRemoteChannelConfig::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CRect rc(0, 0, 0, 0);
	GetParent()->GetClientRect(&rc);
	((CTabCtrl*)GetParent())->AdjustRect(FALSE, &rc);
	MoveWindow(&rc);

	m_CompressCombo.ResetContent();
	m_CompressCombo.AddString("Major(Record)");
	m_CompressCombo.AddString("Minor(Net)");
	if (serverinfo[m_iServer].m_dwDevSoftVersion >= 0x20001)
	{
		m_CompressCombo.AddString("Event");
	}

	CString sTemp;
	char cTemp[100];
	m_nChanSel = 0;
	m_nCopyChanNum = -1;
	m_CopyChannelCtrl.ResetContent();
	m_ChannelCtrl.ResetContent();	
	sTemp.Format(_T("All Channels"));
	m_CopyChannelCtrl.AddString(sTemp);

	for(int i=0; i<m_iChannelnumber; i++)
	{
		sTemp.Format("Channel%d", (m_lStartChannel+i));
		m_ChannelCtrl.AddString(sTemp);
		m_CopyChannelCtrl.AddString(sTemp);
		m_nChanNum = i+m_lStartChannel;
		bSetChannelPara[i] = FALSE;
		bGetChannelPara[i] = FALSE;
		if(m_bConnectServer)
		{
			if(GetChanPara(i))
			{
				bGetChannelPara[i] = TRUE;
			}
			else
			{
				sTemp.Format("Get channel%d parameters failed!",m_lStartChannel+i);
				TRACE(sTemp);
			}
		}
	}
	m_ChannelCtrl.SetCurSel(m_nChanSel);
	m_CompressCombo.SetCurSel(0);
	m_CopyChannelCtrl.SetCurSel(m_nChanSel);
	m_nChanNum = m_nChanSel+m_lStartChannel;
	if(bGetChannelPara[m_nChanSel])
	{
		//
		if((m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate >> 31) && 0x01)
		{
			GetDlgItem(IDC_EDITBITRATE)->EnableWindow(TRUE);
			m_BitRateCtrl.SetCurSel(22);		//self-define bitrate
			m_BitRate = m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate & 0x7fffffff;
		}
		else
		{
			m_BitRateCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate-2);			
			m_BitRate = 0;
			GetDlgItem(IDC_EDITBITRATE)->EnableWindow(FALSE);
		}
		
		m_ResolutionCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byResolution);
		m_StreamTypeCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byStreamType);
		m_ImageQualityCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byPicQuality);
		m_BitRateTypeCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byBitrateType);
		m_FrameRateCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.dwVideoFrameRate);
		m_BPIntervalCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byIntervalBPFrame);	
		m_FrameI = m_compressioncfg[m_nChanSel].struRecordPara.wIntervalFrameI;

		m_bRecord = m_record[m_nChanSel].dwRecord;
		GetDlgItem(IDC_BUTRECORD)->EnableWindow(m_bRecord);
		m_DelayCtrl.SetCurSel(m_record[m_nChanSel].dwRecordTime);
		m_PreRecordTime.SetCurSel(m_record[m_nChanSel].dwPreRecordTime);
		ZeroMemory(cTemp, 100);
		memcpy(cTemp, m_piccfg[m_nChanSel].sChanName, NAME_LEN);
		m_ChannelName.Format("%s",cTemp);
		m_bHide = m_piccfg[m_nChanSel].dwEnableHide;
		GetDlgItem(IDC_BUTHIDE)->EnableWindow(m_bHide);
		m_bMotion = m_piccfg[m_nChanSel].struMotion.byEnableHandleMotion;
		GetDlgItem(IDC_BUTMOTION)->EnableWindow(m_bMotion);
		if(m_piccfg[m_nChanSel].struHideAlarm.dwEnableHideAlarm > 0)
		{
			m_bHideAlarm = TRUE;
		}
		else
		{
			m_bHideAlarm = FALSE;
		}
		GetDlgItem(IDC_BUTHIDEALARM)->EnableWindow(m_bHideAlarm);
		m_bChanname = m_piccfg[m_nChanSel].dwShowChanName;
		m_channame_x = m_piccfg[m_nChanSel].wShowNameTopLeftX;
		m_channame_y = m_piccfg[m_nChanSel].wShowNameTopLeftY;
		m_bOsd = m_piccfg[m_nChanSel].dwShowOsd;
		m_osd_x = m_piccfg[m_nChanSel].wOSDTopLeftX;
		m_osd_y = m_piccfg[m_nChanSel].wOSDTopLeftY;
		m_bDispWeek = m_piccfg[m_nChanSel].byDispWeek;
		m_OsdAttrib.SetCurSel(m_piccfg[m_nChanSel].byOSDAttrib-1);
		m_OsdType.SetCurSel(m_piccfg[m_nChanSel].byOSDType);
		EnableChanname(m_bChanname);
		EnableOsd(m_bOsd);
		m_bVideoLost = m_piccfg[m_nChanSel].struVILost.byEnableHandleVILost;
		GetDlgItem(IDC_BUTVILOST)->EnableWindow(m_bVideoLost);
		GetDlgItem(IDCHANCFGOK)->EnableWindow(TRUE);
	}
	else
	{
		GetDlgItem(IDCHANCFGOK)->EnableWindow(FALSE);
	}

	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CRemoteChannelConfig::GetChanPara(int nIndex)
{ 
	CString sTemp;
	DWORD dwReturned;
	memset(&m_piccfg[nIndex], 0, sizeof(m_piccfg[nIndex]));
	if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_PICCFG_EX, m_nChanNum, &m_piccfg[nIndex], sizeof(NET_DVR_PICCFG_EX), &dwReturned))
	{
		sTemp.Format("%d : NET_DVR_GET_PICCFG_EX = %d \n", m_nChanNum, NET_DVR_GetLastError());
		TRACE(sTemp);
	}
	memset(&m_compressioncfg[nIndex], 0, sizeof(m_compressioncfg[nIndex]));
	if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_COMPRESSCFG_EX, m_nChanNum, &m_compressioncfg[nIndex], sizeof(NET_DVR_COMPRESSIONCFG_EX), &dwReturned))
	{
		sTemp.Format("%d : ERROR: NET_DVR_GET_COMPRESSCFG_EX = %d \n", m_nChanNum, NET_DVR_GetLastError());
		TRACE(sTemp); 
	}
	memset(&m_compressioncfg_new[nIndex], 0, sizeof(m_compressioncfg_new[nIndex]));
	if (serverinfo[m_iServer].m_dwDevSoftVersion >= 0x20001)
	{
		if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_EVENTCOMPCFG, m_nChanNum, &m_compressioncfg_new[nIndex], sizeof(NET_DVR_COMPRESSIONCFG), &dwReturned))
		{
			sTemp.Format("%d : ERROR: NET_DVR_GET_EVENTCOMPCFG = %d \n", m_nChanNum, NET_DVR_GetLastError());
			TRACE(sTemp); 
		}
	}
	memset(&m_record[nIndex], 0, sizeof(m_record[nIndex]));
	if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_RECORDCFG, m_nChanNum, &m_record[nIndex], sizeof(NET_DVR_RECORD), &dwReturned))	
	{
		sTemp.Format("%d : ERROR: NET_DVR_GET_RECORDCFG = %d \n", m_nChanNum, NET_DVR_GetLastError());
		TRACE(sTemp);	
	}
	return TRUE;
}

void CRemoteChannelConfig::OnButchancopy() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int nTemp = 0;
	
	if(m_nCopyChanNum == m_nChanSel)
		return;
	if(m_nCopyChanNum == -1)
	{
		for(int i=0; i<m_iChannelnumber; i++)
		{
			if(i == m_nChanSel)
				continue;
			int sel = m_CompressCombo.GetCurSel();
			switch(sel) {
			case 0:
				m_compressioncfg[i].struRecordPara.byStreamType = m_StreamTypeCtrl.GetCurSel();
				m_compressioncfg[i].struRecordPara.byPicQuality = m_ImageQualityCtrl.GetCurSel();
				if(m_BitRateCtrl.GetCurSel() == 22)	//self-define bitrate
				{
					nTemp = m_BitRate;
					nTemp |= 0x80000000;
					m_compressioncfg[i].struRecordPara.dwVideoBitrate = nTemp;
				}
				else
				{
					m_compressioncfg[i].struRecordPara.dwVideoBitrate = m_BitRateCtrl.GetCurSel()+2;
				}
				m_compressioncfg[i].struRecordPara.byResolution = m_ResolutionCtrl.GetCurSel();
				m_compressioncfg[i].struRecordPara.dwVideoFrameRate = m_FrameRateCtrl.GetCurSel();
				m_compressioncfg[i].struRecordPara.byBitrateType = m_BitRateTypeCtrl.GetCurSel();
				m_compressioncfg[i].struRecordPara.byIntervalBPFrame = m_BPIntervalCtrl.GetCurSel();

⌨️ 快捷键说明

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