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

📄 newclientdlg.cpp

📁 监控开发资料,提供二次开发源码和使用说明书
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// newclientDlg.cpp : implementation file
//

#include "stdafx.h"
#include "newclient.h"
#include "newclientDlg.h"
#include "MyOutput.h"
#include "Curwin.h"
#include "EventLog.h"
#include "VoiceExchange.h"
#include "SetAlarm.h"
#include "PlayBack.h"
#include "SystemConfig.h"
#include "DecodeCardSDK.h"

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

#define WM_MYCOMMAND	WM_USER+1		//for sdk

HIKCLIENTPARAM hikClientParam;
SERVER_INFO serverinfo[MAXIPNUMBER];
IP_INFO		allipinfo[MAXIPNUMBER][MAXCHANNUM];
IP_INFO		selipinfo[MAXNUMBER];
ALARM_INFO	alarminfo[MAXALARMIN];
int			iSurveillanceNumber;
CMyOutput myoutput[MAXVIEWNUM];
CCurwin mycurwin;
char cWorkDir[256];
BOOL bLargeWnd = FALSE;		//播放窗口是否在放大,如果是放大的窗口,则关闭该窗口时,恢复到原来多窗口画面;
WORD numberpos = 0;
HBRUSH	hBrush;
extern WORD iActiveWndNumber;
extern		LONG	lVoiceIndex;
extern	void	ReadSurveillanceConfig();
extern	void	ReadClientConfig();
extern	void F_AddEvent(CString csEvent);
int MYVIEW_LEFT = 20;
int MYVIEW_TOP = 20;
HANDLE hVideoBeeper;		//报警事件
HANDLE hBeepThread;		//报警线程
extern int nUseCard;
CNewclientDlg *MainDlg;
BOOL g_bShareSound = FALSE;
int g_nNetDelay = 2;

UINT  Beeper(LPVOID pParam)
{
	while(true)
	{
		Beep(800,500);
		Beep(1000,500);
		Beep(800,500);
		Beep(1000,500);
		if(WaitForSingleObject(hVideoBeeper,1000) == WAIT_OBJECT_0)
		{
			ResetEvent(hVideoBeeper);
			hBeepThread = NULL;
			return FALSE;
		}
	}
	return TRUE;
}

//消息回调处理函数
int CALLBACK MessageCallback(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen)
{
	CString csTemp;
	int i = 0;
	char tempbuf[256]; 
	switch(lCommand) {
	case COMM_ALARM:
		NET_DVR_ALARMINFO m_alarminfo;
		memcpy(&m_alarminfo, pBuf, sizeof(NET_DVR_ALARMINFO));
		ZeroMemory(tempbuf,256);
		switch(m_alarminfo.dwAlarmType)
		{
		case 0:
			csTemp.Format("服务器%s发生信号量报警 报警输入%d ", sDVRIP, m_alarminfo.dwAlarmInputNumber);
			F_AddEvent(csTemp);
			TRACE(csTemp);
			//sprintf(tempbuf,"报警类型:信号量 %d 报警 ", m_alarminfo.dwAlarmInputNumber);
			break;
		case 1:
			for(i=0; i<MAX_DISKNUM; i++)
			{
				if(m_alarminfo.dwDiskNumber[i] == 1)
				{
					csTemp.Format("服务器%s发生硬盘满报警 硬盘号%d ", sDVRIP, i);
					F_AddEvent(csTemp);
					TRACE(csTemp);
				}
			}
			//sprintf(tempbuf,"报警类型:硬盘满");
			break;
		case 2:
			for(i=0; i<MAX_CHANNUM; i++)
			{
				if (m_alarminfo.dwChannel[i] == 1)
				{
					csTemp.Format("服务器%s发生信号丢失报警 通道号%d ", sDVRIP, i);
					F_AddEvent(csTemp);
					TRACE(csTemp);
					//TRACE("服务器%s发生报警 报警类型:信号丢失 通道%d", sDVRIP, i);
				}
			}
			//sprintf(tempbuf,"报警类型:信号丢失 通道%d", i);
			break;
		case 3:
			for(i=0; i<MAX_CHANNUM; i++)
			{
				if (m_alarminfo.dwChannel[i] == 1)
				{
					csTemp.Format("服务器%s发生移动侦测报警 通道号%d ", sDVRIP, i);
					F_AddEvent(csTemp);
					TRACE(csTemp);
					//TRACE("服务器%s发生报警 报警类型:移动侦测 通道%d", sDVRIP, i);
				}
			}
			//sprintf(tempbuf,"报警类型:移动侦测 通道%d", i);
			break;
		case 4:
			for(i=0; i<MAX_DISKNUM; i++)
			{
				if(m_alarminfo.dwDiskNumber[i] == 1)
				{
					csTemp.Format("服务器%s发生硬盘未格式化报警 硬盘号%d ", sDVRIP, i);
					F_AddEvent(csTemp);
					TRACE(csTemp);
				}
			}
			//sprintf(tempbuf,"报警类型:硬盘未格式化");
			break;
		case 5:
			for(i=0; i<MAX_DISKNUM; i++)
			{
				if(m_alarminfo.dwDiskNumber[i] == 1)
				{
					csTemp.Format("服务器%s发生读写硬盘出错报警 硬盘号%d ", sDVRIP, i);
					F_AddEvent(csTemp);
					TRACE(csTemp);
				}
			}
			//sprintf(tempbuf,"报警类型:硬盘未格式化");
			break;
		case 6:
			for(i=0; i<MAX_CHANNUM; i++)
			{
				if (m_alarminfo.dwChannel[i] == 1)
				{
					csTemp.Format("服务器%s发生遮挡报警 通道号%d ", sDVRIP, i);
					F_AddEvent(csTemp);
					TRACE(csTemp);
				}
			}
			//sprintf(tempbuf,"报警类型:硬盘未格式化");
			break;
		default:
			csTemp.Format("报警类型:未知 %d",m_alarminfo.dwAlarmType);
			F_AddEvent(csTemp);
			TRACE(csTemp);
			break;
		}
		if(!hBeepThread)
		{
			ResetEvent(hVideoBeeper);
			hBeepThread = AfxBeginThread(Beeper,NULL);
		}
		csTemp.Format("%s", sDVRIP);
		for(i=0; i<MAX_CHANNUM; i++)
		{
			if(strcmp(serverinfo[i].m_csServerIP, csTemp) == 0)
					break;
		}
		if(i != MAX_CHANNUM)
		{
			if(hikClientParam.m_iAlarmHandle[i] >= 0)
			{
				MainDlg->m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_ON,CLed::LED_ROUND);
			}
			else
			{
				MainDlg->m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND);
			}
		}
		break;
	case COMM_LOG:
		break;
	case COMM_STARTVOICOM:
		break;
	case COMM_STOPVOICOM:
		break;
	default:
		break;
	}
	return 0;
}

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNewclientDlg dialog

CNewclientDlg::CNewclientDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CNewclientDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CNewclientDlg)
	m_yzd = 0;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CNewclientDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CNewclientDlg)
	DDX_Control(pDX, IDC_COMBONETDELAY, m_NetDelayCtrl);
	DDX_Control(pDX, IDC_ALARMLED9, m_AlarmLed9);
	DDX_Control(pDX, IDC_ALARMLED8, m_AlarmLed8);
	DDX_Control(pDX, IDC_ALARMLED7, m_AlarmLed7);
	DDX_Control(pDX, IDC_ALARMLED6, m_AlarmLed6);
	DDX_Control(pDX, IDC_ALARMLED5, m_AlarmLed5);
	DDX_Control(pDX, IDC_ALARMLED4, m_AlarmLed4);
	DDX_Control(pDX, IDC_ALARMLED3, m_AlarmLed3);
	DDX_Control(pDX, IDC_ALARMLED2, m_AlarmLed2);
	DDX_Control(pDX, IDC_ALARMLED16, m_AlarmLed16);
	DDX_Control(pDX, IDC_ALARMLED15, m_AlarmLed15);
	DDX_Control(pDX, IDC_ALARMLED14, m_AlarmLed14);
	DDX_Control(pDX, IDC_ALARMLED13, m_AlarmLed13);
	DDX_Control(pDX, IDC_ALARMLED12, m_AlarmLed12);
	DDX_Control(pDX, IDC_ALARMLED11, m_AlarmLed11);
	DDX_Control(pDX, IDC_ALARMLED10, m_AlarmLed10);
	DDX_Control(pDX, IDC_ALARMLED1, m_AlarmLed1);
	DDX_Control(pDX, IDC_LED9, m_CapLed9);
	DDX_Control(pDX, IDC_LED8, m_CapLed8);
	DDX_Control(pDX, IDC_LED7, m_CapLed7);
	DDX_Control(pDX, IDC_LED6, m_CapLed6);
	DDX_Control(pDX, IDC_LED5, m_CapLed5);
	DDX_Control(pDX, IDC_LED4, m_CapLed4);
	DDX_Control(pDX, IDC_LED3, m_CapLed3);
	DDX_Control(pDX, IDC_LED2, m_CapLed2);
	DDX_Control(pDX, IDC_LED16, m_CapLed16);
	DDX_Control(pDX, IDC_LED15, m_CapLed15);
	DDX_Control(pDX, IDC_LED14, m_CapLed14);
	DDX_Control(pDX, IDC_LED13, m_CapLed13);
	DDX_Control(pDX, IDC_LED12, m_CapLed12);
	DDX_Control(pDX, IDC_LED11, m_CapLed11);
	DDX_Control(pDX, IDC_LED10, m_CapLed10);
	DDX_Control(pDX, IDC_LED1, m_CapLed1);
	DDX_Control(pDX, IDC_COMBOWNDNUM, m_windownum);
	DDX_Control(pDX, IDC_SLIDERYL, m_yl);
	DDX_Control(pDX, IDC_SLIDERSD, m_sd);
	DDX_Control(pDX, IDC_SLIDERLD, m_ld);
	DDX_Control(pDX, IDC_SLIDERDBD, m_dbd);
	DDX_Control(pDX, IDC_SLIDERBHD, m_bhd);
	DDX_Text(pDX, IDC_YZD, m_yzd);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CNewclientDlg, CDialog)
	//{{AFX_MSG_MAP(CNewclientDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_EXIT, OnExit)
	ON_BN_CLICKED(IDC_AUDIOEXCHANGE, OnAudioexchange)
	ON_BN_CLICKED(IDC_SYSTEMCFG, OnSystemcfg)
	ON_BN_CLICKED(IDC_PLAY, OnVideonetplay)
	ON_BN_CLICKED(IDC_GETPICTURE, OnGetpicture)
	ON_BN_CLICKED(IDC_RECORD, OnRecord)
	ON_BN_CLICKED(IDC_EVENTLIST, OnEventlist)
	ON_BN_CLICKED(IDC_BUTTONALARMSET, OnButtonalarmset)
	ON_BN_CLICKED(IDC_VIDEOFILEPLAY, OnVideofileplay)
	ON_WM_TIMER()
	ON_WM_HSCROLL()
	ON_BN_CLICKED(IDC_BUTTONPOLL, OnButtonpoll)
	ON_BN_CLICKED(IDC_BUTTONYZW, OnButtonyzw)
	ON_CBN_SELCHANGE(IDC_COMBOWNDNUM, OnSelchangeCombowndnum)
	ON_MESSAGE(WM_MYCOMMAND,OnMyCommand)
	ON_CBN_SELCHANGE(IDC_COMBONETDELAY, OnSelchangeCombonetdelay)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
//wParam: 消息类型 lParam: 发生异常的索引值。 
void CNewclientDlg::OnMyCommand(WPARAM wParam, LPARAM lParam)
{
	char tempbuf[256];
	int i = 0;
	DWORD dwType = wParam;	//异常类型
	LONG lIndex = lParam;	//相对应得操作返回的句柄
	ZeroMemory(tempbuf,256);
	switch(dwType) 
	{
	case EXCEPTION_AUDIOEXCHANGE:	//语音对讲时网络异常
		sprintf(tempbuf,"语音对讲时网络异常!!!");
		TRACE("%s",tempbuf);
		if(lVoiceIndex != -1)
		{	
			if(lIndex == lVoiceIndex)
			{
				if(NET_DVR_StopVoiceCom(lVoiceIndex))
				{
					GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲");
					lVoiceIndex = -1;			
				}
				else
				{
					AfxMessageBox("停止语音对讲失败!");
				}
			}			
		}	
		break;
	case EXCEPTION_ALARM:			//报警上传时网络异常
		sprintf(tempbuf,"报警上传时网络异常!!!");
		TRACE("%s",tempbuf);
		for(i = 0; i < MAXIPNUMBER; i++)
		{				
			if(hikClientParam.m_iAlarmHandle[i] >= 0)
			{
				if(lIndex == hikClientParam.m_iAlarmHandle[i])
				{
					if(NET_DVR_CloseAlarmChan(hikClientParam.m_iAlarmHandle[i]))
					{
						hikClientParam.m_iAlarmHandle[i] = -1;
					}
					else
					{
						CString sTemp;
						sTemp.Format("%s报警撤防失败!",serverinfo[i].m_csServerName);
						AfxMessageBox(sTemp);
					}
					m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_DISABLED,CLed::LED_ROUND);
				}
			}
		}
		break;
	case EXCEPTION_PREVIEW:			//网络预览时异常
		sprintf(tempbuf,"网络预览时网络异常!!!");
		TRACE("%s",tempbuf);	
		if(hikClientParam.m_bPlaying)
		{				
			for(i = 0; i < MAXVIEWNUM; i++)
			{
				if(lIndex == myoutput[i].m_iPlayhandle)
				{
					if(myoutput[i].m_bFileSave)
					{
						F_StopClientRecord(i);
					}
					myoutput[i].StopNet();
				}				
			}
		}
		break;
	case EXCEPTION_SERIAL:			//透明通道传输时异常
		sprintf(tempbuf,"透明通道传输时网络异常!!!");
		TRACE("%s",tempbuf);
		//TODO: 关闭透明通道

		break;
	case EXCEPTION_RECONNECT:		//预览的时候重连
		sprintf(tempbuf,"预览时网络重连!!!");
		TRACE("%s",tempbuf);
		break;
	default:
		break;
	}
}

// CNewclientDlg message handlers

BOOL CNewclientDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	// TODO: Add extra initialization here
	int i,j;
	CString sTemp;
	NET_DVR_DEVICEINFO DeviceInfo;
	LONG lUserID = 0; 
	char csServerIP[16];
	char cUserName[100];
	char cPassword[100];
	BOOL bLogin = FALSE;
	char cTemp[100];
	DWORD dwReturned = 0;

	nUseCard =0;
	m_byException = 0;

⌨️ 快捷键说明

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