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

📄 ~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

CRightCamera* CRightCamera::self = NULL;
CRightCamera* CRightCamera::the_one() {return self;}

CRightCamera::CRightCamera(CWnd* pParent /*=NULL*/)
	: baseclass(CRightCamera::IDD, pParent), channel(0)
{
	//{{AFX_DATA_INIT(CRightCamera)
	m_control = _T("");
	m_cam_pos = 0;
	//}}AFX_DATA_INIT

	self = this;
}


void CRightCamera::DoDataExchange(CDataExchange* pDX)
{
	baseclass::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRightCamera)
	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_Radio(pDX, ID_CAM_POS1, m_cam_pos);
	//}}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);
	}
}


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)
	//}}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

BOOL CRightCamera::OnInitDialog() 
{
	baseclass::OnInitDialog();

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

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;
	}

	send_camera_cmd(cmd);
	return 0;
}

void CRightCamera::on_join()
{
	video_channel::current_sel()->report_channel();
}

void CRightCamera::on_leave()
{

}

void CRightCamera::send_stop()
{
	send_camera_cmd(camStop);
}

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

	UpdateData();

	TREC_CAMERA c;
	c.channel = channel;
	c.cmd = cmd;
	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;
	}
*/

}

LRESULT CRightCamera::on_update_data(WPARAM w, LPARAM)
{
	UpdateData(w);

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

void CRightCamera::OnLoad() 
{
	send_camera_cmd(camPresetGet);
}

void CRightCamera::OnSet() 
{
	send_camera_cmd(camPresetSet);
}

void CRightCamera::OnIrisD() 
{
//	send_camera_cmd(TM_R_KEYPAD_APERTURN_DEC);
}

void CRightCamera::OnIrisI() 
{
//	send_camera_cmd(TM_R_KEYPAD_APERTURN_INC);
}

void CRightCamera::OnFocusD() 
{
//	send_camera_cmd(TM_R_KEYPAD_ZOOMOUT);
}

void CRightCamera::OnFocusI() 
{
//	send_camera_cmd(TM_R_KEYPAD_ZOOMIN);
}

void CRightCamera::OnZoomD() 
{
//	send_camera_cmd(TM_R_KEYPAD_NEAR);
}

void CRightCamera::OnZoomI() 
{
//	send_camera_cmd(TM_R_KEYPAD_FAR);
}

void CRightCamera::OnLightOnoff() 
{
	send_camera_cmd(camLight);
}

void CRightCamera::OnBrushOnoff() 
{
	send_camera_cmd(camBrush);
}

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);
}

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,
		camZoomIn,
		camZoomOut,
		camFar,
		camNear
	};
	if( msg->message == WM_LBUTTONDOWN )
	{
		for( int i=0; i<SIZE_OF(ids); i++ )
		{
			if( msg->hwnd == GetDlgItem(ids[i])->m_hWnd)
				send_camera_cmd(yid[i]);
		}
	}
	if( msg->message == WM_LBUTTONUP )
	{
		for( int i=0; i<SIZE_OF(ids); i++ )
		{
			if( msg->hwnd == GetDlgItem(ids[i])->m_hWnd )
			{
				send_stop();
			}
		}
	}
	return baseclass::PreTranslateMessage(msg);
}

⌨️ 快捷键说明

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