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

📄 remotelog.cpp

📁 监控开发资料,提供二次开发源码和使用说明书
💻 CPP
字号:
// RemoteLog.cpp : implementation file
//

#include "stdafx.h"
#include "newclient.h"
#include "RemoteLog.h"

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

extern	SERVER_INFO serverinfo[MAXIPNUMBER];
CRemoteLog * RFile;

/////////////////////////////////////////////////////////////////////////////
// CRemoteLog dialog

UINT GetLogFileThread(LPVOID pParam)
{
	LONG bRet = -1;
	NET_DVR_LOG strFileInfo;
	CString tempstring;
	
	while(1) 
	{
		bRet = NET_DVR_FindNextLog(RFile->m_lLogFile, &strFileInfo);
		if(bRet == NET_DVR_FILE_SUCCESS)
		{	
			tempstring.Format("%04d-%02d-%02d %02d:%02d:%02d", strFileInfo.strLogTime.dwYear, strFileInfo.strLogTime.dwMonth, strFileInfo.strLogTime.dwDay, strFileInfo.strLogTime.dwHour,strFileInfo.strLogTime.dwMinute,strFileInfo.strLogTime.dwSecond);
			RFile->m_list.InsertItem(RFile->m_lLogNum,tempstring,0);
			if(strFileInfo.dwMajorType == 1)
			{
				tempstring.Format("%s","报警");
			}
			else if(strFileInfo.dwMajorType == 2)
			{
				tempstring.Format("%s","异常");
			}
			else if(strFileInfo.dwMajorType == 3)
			{
				tempstring.Format("%s","操作");
			}
			RFile->m_list.SetItemText(RFile->m_lLogNum,1,tempstring);
			tempstring.Format("%d",strFileInfo.dwMinorType);
			RFile->m_list.SetItemText(RFile->m_lLogNum,2,tempstring);
			RFile->m_lLogNum++;
		}
		else
		{
			if(bRet == NET_DVR_ISFINDING)
			{
				Sleep(5);
				continue;
			}
			if( (bRet == NET_DVR_NOMOREFILE) || (bRet == NET_DVR_FILE_NOFIND) )
			{
				RFile->GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");  // by zxy 2005/05/10
				RFile->m_bSearch = FALSE;
				AfxMessageBox("搜索日志结束!");
				break;
			}
			else
			{
				RFile->GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
				RFile->m_bSearch = FALSE;
				AfxMessageBox("由于服务器忙,或网络故障,搜索日志异常终止!");
				break;
			}
		}
	}
	CloseHandle(RFile->m_hFileThread);
	RFile->m_hFileThread = NULL;
	NET_DVR_FindLogClose(RFile->m_lLogFile);
	return 0;
}

CRemoteLog::CRemoteLog(CWnd* pParent /*=NULL*/)
	: CDialog(CRemoteLog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRemoteLog)
	m_ctDateStart = 0;
	m_ctDateStop = 0;
	m_ctTimeStart = 0;
	m_ctTimeStop = 0;
	//}}AFX_DATA_INIT
}


void CRemoteLog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRemoteLog)
	DDX_Control(pDX, IDC_LIST, m_list);
	DDX_Control(pDX, IDC_COMBOSERVER, m_ServerCtrl);
	DDX_Control(pDX, IDC_COMBOMODE, m_ModeCtrl);
	DDX_Control(pDX, IDC_COMBOMINTYPE, m_MinTypeCtrl);
	DDX_Control(pDX, IDC_COMBOMAJTYPE, m_MajTypeCtrl);
	DDX_DateTimeCtrl(pDX, IDC_DATESTART, m_ctDateStart);
	DDX_DateTimeCtrl(pDX, IDC_DATESTOP, m_ctDateStop);
	DDX_DateTimeCtrl(pDX, IDC_TIMESTART, m_ctTimeStart);
	DDX_DateTimeCtrl(pDX, IDC_TIMESTOP, m_ctTimeStop);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRemoteLog, CDialog)
	//{{AFX_MSG_MAP(CRemoteLog)
	ON_BN_CLICKED(IDEXIT, OnExit)
	ON_BN_CLICKED(IDC_BUTTONFIND, OnButtonfind)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRemoteLog message handlers

BOOL CRemoteLog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_bSearch = FALSE;
	m_hFileThread = NULL;
	m_ServerCtrl.AddString("请选择DVR");
	for(int i = 0; i < MAXIPNUMBER; i++)
	{
		if(serverinfo[i].m_csServerName != "")
			m_ServerCtrl.AddString(serverinfo[i].m_csServerName);
	}
	RFile = this;
	
	m_list.InsertColumn(0,"日志时间",LVCFMT_LEFT,180,-1);
	m_list.InsertColumn(1,"主类型",LVCFMT_LEFT,80,-1);
	m_list.InsertColumn(2,"次类型",LVCFMT_LEFT,150,-1);
	m_list.InsertColumn(3,"事件",LVCFMT_LEFT,150,-1);

	m_lLogNum = 0;
	m_lLogFile = -1;	
	CTime time1 = CTime::GetCurrentTime();
	CTime time(time1.GetYear(),time1.GetMonth(),time1.GetDay(),0,0,0);
	CTime time0(time1.GetYear(),time1.GetMonth(),time1.GetDay(),23,59,59);
	m_ctDateStart = time;
	m_ctTimeStart = time;
	m_ctDateStop = time1;
	m_ctTimeStop = time0;
	m_iServer = 0;
	m_iMode = 0;
	m_iMajType = 0;
	m_iMinType = 0;
	m_ServerCtrl.SetCurSel(m_iServer);
	m_ModeCtrl.SetCurSel(m_iMode);
	m_MajTypeCtrl.SetCurSel(m_iMajType);
	m_MinTypeCtrl.SetCurSel(m_iMinType);
	UpdateData(FALSE); 
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CRemoteLog::OnCancel() 
{
	// TODO: Add extra cleanup here
	
//	CDialog::OnCancel();
}

void CRemoteLog::OnOK() 
{
	// TODO: Add extra validation here
	
//	CDialog::OnOK();
}

void CRemoteLog::OnExit() 
{
	// TODO: Add your control notification handler code here
	if(m_hFileThread)
	{
		TerminateThread(m_hFileThread, 0);
		CloseHandle(m_hFileThread);
		m_hFileThread = NULL;
		NET_DVR_FindLogClose(m_lLogFile);
	}
	CDialog::OnCancel();
}

void CRemoteLog::OnButtonfind() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	
	if(!m_bSearch)
	{
		NET_DVR_TIME StartTime;
		NET_DVR_TIME StopTime;
		
		m_iServer = m_ServerCtrl.GetCurSel()-1;
		m_iMode = m_ModeCtrl.GetCurSel();
		m_iMajType = m_MajTypeCtrl.GetCurSel();
		m_iMinType = m_MinTypeCtrl.GetCurSel();
		StartTime.dwYear = (WORD)m_ctDateStart.GetYear();
		StartTime.dwMonth = (WORD)m_ctDateStart.GetMonth();
		StartTime.dwDay = (WORD)m_ctDateStart.GetDay();
		StartTime.dwHour = (char)m_ctTimeStart.GetHour();
		StartTime.dwMinute = (char)m_ctTimeStart.GetMinute();
		StartTime.dwSecond = (char)m_ctTimeStart.GetSecond();
		StopTime.dwYear = (WORD)m_ctDateStop.GetYear();
		StopTime.dwMonth = (WORD)m_ctDateStop.GetMonth();
		StopTime.dwDay = (WORD)m_ctDateStop.GetDay();
		StopTime.dwHour = (char)m_ctTimeStop.GetHour();
		StopTime.dwMinute = (char)m_ctTimeStop.GetMinute();
		StopTime.dwSecond = (char)m_ctTimeStop.GetSecond();
		
		m_lLogFile = NET_DVR_FindDVRLog(serverinfo[m_iServer].m_lServerID, m_iMode, m_iMajType, m_iMinType, &StartTime, &StopTime);
		if(m_lLogFile < 0)
		{
			AfxMessageBox("搜索日志失败!");
			CString sTemp;
			sTemp.Format("ERROR: NET_DVR_FindDVRLog = %d",NET_DVR_GetLastError());
			TRACE(sTemp);
			return;
		}
		m_bSearch = TRUE;
		DWORD dwThreadId;
		if(m_hFileThread == NULL)
			m_hFileThread = CreateThread(NULL,0,LPTHREAD_START_ROUTINE(GetLogFileThread),this,0,&dwThreadId);		
		if(m_hFileThread == NULL)
		{
			AfxMessageBox("打开线程失败!");
			return;
		}
		GetDlgItem(IDC_BUTTONFIND)->SetWindowText("停止搜索");
		m_bSearch = TRUE;
	}
	else
	{
		NET_DVR_FindLogClose(m_lLogFile);
		GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
		m_bSearch = FALSE;
		
		if(m_hFileThread)
		{
			TerminateThread(m_hFileThread, 0);
			CloseHandle(m_hFileThread);
			m_hFileThread = NULL;
		}
		NET_DVR_FindLogClose(m_lLogFile);
		GetDlgItem(IDC_BUTTONFIND)->SetWindowText("搜索日志");
		m_bSearch = FALSE;
		m_lLogNum = 0;
		m_hFileThread = NULL;
	}
}

⌨️ 快捷键说明

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