📄 newclientdlg.cpp
字号:
// newclientDlg.cpp : implementation file
//
/********************************************************************************
* Modify History:
* 2005-01-10: Add video lost alarm setup function in RemoteChannelConfig.cpp;
* 2005-01-04: In RemoteFilePlay.cpp and RemoteTimePlay.cpp, add save file
* function;
********************************************************************************/
#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"
#include "Capture.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_MYCOMMAND WM_USER+1 //for sdk
CLIENTPARAM ClientParam;
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; //Current playWindow enlarged flag;
//If the window is enlarged, then return multi-windows when it is closed;
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; //Alarm Event
HANDLE hBeepThread; //Alarm Thread
extern int nUseCard;
CNewclientDlg *MainDlg;
BOOL g_bShareSound = FALSE;
int g_nNetDelay = 2;
CCapture getpic;
//support multi-DDrawDevice
CRect g_rcWindow;
DWORD g_dwOldDeviceNum;
DWORD g_dwScreenWidth;
DWORD g_dwScreenHeight;
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;
}
//Message Callback handle function
int CALLBACK MessageCallback(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen)
{
CString csTemp;
int i = 0;
char tempbuf[256];
BOOL bDisk = FALSE;
csTemp.Format("%s", sDVRIP);
for(i=0; i<MAXIPNUMBER; i++)
{
if(strcmp(serverinfo[i].m_csServerIP, csTemp) == 0)
break;
}
int nStartChan = serverinfo[i].m_lStartChannel;
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("Switch alarm input%d happened in DVR %s !", m_alarminfo.dwAlarmInputNumber, sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
break;
case 1:
for(i=0; i<MAX_DISKNUM; i++)
{
if(m_alarminfo.dwDiskNumber[i] == 1)
{
csTemp.Format("No%d HDD in DVR %s is full!", i, sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
}
}
break;
case 2:
for(i=0; i<MAX_CHANNUM; i++)
{
if (m_alarminfo.dwChannel[i] == 1)
{
csTemp.Format("The signal of camera%d is lost in DVR %s !", i+nStartChan, sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
}
}
break;
case 3:
for(i=0; i<MAX_CHANNUM; i++)
{
if (m_alarminfo.dwChannel[i] == 1)
{
csTemp.Format("Camera%d has motion detection in DVR %s !", i+nStartChan, sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
}
}
break;
case 4:
for(i=0; i<MAX_DISKNUM; i++)
{
if(m_alarminfo.dwDiskNumber[i] == 1)
{
csTemp.Format("No%d HDD in DVR %s is not formatted!", i, sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
}
}
break;
case 5:
for(i=0; i<MAX_DISKNUM; i++)
{
if(m_alarminfo.dwDiskNumber[i] == 1)
{
bDisk = TRUE;
csTemp.Format("No%d HDD in DVR %s is failed to read and write! ", i, sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
}
}
if (bDisk == FALSE)
{
csTemp.Format("DVR %s is no HDD! ", sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
}
bDisk = FALSE;
break;
case 6:
for(i=0; i<MAX_CHANNUM; i++)
{
if (m_alarminfo.dwChannel[i] == 1)
{
csTemp.Format("Mask alarm of camrea%d in DVR %s !", i+nStartChan, sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
}
}
break;
case 7:
for(i=0; i<MAX_CHANNUM; i++)
{
if (m_alarminfo.dwChannel[i] == 1)
{
csTemp.Format("input and output video standard not match of camrea%d in DVR %s !", i+nStartChan, sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
}
}
break;
case 8:
csTemp.Format("illegal acces in DVR %s !", sDVRIP);
F_AddEvent(csTemp);
TRACE(csTemp);
break;
default:
csTemp.Format("Alarm Type:Unknown %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(ClientParam.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_TRADEINFO:
NET_DVR_TRADEINFO m_TradeInfo;
memcpy(&m_TradeInfo, pBuf, sizeof(NET_DVR_TRADEINFO));
csTemp.Format("DVR %s receive trade card number %s ", sDVRIP, m_TradeInfo.CardNumber);
F_AddEvent(csTemp);
TRACE(csTemp);
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_CBN_SELCHANGE(IDC_COMBONETDELAY, OnSelchangeCombonetdelay)
ON_MESSAGE(WM_MYCOMMAND,OnMyCommand)
ON_WM_MOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//wParam: Message type; lParam: the exception index;
LRESULT 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: //network exception in dialogue
sprintf(tempbuf,"Network exception when in dialogue!!!");
TRACE("%s",tempbuf);
if(lVoiceIndex != -1)
{
if(lIndex == lVoiceIndex)
{
if(NET_DVR_StopVoiceCom(lVoiceIndex))
{
GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("Dialogue");
lVoiceIndex = -1;
}
else
{
AfxMessageBox("Stop dialogue failed!");
}
}
}
break;
case EXCEPTION_ALARM: //Network exception when alarm information is sent to host PC
sprintf(tempbuf,"Network exception when alarm information is sent to remote host!!!");
TRACE("%s",tempbuf);
for(i = 0; i < MAXIPNUMBER; i++)
{
if(ClientParam.m_iAlarmHandle[i] >= 0)
{
if(lIndex == ClientParam.m_iAlarmHandle[i])
{
if(NET_DVR_CloseAlarmChan(ClientParam.m_iAlarmHandle[i]))
{
ClientParam.m_iAlarmHandle[i] = -1;
}
else
{
CString sTemp;
sTemp.Format("%s DVR alarm fortify failed!",serverinfo[i].m_csServerName);
AfxMessageBox(sTemp);
}
m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_DISABLED,CLed::LED_ROUND);
}
}
}
break;
case EXCEPTION_PREVIEW: //Network preview exception
sprintf(tempbuf,"Network preview exception!!!");
TRACE("%s",tempbuf);
if(ClientParam.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: //Exception in using transparent channel function
sprintf(tempbuf,"Network exception when using transparent channel function!!!");
TRACE("%s",tempbuf);
//TODO: Close transparent channel function
break;
case EXCEPTION_RECONNECT: //Network preview reconnect
sprintf(tempbuf,"Network preview reconnect!!!");
TRACE("%s",tempbuf);
break;
default:
break;
}
return 0;
}
// CNewclientDlg message handlers
BOOL CNewclientDlg::OnInitDialog()
{
CDialog::OnInitDialog();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -