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

📄 rightcamera.cpp

📁 实时监控
💻 CPP
字号:
 // RightCamera.cpp : implementation file
//

#include "stdafx.h"
#include "..\dvrmanager.h"
#include "RightCamera.h"
#include "../utils/common.h"
#include "../utils/update_data.h"
#include "net.h"
#include "../video/video_channel.h"

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

/////////////////////////////////////////////////////////////////////////////
// CRightCamera dialog
//##ModelId=3F90BAB402D9
CRightCamera* CRightCamera::self = NULL;
//##ModelId=3F90BAB402FF
CRightCamera* CRightCamera::the_one() {return self;}

//##ModelId=3F90BAB402F6
CRightCamera::CRightCamera(CWnd* pParent /*=NULL*/)
	: baseclass(CRightCamera::IDD, pParent), channel(0)
{
	//{{AFX_DATA_INIT(CRightCamera)
	m_control = _T("");
	m_cam_pos = 0;
	m_savenub = 0;
	m_chnl = _T("");
	//}}AFX_DATA_INIT

	self = this;
}


//##ModelId=3F90BAB5010A
void CRightCamera::DoDataExchange(CDataExchange* pDX)
{
	baseclass::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRightCamera)
	DDX_Control(pDX, IDLB_CHANNEL, m_channel);
	DDX_Control(pDX, ID_13, m_13);
	DDX_Control(pDX, ID_S, m_s);
	DDX_Control(pDX, IDBTN_BRUSH_ONOFF, m_brush_onoff);
	DDX_Control(pDX, IDBTN_ZOOM_I, m_zoom_i);
	DDX_Control(pDX, IDBTN_ZOOM_D, m_zoom_d);
	DDX_Control(pDX, IDBTN_LIGHT_ONOFF, m_light_onoff);
	DDX_Control(pDX, IDBTN_IRIS_I, m_iris_i);
	DDX_Control(pDX, IDBTN_IRIS_D, m_iris_d);
	DDX_Control(pDX, IDBTN_FOCUS_I, m_focus_i);
	DDX_Control(pDX, IDBTN_FOCUS_D, m_focus_d);
	DDX_Control(pDX, ID_8, m_8);
	DDX_Control(pDX, ID_7, m_7);
	DDX_Control(pDX, ID_5, m_5);
	DDX_Control(pDX, ID_4, m_4);
	DDX_Control(pDX, ID_3, m_3);
	DDX_Control(pDX, IDLB_CONTROL, m_ctrl);
	DDX_Control(pDX, IDBTN_SET, m_btn_set);
	DDX_Control(pDX, IDBTN_LOAD, m_btn_load);
	DDX_Control(pDX, ID_6, m_6);
	DDX_Control(pDX, ID_2, m_2);
	DDX_Control(pDX, ID_1, m_1);
	DDX_Control(pDX, ID_TITLE, m_title);
	DDX_Control(pDX, IDBTN_DIRECTIONS, m_btn_dir);
	DDX_Text(pDX, IDLB_CONTROL, m_control);
	DDX_Text(pDX, IDC_SAVE_ID, m_savenub);
	DDX_Radio(pDX, ID_CAM_POS1, m_cam_pos);
	DDX_Text(pDX, IDLB_CHANNEL, m_chnl);
	//}}AFX_DATA_MAP

	UINT ids[] = 
	{ID_CAM_POS1, ID_CAM_POS2, ID_CAM_POS3, ID_CAM_POS4,
	ID_CAM_POS5, ID_CAM_POS6, ID_CAM_POS7, ID_CAM_POS8,
	ID_CAM_POS9, ID_CAM_POS10, ID_CAM_POS11, ID_CAM_POS12,
	ID_CAM_POS13, ID_CAM_POS14, ID_CAM_POS15, ID_CAM_POS16,
	IDBTN_LOAD, IDBTN_SET, IDBTN_IRIS_D, IDBTN_IRIS_I,
	IDBTN_FOCUS_D, IDBTN_FOCUS_I, IDBTN_ZOOM_D, IDBTN_ZOOM_I,
	IDBTN_LIGHT_ONOFF, IDBTN_BRUSH_ONOFF};

	for( int i=0; i<SIZE_OF(ids); i++ )
	{
		GetDlgItem(ids[i])->EnableWindow(ipp.get_ip()!=0);
	}

	if( !pDX->m_bSaveAndValidate )
	{
		m_ctrl.SetText(m_control);
		m_channel.SetText(m_chnl);
	}
}

BEGIN_MESSAGE_MAP(CRightCamera, baseclass)
	//{{AFX_MSG_MAP(CRightCamera)
	ON_BN_CLICKED(IDBTN_LOAD, OnLoad)
	ON_BN_CLICKED(IDBTN_SET, OnSet)
	ON_BN_CLICKED(IDBTN_IRIS_D, OnIrisD)
	ON_BN_CLICKED(IDBTN_IRIS_I, OnIrisI)
	ON_BN_CLICKED(IDBTN_FOCUS_D, OnFocusD)
	ON_BN_CLICKED(IDBTN_FOCUS_I, OnFocusI)
	ON_BN_CLICKED(IDBTN_ZOOM_D, OnZoomD)
	ON_BN_CLICKED(IDBTN_ZOOM_I, OnZoomI)
	ON_BN_CLICKED(IDBTN_LIGHT_ONOFF, OnLightOnoff)
	ON_BN_CLICKED(IDBTN_BRUSH_ONOFF, OnBrushOnoff)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_CAMERA_BUTTON, on_camera_button)
	ON_MESSAGE(WM_UPDATE_DATA, on_update_data)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRightCamera message handlers

//##ModelId=3F90BAB501A1
BOOL CRightCamera::OnInitDialog() 
{
	baseclass::OnInitDialog();

	init_title(m_title);
	init_label(m_1);
	m_1.SetFontBold(TRUE);
	init_label(m_3);
	init_label(m_4);
	init_label(m_5);
	init_label(m_7);
	init_label(m_8);
	init_label(m_13);
	m_13.SetFontBold(TRUE);
	init_label(m_ctrl);
	init_label(m_channel);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

//##ModelId=3F90BAB50183
LRESULT CRightCamera::on_camera_button(WPARAM btn, LPARAM down)
{
	ULONG cmd = 0;
	switch( btn )
	{
	case CAMERA_LEFT_BUTTON:
		cmd = (down)?camLeft: camStop;
		break;
	case CAMERA_RIGHT_BUTTON:
		cmd = (down)?camRight: camStop;
		break;
	case CAMERA_UP_BUTTON:
		cmd = (down)?camUp: camStop;
		break;
	case CAMERA_DOWN_BUTTON:
		cmd = (down)?camDown: camStop;
		break;
	case CAMERA_AUTO_BUTTON:
		cmd = (down)?camAuto: camStop;
		break;
	default: return 0;
	}

	if(!checkcamerapopedom(ipp, channel)) 
	{
		return 0;
	}
	cmd_mode = cmd;
	SetTimer(1, 200, NULL) ;
	
	return 0;
}
void CRightCamera::OnTimer(UINT nIDEvent) 
{
	if( nIDEvent == 1 ) 
	{
		if(cmd_mode == camStop || cmd_mode == camAuto) 
			KillTimer(1);
		send_camera_cmd(cmd_mode);
	 }
}


//##ModelId=3F90BAB402EA
void CRightCamera::on_join()
{
	video_channel::current_sel()->report_channel();
}

//##ModelId=3F90BAB402F4
void CRightCamera::on_leave()
{

}

//##ModelId=3F90BAB402CC
void CRightCamera::send_stop()
{
	send_camera_cmd(camStop);
}

//##ModelId=3F90BAB402C2
void CRightCamera::send_camera_cmd(USHORT cmd)
{
//	TRACE("[SendCameraCtlCom]: %08lx\n", cmd);

	UpdateData();

	TREC_CAMERA c;
	c.channel = channel;
	c.cmd = cmd;
	if(m_savenub)
		c.preset = m_savenub-1;
	else
		c.preset = m_cam_pos;

	if( !ipp.get_ip() )
		return;
	set_net_opt(ipp, OPT_CAMERA, &c, NULL);
	TRACE("%08lx\n", *(DWORD*)&c);
/*
	caddr* ip = new caddr;
	unsigned long       nPort ;
	LPARAM              lParam ;	
	CDvrNetManagerDlg  *pMain = (CDvrNetManagerDlg *)AfxGetMainWnd() ;
	if (pMain->nCtlChannel < MAX_CHANNEL_NUM)  {
		*ip = nShowImageIP[pMain->nCtlChannel] ;
//		if( !*ip )	// 该路无通道打开
//		{
//		KillTimer(type);	// 停止连续功能
		//MessageBox(_T("该路通道没有打开!"));
		
//		  return;
//		  }
		if (ip->ip)  {
			nPort = nShowImagePort[pMain->nCtlChannel] ;
			lParam = type ;
			lParam |= (nPort<<16) ;
			lParam |= (nCurPreset<<24) ;
			//TRACE("[camera] sending %08lx\n", lParam);
			::PostThreadMessage(pMain->pNetThread->m_nThreadID, 
			WM_NET_CAMERA_CTRL, (WPARAM)ip, lParam) ;
		}
		else
			delete ip;
	}
*/

}

//##ModelId=3F90BAB5015B
LRESULT CRightCamera::on_update_data(WPARAM w, LPARAM)
{
	if( !w )
	{
		if( video_channel::current_sel()->is_video_opened() )
		{
			m_control = get_alias(ipp);
		}
	}
	
	UpdateData(w);


//	TRACE("[camera dlg] cam pos: %d\n", m_cam_pos);
	return 0;
}

//##ModelId=3F90BAB501AC
void CRightCamera::OnLoad() 
{
	send_camera_cmd(camPresetGet);
}

//##ModelId=3F90BAB501BF
BOOL CRightCamera::checkcamerapopedom(ip_port ipp ,int channel)
{
    if(check_popedom(ipp.get_ip(), ipp.look_port(), channel+1, 8)) 
	{
		CString m_logfile;
        m_logfile.Format(IDS_PTZ_SET,ipp.str_ip(),channel+1);
        write_log_file(m_logfile);
		return TRUE;
	}
	else return FALSE;
}
void CRightCamera::OnSet() 
{
	send_camera_cmd(camPresetSet);
}

//##ModelId=3F90BAB501C1
void CRightCamera::OnIrisD() 
{
//	send_camera_cmd(TM_R_KEYPAD_APERTURN_DEC);
}

//##ModelId=3F90BAB501CA
void CRightCamera::OnIrisI() 
{
//	send_camera_cmd(TM_R_KEYPAD_APERTURN_INC);
}

//##ModelId=3F90BAB501D4
void CRightCamera::OnFocusD() 
{
//	send_camera_cmd(TM_R_KEYPAD_ZOOMOUT);
}

//##ModelId=3F90BAB501DE
void CRightCamera::OnFocusI() 
{
//	send_camera_cmd(TM_R_KEYPAD_ZOOMIN);
}

//##ModelId=3F90BAB501E8
void CRightCamera::OnZoomD() 
{
//	send_camera_cmd(TM_R_KEYPAD_NEAR);
}

//##ModelId=3F90BAB501F1
void CRightCamera::OnZoomI() 
{
//	send_camera_cmd(TM_R_KEYPAD_FAR);
}

//##ModelId=3F90BAB501FB
void CRightCamera::OnLightOnoff() 
{
	send_camera_cmd(camLight);
}

//##ModelId=3F90BAB50205
void CRightCamera::OnBrushOnoff() 
{
	send_camera_cmd(camBrush);
}

//##ModelId=3F90BAB50129
LRESULT CRightCamera::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	if( message == WM_COMMAND )
	{
		if( wParam >= ID_CAM_POS1 &&
			wParam <= ID_CAM_POS16 )
		{
			PostMessage(WM_UPDATE_DATA, TRUE);
		}
	}
	return baseclass::DefWindowProc(message, wParam, lParam);
}

//##ModelId=3F90BAB500F6
BOOL CRightCamera::PreTranslateMessage(MSG* msg)
{
	static const UINT ids[] = {
		IDBTN_IRIS_D, 
		IDBTN_IRIS_I,
		IDBTN_FOCUS_D, 
		IDBTN_FOCUS_I, 
		IDBTN_ZOOM_D, 
		IDBTN_ZOOM_I
	};

	static const UINT yid[] = 
	{
		camApertureInc,
		camApertureDec,
		camZoomOut,
		camZoomIn,
		camNear,
		camFar
	};
	if( msg->message == WM_LBUTTONDOWN )
	{
		for( int i=0; i<SIZE_OF(ids); i++ )
		{
			if( msg->hwnd == GetDlgItem(ids[i])->m_hWnd)
			{
				cmd_mode = yid[i];
				SetTimer(1, 200, NULL);
			}
		}
	}
	if( msg->message == WM_LBUTTONUP )
	{
		for( int i=0; i<SIZE_OF(ids); i++ )
		{
			if( msg->hwnd == GetDlgItem(ids[i])->m_hWnd )
			{
				cmd_mode = camStop;
			}
		}
	}
	return baseclass::PreTranslateMessage(msg);
}

⌨️ 快捷键说明

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