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

📄 dhextptzctrl.cpp

📁 大华DVR的客户端开发包和Demo,从网上是下载不到的。
💻 CPP
字号:
// DHExtPtzCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "netsdkdemo.h"
#include "DHExtPtzCtrl.h"
#include "NetSDKDemoDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDHExtPtzCtrl dialog


CDHExtPtzCtrl::CDHExtPtzCtrl(CWnd* pParent /*=NULL*/)
	: CDialog(CDHExtPtzCtrl::IDD, pParent)
{
	m_DeviceID = 0;
	m_Channel = 0;
	m_presetPoint = 0;
	m_cruiseGroup = 0;
	m_modeNo = 0;
	//{{AFX_DATA_INIT(CDHExtPtzCtrl)
	//}}AFX_DATA_INIT
}


void CDHExtPtzCtrl::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDHExtPtzCtrl)
	DDX_Control(pDX, IDC_COMBO_AUX_NO, m_auxNosel);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDHExtPtzCtrl, CDialog)
	//{{AFX_MSG_MAP(CDHExtPtzCtrl)
	ON_BN_CLICKED(IDC_PRESET_ADD, OnPresetAdd)
	ON_BN_CLICKED(IDC_PRESET_DELE, OnPresetDele)
	ON_BN_CLICKED(IDC_PRESET_SET, OnPresetSet)
	ON_BN_CLICKED(IDC_CRUISE_ADD_POINT, OnCruiseAddPoint)
	ON_BN_CLICKED(IDC_CRUISE_DEL_POINT, OnCruiseDelPoint)
	ON_BN_CLICKED(IDC_CRUISE_DEL_GROUP, OnCruiseDelGroup)
	ON_BN_CLICKED(IDC_START_CRUISE, OnStartCruise)
	ON_BN_CLICKED(IDC_STOP_CRUISE, OnStopCruise)
	ON_BN_CLICKED(IDC_LAMP_ACTIVATE, OnLampActivate)
	ON_BN_CLICKED(IDC_LAMP_DEACTIVATE, OnLampDeactivate)
	ON_BN_CLICKED(IDC_ROTATE_START, OnRotateStart)
	ON_BN_CLICKED(IDC_ROTATE_STOP, OnRotateStop)
	ON_BN_CLICKED(IDC_LINE_SET_LEFT, OnLineSetLeft)
	ON_BN_CLICKED(IDC_LINE_SET_RIGHT, OnLineSetRight)
	ON_BN_CLICKED(IDC_LINE_START, OnLineStart)
	ON_BN_CLICKED(IDC_LINE_STOP, OnLineStop)
	ON_BN_CLICKED(IDC_MODE_SET_BEGIN, OnModeSetBegin)
	ON_BN_CLICKED(IDC_MODE_SET_DELETE, OnModeSetDelete)
	ON_BN_CLICKED(IDC_MODE_SET_END, OnModeSetEnd)
	ON_BN_CLICKED(IDC_MODE_START, OnModeStart)
	ON_BN_CLICKED(IDC_MODE_STOP, OnModeStop)
	ON_BN_CLICKED(IDC_QUERY_ALARM, OnQueryAlarm)
	ON_BN_CLICKED(IDC_FAST_GO, OnFastGo)
	ON_BN_CLICKED(IDC_AUX_OPEN, OnAuxOpen)
	ON_BN_CLICKED(IDC_AUX_CLOSE, OnAuxClose)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDHExtPtzCtrl message handlers

BOOL CDHExtPtzCtrl::OnInitDialog() 
{
	CDialog::OnInitDialog();
	g_SetWndStaticText(this);
	
	SetDlgItemInt(IDC_PRESET_DATA,1);
	SetDlgItemInt(IDC_CRUISE_GROUP,1);
	SetDlgItemInt(IDC_MODE_NO, 1);
	SetDlgItemInt(IDC_POS_X, 0);
	SetDlgItemInt(IDC_POS_Y, 0);
	SetDlgItemInt(IDC_POS_ZOOM, 0);
	
	m_auxNosel.SetCurSel(0);
	return TRUE; 
}

void CDHExtPtzCtrl::SetExtPtzParam(LONG iHandle, int iChannel)
{
	m_DeviceID = iHandle;
	m_Channel = iChannel;
}


void CDHExtPtzCtrl::OnPresetAdd() 
{
	PtzExtControl(PTZ_POINT_SET_CONTROL);
}

void CDHExtPtzCtrl::OnPresetDele() 
{
	PtzExtControl(PTZ_POINT_DEL_CONTROL);
}

void CDHExtPtzCtrl::OnPresetSet() 
{
	PtzExtControl(PTZ_POINT_MOVE_CONTROL);
}

void CDHExtPtzCtrl::PtzExtControl(DWORD dwCommand, DWORD dwParam)
{
	BOOL ret = FALSE;
	BYTE bParam[3] = {0};

	if(!m_DeviceID)
	{
		MessageBox(MSG_PTZCTRL_NOCHANNEL);
	}
	
	switch(dwCommand) 
	{
	case PTZ_POINT_MOVE_CONTROL:     //转至
    case PTZ_POINT_SET_CONTROL:     //设置
    case PTZ_POINT_DEL_CONTROL:      //删除
		m_presetPoint = GetDlgItemInt(IDC_PRESET_DATA);
		bParam[1] = (BYTE)m_presetPoint;
		break;
	case EXTPTZ_ADDTOLOOP:
	case EXTPTZ_DELFROMLOOP:
		m_presetPoint = GetDlgItemInt(IDC_PRESET_DATA);
		m_cruiseGroup = GetDlgItemInt(IDC_CRUISE_GROUP);
		bParam[0] = (BYTE)m_cruiseGroup;
		bParam[1] = (BYTE)m_presetPoint;
		break;;
	case EXTPTZ_CLOSELOOP:
		m_cruiseGroup = GetDlgItemInt(IDC_CRUISE_GROUP);
		bParam[0] = (BYTE)m_cruiseGroup;
		break;;
	case PTZ_POINT_LOOP_CONTROL:
		if (0 == dwParam) 
		{
			m_cruiseGroup = GetDlgItemInt(IDC_CRUISE_GROUP);
			bParam[0] = (BYTE)m_cruiseGroup;
			bParam[2] = 76;
		}
		else
		{
			m_cruiseGroup = GetDlgItemInt(IDC_CRUISE_GROUP);
			bParam[0] = (BYTE)m_cruiseGroup;
			bParam[2] = 96;
		}
		break;
	case PTZ_LAMP_CONTROL:
		if (0 == dwParam) 
		{
			bParam[0] = 0x01;
		}
		else
		{
			bParam[0] = 0x00;
		}
		break;
	case EXTPTZ_STARTPANCRUISE:		//开始水平旋转	
	case EXTPTZ_STOPPANCRUISE:		//停止水平旋转
	case EXTPTZ_SETLEFTBORDER:		//设置左边界
	case EXTPTZ_SETRIGHTBORDER:		//设置右边界
	case EXTPTZ_STARTLINESCAN:		//开始线扫
	case EXTPTZ_CLOSELINESCAN:		//停止线扫	
	case EXTPTZ_SETMODESTART:		//设置模式开始	
		break;
	case EXTPTZ_SETMODESTOP:		//设置模式结束
	case EXTPTZ_RUNMODE:			//运行模式
	case EXTPTZ_STOPMODE:			//停止模式
	case EXTPTZ_DELETEMODE:			//清除模式
		m_modeNo = GetDlgItemInt(IDC_MODE_NO);
		bParam[0] = (BYTE)m_modeNo;
		break;
	case EXTPTZ_REVERSECOMM:
		break;
	case EXTPTZ_FASTGOTO:
		{
			m_pos_x = GetDlgItemInt(IDC_POS_X);
			m_pos_y = GetDlgItemInt(IDC_POS_Y);
			m_pos_zoom = GetDlgItemInt(IDC_POS_ZOOM);
			bParam[0] = (BYTE)m_pos_x;
			bParam[1] = (BYTE)m_pos_y;
			bParam[2] = (BYTE)m_pos_zoom;
		}
		break;
	case EXTPTZ_AUXIOPEN:
	case EXTPTZ_AUXICLOSE:
		switch(m_auxNosel.GetCurSel())
		{
		case 0:
			m_auxNo = 23;
			break;
		case 1:
			m_auxNo = 24;
			break;
		case 2:
			m_auxNo = 27;
			break;
		case 3:
			m_auxNo = 41;
			break;
		case 4:
			m_auxNo = 43;
			break;
		default:
			return;		
		}
		bParam[0] = m_auxNo;
		break;
	default: 
		return;
	}
	ret = CLIENT_DHPTZControl(m_DeviceID, m_Channel,dwCommand ,bParam[0],bParam[1],bParam[2],FALSE);
	if(!ret)
	{
		((CNetSDKDemoDlg *)GetParent())->LastError();//Zhengdh 06.11.24
		MessageBox(MSG_PTZCTRL_CTRLFAILED);
	}
}

void CDHExtPtzCtrl::OnCruiseAddPoint() 
{
	PtzExtControl(EXTPTZ_ADDTOLOOP);
}

void CDHExtPtzCtrl::OnCruiseDelPoint() 
{
	PtzExtControl(EXTPTZ_DELFROMLOOP);
}

void CDHExtPtzCtrl::OnCruiseDelGroup() 
{
	PtzExtControl(EXTPTZ_CLOSELOOP);
}

void CDHExtPtzCtrl::OnStartCruise() 
{
	PtzExtControl(PTZ_POINT_LOOP_CONTROL, 0);
}

void CDHExtPtzCtrl::OnStopCruise() 
{
	PtzExtControl(PTZ_POINT_LOOP_CONTROL, 1);
}

void CDHExtPtzCtrl::OnLampActivate() 
{
	PtzExtControl(PTZ_LAMP_CONTROL, 0);
}

void CDHExtPtzCtrl::OnLampDeactivate() 
{
	PtzExtControl(PTZ_LAMP_CONTROL, 1);
}

void CDHExtPtzCtrl::OnRotateStart() 
{
	PtzExtControl(EXTPTZ_STARTPANCRUISE);
}

void CDHExtPtzCtrl::OnRotateStop() 
{
	PtzExtControl(EXTPTZ_STOPPANCRUISE);
}

void CDHExtPtzCtrl::OnLineSetLeft() 
{
	PtzExtControl(EXTPTZ_SETLEFTBORDER);
}

void CDHExtPtzCtrl::OnLineSetRight() 
{
	PtzExtControl(EXTPTZ_SETRIGHTBORDER);
}

void CDHExtPtzCtrl::OnLineStart() 
{
	PtzExtControl(EXTPTZ_STARTLINESCAN);	
}

void CDHExtPtzCtrl::OnLineStop() 
{
	PtzExtControl(EXTPTZ_CLOSELINESCAN);
}

void CDHExtPtzCtrl::OnModeSetBegin() 
{
	PtzExtControl(EXTPTZ_SETMODESTART);
}

void CDHExtPtzCtrl::OnModeSetDelete() 
{
	PtzExtControl(EXTPTZ_DELETEMODE);
}

void CDHExtPtzCtrl::OnModeSetEnd() 
{
	PtzExtControl(EXTPTZ_SETMODESTOP);
}

void CDHExtPtzCtrl::OnModeStart() 
{
	PtzExtControl(EXTPTZ_RUNMODE);
}

void CDHExtPtzCtrl::OnModeStop() 
{
	PtzExtControl(EXTPTZ_STOPMODE);
}

void CDHExtPtzCtrl::OnQueryAlarm() 
{
	PtzExtControl(EXTPTZ_REVERSECOMM);
}

void CDHExtPtzCtrl::OnFastGo() 
{
	PtzExtControl(EXTPTZ_FASTGOTO);
}

void CDHExtPtzCtrl::OnAuxOpen() 
{
	PtzExtControl(EXTPTZ_AUXIOPEN);
}

void CDHExtPtzCtrl::OnAuxClose() 
{
	PtzExtControl(EXTPTZ_AUXICLOSE);
}

⌨️ 快捷键说明

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