?? newclientdlg.cpp
字號:
// 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發(fā)生信號量報警 報警輸入%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發(fā)生硬盤滿報警 硬盤號%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發(fā)生信號丟失報警 通道號%d ", sDVRIP, i);
F_AddEvent(csTemp);
TRACE(csTemp);
//TRACE("服務器%s發(fā)生報警 報警類型:信號丟失 通道%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發(fā)生移動偵測報警 通道號%d ", sDVRIP, i);
F_AddEvent(csTemp);
TRACE(csTemp);
//TRACE("服務器%s發(fā)生報警 報警類型:移動偵測 通道%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發(fā)生硬盤未格式化報警 硬盤號%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發(fā)生讀寫硬盤出錯報警 硬盤號%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發(fā)生遮擋報警 通道號%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: 發(fā)生異常的索引值。
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 + -