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

📄 mp_mobilemovecamdlg.cpp

📁 一个在Linux下开发的IP摄像头的驱动程序及控制软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		SCODE sRet = ServerUtl_CreateDevice(m_hServerUtl, &m_hServerDev);
		TCHAR szBuf[256];
		TCHAR szTemp[256];

		if (sRet != S_OK)
		{
			_stprintf(szBuf, _T("ServerUtl_CreateDevice failed with error %X, %X"), sRet, m_hServerUtl);
			MessageBox(szBuf, _T("Error"), MB_OK);
			return 0;
		}

		TSERVERUTL_DEV_PROPERTY tDevProperty;

		ZeroMemory(&tDevProperty, sizeof(tDevProperty));
		tDevProperty.lpszHost = m_tChannelInfo.szHostIP;
		tDevProperty.lpszPassword = m_tChannelInfo.szPassword;
		tDevProperty.lpszUserName = m_tChannelInfo.szUserName;
		tDevProperty.dwHttpPort = m_tChannelInfo.dwHTTPPort;
		tDevProperty.lpszServerType = m_tChannelInfo.szServer_Type;

		sRet = ServerUtl_SetDeviceProperty(m_hServerDev, tDevProperty, FALSE);

		if (sRet != S_OK)
		{
			ServerUtl_DeleteDevice(m_hServerDev);
			m_hServerDev = NULL;
		
			_stprintf(szTemp, _T("ServerUtl_SetDeviceProperty failed %X"), sRet);
			MessageBox(szTemp);
			return 0;
		}
		
		TCHAR szModelName[64]; 
		// must get this
		sRet = ServerUtl_GetDeviceModel(m_hServerDev, szModelName);
		if (sRet != S_OK)
		{
			ServerUtl_DeleteDevice(m_hServerDev);
			m_hServerDev = NULL;
		
			_stprintf(szTemp, _T("ServerUtl_GetDeviceModel failed %X"), sRet);
			MessageBox(szTemp);
			return 0;
		}
	
		sRet = ServerUtl_OpenDevice(m_hServerDev, szModelName);
		if (sRet != S_OK)
		{
			ServerUtl_DeleteDevice(m_hServerDev);
			m_hServerDev = NULL;
		
			_stprintf(szTemp, _T("ServerUtl_OpenDevice failed %X"), sRet);
			MessageBox(szTemp);
			return 0;
		}

		sRet = SrvDepResource_GetParamForServer(szModelName, &srvInfo);
		if (sRet != S_OK)
		{
			ServerUtl_DeleteDevice(m_hServerDev);
			m_hServerDev = NULL;
		
			_stprintf(szTemp, _T("SrvDepResource_GetParamForServer failed %X"), sRet);
			MessageBox(szTemp);
			return 0;
		}
	}

	return 0;
}

int CMP_MobileMoveCamDlg::CreateAvSyncChannel()
{
	TCHANNELOPTION tChannelOptions;
	ZeroMemory(&tChannelOptions,sizeof(tChannelOptions));

	tChannelOptions.dwTopBorderSize=30;
	tChannelOptions.dwBottomBorderSize=0;
	tChannelOptions.dwLeftBorderSize=0;
	tChannelOptions.dwRightBorderSize=0;
	tChannelOptions.dwDisplayContext=(DWORD)this;
	tChannelOptions.pfDisplay = AvSyhchronizerDisplayCallBack;
	tChannelOptions.hDisplay=GetDlgItem(IDC_STATIC_DISPLAY)->m_hWnd;
	tChannelOptions.dwVolume=5000;
	tChannelOptions.bAudioOut =TRUE;
	tChannelOptions.bMotionAlert =TRUE;
	tChannelOptions.dwMotionRect=0x80000000 | RGB(0, 255, 255);
	tChannelOptions.dwMotionRectAlert=0;

	tChannelOptions.dwFlags=CH_MOTIONRECT|CH_MOTIONRECTALERT|CH_MOTION|CH_DISPLAYCONTEXT|
	    CH_AUDIOOUT|CH_ALLBORDER|CH_VOLUME|CH_DISPLAYCB;

	SCODE sRet = AvSynchronizer_CreateChannel(m_hAvSync, &m_tChannelInfo.hChannel, tChannelOptions);
	if (IS_FAIL(sRet))
	{
		TCHAR szBuf[256];
		_stprintf(szBuf, _T("AvSynchronizer_CreateChannel failed with error code %X"), sRet);
		MessageBox(szBuf, _T("Error"), MB_OK);
		return -1;
	}

	AvSynchronizer_SetChannelOption(m_tChannelInfo.hChannel, SETCH_CLEAR_QUEUE, 2, 0);

	return 0;
}

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CMP_MobileMoveCamDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
	if (AfxIsDRAEnabled())
	{
		DRA::RelayoutDialog(
			AfxGetResourceHandle(), 
			this->m_hWnd, 
			DRA::GetDisplayMode() != DRA::Portrait ? 
			MAKEINTRESOURCE(IDD_MP_MOBILEMOVECAM_DIALOG_WIDE) : 
			MAKEINTRESOURCE(IDD_MP_MOBILEMOVECAM_DIALOG));
	}
}
#endif


void CMP_MobileMoveCamDlg::OnBnClickedSettings()
{
	CSettings dlgSetting;

	dlgSetting.m_strUser = this->m_tChannelInfo.szUserName;
	dlgSetting.m_strIP = this->m_tChannelInfo.szHostIP;
	dlgSetting.m_strType = this->m_tChannelInfo.szServer_Type;
	dlgSetting.m_strPwd = this->m_tChannelInfo.szPassword;
	dlgSetting.m_strPort.Format(_T("%ld"), this->m_tChannelInfo.dwHTTPPort);
	dlgSetting.m_nConnectType = m_tChannelInfo.dwProtocol - 1;
	dlgSetting.m_nStreamType  = 3;

	if (dlgSetting.DoModal() == IDOK)
	{
		_tcscpy(m_tChannelInfo.szUserName, dlgSetting.m_strUser);
		_tcscpy(this->m_tChannelInfo.szHostIP, dlgSetting.m_strIP);
		_tcscpy(this->m_tChannelInfo.szServer_Type, dlgSetting.m_strType);
		_tcscpy(this->m_tChannelInfo.szPassword, dlgSetting.m_strPwd);
		this->m_tChannelInfo.dwHTTPPort = _ttol(dlgSetting.m_strPort);
		m_tChannelInfo.dwProtocol = dlgSetting.m_nConnectType + 1;
		m_tChannelInfo.dwMediaType = dlgSetting.m_nStreamType;
	}
}

void CMP_MobileMoveCamDlg::OnButtonConnect()
{
	SCODE scRet;
	TCHAR szBuf[MAX_PATH];
	if (m_tChannelInfo.chStatus == channelStopped)
	{
		m_bUserStop = FALSE;
		TDataBrokerConnectionOptions ConnectionOptions;
		ZeroMemory(&ConnectionOptions,sizeof(ConnectionOptions));
		ConnectionOptions.dwStatusContext= (DWORD)this;
		ConnectionOptions.dwAVContext= (DWORD)this;
		ConnectionOptions.pzIPAddr= m_tChannelInfo.szHostIP;
		ConnectionOptions.pzUID= m_tChannelInfo.szUserName;
		ConnectionOptions.pzPWD= m_tChannelInfo.szPassword;

		DWORD dwProtocol = m_tChannelInfo.dwProtocol - 1;

		if (_tcscmp(m_tChannelInfo.szServer_Type, _T("IP31x1-TLFN")) == 0)
		{
			dwProtocol = 1;
		}
		else if (m_tChannelInfo.szServer_Type[2] == _T('2'))
		{
			dwProtocol = 2;
			ConnectionOptions.dwQuality = 3;
			_tcscpy(ConnectionOptions.zVSize, _T("3"));
			ConnectionOptions.dwFlags |= eConOptVSize | eConOptQuality;
		}

		switch (dwProtocol)
		{
			case 0:
				ConnectionOptions.dwProtocolType=eptTCP;
				break;
			case 1:
				ConnectionOptions.dwProtocolType = eptUDP;
				break;
			case 2:
				ConnectionOptions.dwProtocolType = eptHTTP;
				break;
		}

		ConnectionOptions.dwMediaType = m_tChannelInfo.dwMediaType;
		ConnectionOptions.wHttpPort= (WORD) m_tChannelInfo.dwHTTPPort;
		ConnectionOptions.wCam= 1;
		ConnectionOptions.pzServerType= m_tChannelInfo.szServer_Type;
		ConnectionOptions.dwFlags |= eConOptProtocolAndMediaType|eConOptCam|
			eConOptHttpPort|eConOptStatusContext|eConOptAVContext;

		scRet = DataBroker_SetConnectionOptions(m_tChannelInfo.hDataConn,
			&ConnectionOptions);
		if (scRet != S_OK)
		{
			_stprintf(szBuf, _T("DataBroker_SetConnectionOptions error %X"), scRet);
			MessageBox(szBuf);
			return;
		}

		scRet = DataBroker_Connect(m_tChannelInfo.hDataConn);
		if (scRet != S_OK)
		{
			_stprintf(szBuf, _T("DataBroker_Connect error %X"), scRet);
			MessageBox(szBuf);
			return;
		}
		m_tChannelInfo.chStatus = channelConnecting;

		scRet = AvSynchronizer_StartChannel(m_tChannelInfo.hChannel, DRAW_CONNECTING);
		if (IS_FAIL(scRet))
		{
			_stprintf(szBuf, _T("AvSynchronizer_StartChannel failed %X"), scRet);
			MessageBox(szBuf, _T("Error"), MB_OK);
			return;
		}

		GetDlgItem(IDC_BUTTON_CONNECT)->SetWindowText(_T("Disconnect"));
	}
	else if (m_tChannelInfo.chStatus != channelDisconnecting)
	{
		//ChangeCameraCtrlState(FALSE);
		m_bUserStop = TRUE;
		m_tChannelInfo.chStatus = channelDisconnecting;
		scRet = DataBroker_Disconnect(m_tChannelInfo.hDataConn);
		m_tChannelInfo.dwReconnCnt = 0;

		AvSynchronizer_StopChannel(m_tChannelInfo.hChannel);

		TUPDATECHANNELOPTION tUpdateChOpt;
		tUpdateChOpt.dwFlags = UPCH_SHOW_BMP;
		AvSynchronizer_UpdateChannelSettings(m_tChannelInfo.hChannel, tUpdateChOpt);
		GetDlgItem(IDC_BUTTON_CONNECT)->SetWindowText(_T("Connect"));
	}
}


void CMP_MobileMoveCamDlg::OnButtonLeft() 
{
	if (!m_hServerDev)
		return;

	// send the command
	TCHAR szBuf[256];
	SCODE sRet = ServerUtl_SendPTZCommand(m_hServerDev, 0, SERVERUTL_PTZ_MOVE_LEFT, szBuf, FALSE);
	if (sRet != S_OK)
	{
		_stprintf(szBuf, _T("ServerUtl_SendPTZCommand failed with error %X"), sRet);
		MessageBox(szBuf, _T("Error"), MB_OK);
	}	
}

void CMP_MobileMoveCamDlg::OnButtonDown() 
{
	if (!m_hServerDev)
		return;

	// send the command
	TCHAR szBuf[256];
	SCODE sRet = ServerUtl_SendPTZCommand(m_hServerDev, 0, SERVERUTL_PTZ_MOVE_DOWN, szBuf, FALSE);
	if (sRet != S_OK)
	{
		_stprintf(szBuf, _T("ServerUtl_SendPTZCommand failed with error %X"), sRet);
		MessageBox(szBuf, _T("Error"), MB_OK);
	}
}

void CMP_MobileMoveCamDlg::OnButtonHome() 
{
	if (!m_hServerDev)
		return;

	// send the command
	TCHAR szBuf[256];
	SCODE sRet = ServerUtl_SendPTZCommand(m_hServerDev, 0, SERVERUTL_PTZ_MOVE_HOME, szBuf, FALSE);
	if (sRet != S_OK)
	{
		_stprintf(szBuf, _T("ServerUtl_SendPTZCommand failed with error %X"), sRet);
		MessageBox(szBuf, _T("Error"), MB_OK);
	}
}

void CMP_MobileMoveCamDlg::OnButtonUp() 
{
	if (!m_hServerDev)
		return;

	// send the command
	TCHAR szBuf[256];
	SCODE sRet = ServerUtl_SendPTZCommand(m_hServerDev, 0, SERVERUTL_PTZ_MOVE_UP, szBuf, FALSE);
	if (sRet != S_OK)
	{
		_stprintf(szBuf, _T("ServerUtl_SendPTZCommand failed with error %X"), sRet);
		MessageBox(szBuf, _T("Error"), MB_OK);
	}
}

void CMP_MobileMoveCamDlg::OnButtonRight() 
{
	if (!m_hServerDev)
		return;

	// send the command
	TCHAR szBuf[256];

	SCODE sRet = ServerUtl_SendPTZCommand(m_hServerDev, 0, SERVERUTL_PTZ_MOVE_RIGHT, szBuf, FALSE);
	if (sRet != S_OK)
	{
		_stprintf(szBuf, _T("ServerUtl_SendPTZCommand failed with error %X"), sRet);
		MessageBox(szBuf, _T("Error"), MB_OK);
	}
}

⌨️ 快捷键说明

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