基本信息
源码名称:c++ 监控软件客户端源码
源码大小:3.86M
文件格式:.rar
开发语言:C/C++
更新时间:2017-06-03
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
// 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" #include "RemoteParamsCfg.h" CRemoteParamsCfg RemoteParamsCfgDlg; #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; //播放窗口是否在放大,如果是放大的窗口,则关闭该窗口时,恢复到原来多窗口画面; 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; void *pDecHandle; void *pEncHandle; DWORD g_dwcnt = 0; 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) { BOOL bDisk = FALSE; CString csTemp; int i = 0; 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)); switch (m_alarminfo.dwAlarmType) { case 0: csTemp.Format("服务器%s发生信号量报警 报警输入%d ", sDVRIP, m_alarminfo.dwAlarmInputNumber 1); F_AddEvent(csTemp); TRACE(csTemp); for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwAlarmRelateChannel[i] == 1) { csTemp.Format("触发通道号%d ", i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } 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); } } break; case 2: for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwChannel[i] == 1) { csTemp.Format("服务器%s发生信号丢失报警 通道号%d ", sDVRIP, i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } break; case 3: for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwChannel[i] == 1) { csTemp.Format("服务器%s发生移动侦测报警 通道号%d ", sDVRIP, i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } 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); } } break; case 5: for (i=0; i<MAX_DISKNUM; i ) { if (m_alarminfo.dwDiskNumber[i] == 1) { bDisk = TRUE; csTemp.Format("服务器%s发生读写硬盘出错报警 硬盘号%d ", sDVRIP, i); F_AddEvent(csTemp); TRACE(csTemp); } } if (bDisk == FALSE) { csTemp.Format("服务器%s发生未接硬盘出错报警 ", 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("服务器%s发生遮挡报警 通道号%d ", sDVRIP, i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } break; case 7: for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwChannel[i] == 1) { csTemp.Format("服务器%s发生制式不匹配 通道号%d ", sDVRIP, i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } break; case 8: csTemp.Format("服务器%s发生非法访问 ", sDVRIP); F_AddEvent(csTemp); TRACE(csTemp); 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<16; i )//只能对16台布防的设备显示灯 { 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("服务器%s收到卡号信息%s ", sDVRIP, m_TradeInfo.CardNumber); F_AddEvent(csTemp); TRACE(csTemp); break; default: break; } return 0; } //消息回调处理函数 int CALLBACK MessageCallback_EX(LONG lCommand,LONG lUserID,char *pBuf,DWORD dwBufLen) { CString csTemp; CString sDVRIP; int i = 0; for (i=0; i<MAXIPNUMBER; i ) { if (serverinfo[i].m_lServerID == lUserID) break; } int nStartChan = serverinfo[i].m_lStartChannel; sDVRIP.Format("%s", serverinfo[i].m_csServerIP); switch (lCommand) { case COMM_ALARM: NET_DVR_ALARMINFO m_alarminfo; memcpy(&m_alarminfo, pBuf, sizeof(NET_DVR_ALARMINFO)); switch (m_alarminfo.dwAlarmType) { case 0: csTemp.Format("服务器%s发生信号量报警 报警输入%d ", sDVRIP, m_alarminfo.dwAlarmInputNumber 1); F_AddEvent(csTemp); TRACE(csTemp); for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwAlarmRelateChannel[i] == 1) { csTemp.Format("触发通道号%d ", i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } 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); } } break; case 2: for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwChannel[i] == 1) { csTemp.Format("服务器%s发生信号丢失报警 通道号%d ", sDVRIP, i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } break; case 3: for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwChannel[i] == 1) { csTemp.Format("服务器%s发生移动侦测报警 通道号%d ", sDVRIP, i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } 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); } } 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); } } break; case 6: for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwChannel[i] == 1) { csTemp.Format("服务器%s发生遮挡报警 通道号%d ", sDVRIP, i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } break; case 7: for (i=0; i<MAX_CHANNUM; i ) { if (m_alarminfo.dwChannel[i] == 1) { csTemp.Format("服务器%s发生制式不匹配 通道号%d ", sDVRIP, i nStartChan); F_AddEvent(csTemp); TRACE(csTemp); } } break; case 8: csTemp.Format("服务器%s发生非法访问 ", sDVRIP); F_AddEvent(csTemp); TRACE(csTemp); 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<16; i )//只能对16台布防的设备显示灯 { 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; 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_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTXH, OnButxh) ON_BN_CLICKED(IDC_BUTJPEGPIC, OnButjpegpic) ON_MESSAGE(WM_MYCOMMAND,OnMyCommand) ON_WM_MOVE() //}}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 (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报警撤防失败!",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 (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: //透明通道传输时异常 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; NET_DVR_NETCFG netcfg; nUseCard =0; m_byException = 0; hBrush=::CreateSolidBrush(COLORREF(0xff00ff)); ZeroMemory(cWorkDir, 256); GetCurrentDirectory(256, cWorkDir); TRACE("cWordDir = %s", cWorkDir); CNewclientApp* pApp = (CNewclientApp*)AfxGetApp(); m_iHardDriverNum = pApp->m_iDriverNum; for (i = 0; i < m_iHardDriverNum; i ) { m_cHardDriver[i] = pApp->m_cHardDriver[i]; } ClientParam.m_bCheckServerTime = FALSE; ClientParam.m_iCheckServerTime = 0; for (i = 0; i < MAXIPNUMBER; i ) { serverinfo[i].m_csServerName.Format(_T("")); serverinfo[i].m_iServerChannelNumber = -1; serverinfo[i].m_wServerPort = 8000; serverinfo[i].m_lServerID = -1; for (j = 0; j < MAXCHANNUM; j ) { allipinfo[i][j].m_lServerID = -1; allipinfo[i][j].m_iChannel = -1; allipinfo[i][j].m_iServerNum = -1; allipinfo[i][j].m_iChannelNum = -1; allipinfo[i][j].m_wServerport = 8000; allipinfo[i][j].m_bChoosed = FALSE; allipinfo[i][j].m_iSequence = -1; } } for (i=0; i<10; i ) { cTemp[i] = i; } ReadSurveillanceConfig(); for (i=0; i<MAXIPNUMBER; i ) { if (serverinfo[i].m_iServerChannelNumber >= 0) { strcpy(csServerIP, serverinfo[i].m_csServerIP); strncpy(cUserName, serverinfo[i].m_csServerAdminName, MAX_NAMELEN); strncpy(cPassword, serverinfo[i].m_csServerAdminPasswd, PASSWD_LEN); lUserID = NET_DVR_Login(csServerIP, serverinfo[i].m_wServerPort, cUserName, cPassword, &DeviceInfo); if (lUserID < 0) { CString sTemp; int nErr = NET_DVR_GetLastError(); if (nErr == NET_DVR_PASSWORD_ERROR) { sTemp.Format("%s 用户名密码错误! ", csServerIP); TRACE(sTemp); AfxMessageBox(sTemp); } //TODO: 其他错误值 else { sTemp.Format("%s 由于网络原因或DVR忙, 注册失败! ", csServerIP); TRACE(sTemp); AfxMessageBox(sTemp); } } else { //TRACE("csServerIP = %s lUserID = %d", csServerIP, lUserID); if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_NETCFG, 0,&netcfg, sizeof(NET_DVR_NETCFG), &dwReturned)) { CString sTemp; sTemp.Format("获取服务器配置信息失败: NET_DVR_GET_NETCFG = %d \n", NET_DVR_GetLastError()); TRACE(sTemp); } bLogin = TRUE; serverinfo[i].m_lServerID = lUserID; serverinfo[i].m_wServerType = DeviceInfo.byDVRType; serverinfo[i].m_lStartChannel = DeviceInfo.byStartChan; serverinfo[i].m_dwAlarmInNum = DeviceInfo.byAlarmInPortNum; serverinfo[i].m_dwAlarmOutNum = DeviceInfo.byAlarmOutPortNum; serverinfo[i].m_iServerChannelNumber = DeviceInfo.byChanNum; serverinfo[i].m_dwDiskNum = DeviceInfo.byDiskNum; serverinfo[i].m_csServerMultiIP = netcfg.sMultiCastIP; serverinfo[i].m_dwServerMultiIPvalue = inet_addr(netcfg.sMultiCastIP); ZeroMemory(cTemp, 100); memcpy(cTemp, DeviceInfo.sSerialNumber, SERIALNO_LEN); serverinfo[i].m_csSerialNumber.Format("%s", cTemp); for (j = 0; j < MAXCHANNUM; j ) { if (j < DeviceInfo.byChanNum) { allipinfo[i][j].m_lServerID = lUserID; allipinfo[i][j].m_csChanName.Format("通道%d",(j DeviceInfo.byStartChan)); allipinfo[i][j].m_iChannel = j DeviceInfo.byStartChan; allipinfo[i][j].m_csMultiIP = netcfg.sMultiCastIP; allipinfo[i][j].m_dwMultiIPvalue = inet_addr(allipinfo[i][j].m_csMultiIP); if ( (allipinfo[i][j].m_bChoosed) && (allipinfo[i][j].m_iSequence != -1) ) { selipinfo[allipinfo[i][j].m_iSequence].m_bChoosed = allipinfo[i][j].m_bChoosed; selipinfo[allipinfo[i][j].m_iSequence].m_csChanName = allipinfo[i][j].m_csChanName; selipinfo[allipinfo[i][j].m_iSequence].m_csIP = allipinfo[i][j].m_csIP; selipinfo[allipinfo[i][j].m_iSequence].m_csMultiIP = allipinfo[i][j].m_csMultiIP; selipinfo[allipinfo[i][j].m_iSequence].m_csPassword = allipinfo[i][j].m_csPassword; selipinfo[allipinfo[i][j].m_iSequence].m_csUser = allipinfo[i][j].m_csUser; selipinfo[allipinfo[i][j].m_iSequence].m_dwAddress = allipinfo[i][j].m_dwAddress; selipinfo[allipinfo[i][j].m_iSequence].m_dwAlarmlevel = allipinfo[i][j].m_dwAlarmlevel; selipinfo[allipinfo[i][j].m_iSequence].m_dwIPvalue = allipinfo[i][j].m_dwIPvalue; selipinfo[allipinfo[i][j].m_iSequence].m_dwMultiIPvalue = allipinfo[i][j].m_dwMultiIPvalue; selipinfo[allipinfo[i][j].m_iSequence].m_dwProtocol = allipinfo[i][j].m_dwProtocol; selipinfo[allipinfo[i][j].m_iSequence].m_iChannel = allipinfo[i][j].m_iChannel; selipinfo[allipinfo[i][j].m_iSequence].m_iSequence = allipinfo[i][j].m_iSequence; selipinfo[allipinfo[i][j].m_iSequence].m_lServerID = allipinfo[i][j].m_lServerID; selipinfo[allipinfo[i][j].m_iSequence].m_wJMQtype = allipinfo[i][j].m_wJMQtype; selipinfo[allipinfo[i][j].m_iSequence].m_wServerport = allipinfo[i][j].m_wServerport; selipinfo[allipinfo[i][j].m_iSequence].m_iServerNum = i; selipinfo[allipinfo[i][j].m_iSequence].m_iChannelNum = j; iSurveillanceNumber ; //TRACE("m_iSequence = %d csServerIP = %s m_lServerID = %d", allipinfo[i][j].m_iSequence, selipinfo[allipinfo[i][j].m_iSequence].m_csIP, selipinfo[allipinfo[i][j].m_iSequence].m_lServerID); } } else { allipinfo[i][j].m_lServerID = -1; allipinfo[i][j].m_csChanName.Format(""); allipinfo[i][j].m_iChannel = -1; } } } } } ClientParam.m_bCyclePlay = FALSE; ClientParam.m_iCycleTime = 20; ClientParam.m_bUseCard = FALSE; ClientParam.m_bNTSC = FALSE; ClientParam.m_bAutoRecord = FALSE; ClientParam.m_bCycleRecord = FALSE; ClientParam.m_iRecordFileInterval = 60; ClientParam.m_iStartRecordDriver = 0; ClientParam.m_iEndRecordDriver = m_iHardDriverNum - 1; ClientParam.m_csDownLoadPath.Format(_T("C:\\DownLoad")); ClientParam.m_csPictureSavePath.Format(_T("C:\\Picture")); ClientParam.m_csLogSavePath.Format(_T("C:\\EventLog")); sTemp.Format("%s\\", ClientParam.m_csDownLoadPath); CreateDirectory(sTemp, NULL); sTemp.Format("%s\\", ClientParam.m_csPictureSavePath); CreateDirectory(sTemp, NULL); sTemp.Format("%s\\", ClientParam.m_csLogSavePath); CreateDirectory(sTemp, NULL); for (i = 0; i < 7; i ) { for (j = 0; j < 4; j ) { ClientParam.m_ClientRecordTime[i][j].m_iStartHour = 0; ClientParam.m_ClientRecordTime[i][j].m_iStartMinute = 0; ClientParam.m_ClientRecordTime[i][j].m_iStartTime = 0; ClientParam.m_ClientRecordTime[i][j].m_iStopHour = 0; ClientParam.m_ClientRecordTime[i][j].m_iStopMinute = 0; ClientParam.m_ClientRecordTime[i][j].m_iStopTime = 0; } } ClientParam.m_bAllDiskFull = FALSE; ClientParam.m_bPlaying = FALSE; ClientParam.m_bCycling = FALSE; ClientParam.m_bNextPage = FALSE; ClientParam.m_bFrontPage = FALSE; ClientParam.m_bEnlarged = FALSE; ClientParam.m_bFullScreen = FALSE; ClientParam.m_bMultiScreen = FALSE; for (i = 0; i < MAXIPNUMBER; i ) ClientParam.m_iAlarmHandle[i] = -1; for (i = 0; i < MAXVIEWNUM; i ) { ClientParam.m_VideoInfo[i].m_iBrightness = DEFAULTBRIGHTNESS; ClientParam.m_VideoInfo[i].m_iContrast = DEFAULTCONTRAST; ClientParam.m_VideoInfo[i].m_iSaturation = DEFAULTSATURATION; ClientParam.m_VideoInfo[i].m_iHue = DEFAULTHUE; } ClientParam.m_Volume = DEFAULTVOLUME; ReadClientConfig(); m_cCurrentRecordDriver = m_cHardDriver[ClientParam.m_iStartRecordDriver]; autorecordtimer = 0; autorecordtimer = SetTimer(AUTORECORD_TIMER, 2000, NULL); if (ClientParam.m_bCheckServerTime) { TRACE("启动硬盘录像机校时时钟,校时时间是每天的%06d", ClientParam.m_iCheckServerTime); checkservertimer = 0; checkservertimer = SetTimer(CHECKSERVER_TIMER, 1000, NULL); } for (i = 0; i < MAXALARMIN; i ) { alarminfo[i].m_csIP.Format(_T("")); alarminfo[i].m_csUsername.Format(_T("")); alarminfo[i].m_csPassword.Format(_T("")); alarminfo[i].m_lServerID = -1; alarminfo[i].m_iChannel = -1; alarminfo[i].m_iAlarmLevel = -1; alarminfo[i].m_iAlarmType = -1; alarminfo[i].m_iPortIndex = -1; alarminfo[i].m_wServerPort = 8000; } m_iAlarmNumber = 0; m_ld.SetRange(1,10,TRUE); m_sd.SetRange(1,10,TRUE); m_bhd.SetRange(1,10,TRUE); m_dbd.SetRange(1,10,TRUE); m_yl.SetRange(1,100,TRUE); m_ld.SetPos(DEFAULTBRIGHTNESS); m_sd.SetPos(DEFAULTHUE); m_bhd.SetPos(DEFAULTSATURATION); m_dbd.SetPos(DEFAULTCONTRAST); m_yl.SetPos(DEFAULTVOLUME); m_mybuttonup.SubclassDlgItem(IDC_BUTTONUP,this); m_mybuttondown.SubclassDlgItem(IDC_BUTTONDOWN,this); m_mybuttonleft.SubclassDlgItem(IDC_BUTTONLEFT,this); m_mybuttonright.SubclassDlgItem(IDC_BUTTONRIGHT,this); m_mybuttontjright.SubclassDlgItem(IDC_BUTTONTJRIGHT,this); m_mybuttontjleft.SubclassDlgItem(IDC_BUTTONTJLEFT,this); m_mybuttonjjleft.SubclassDlgItem(IDC_BUTTONJJLEFT,this); m_mybuttonjjright.SubclassDlgItem(IDC_BUTTONJJRIGHT,this); m_mybuttongqleft.SubclassDlgItem(IDC_BUTTONGQLEFT,this); m_mybuttongqright.SubclassDlgItem(IDC_BUTTONGQRIGHT,this); InitLed(); for (i=0;i<MAXVIEWNUM;i ) { myoutput[i].Create(IDD_MYOUTPUT,this); } m_windownum.SetCurSel(2); WINDOWNUM = 9; channelcount = 0; if (ClientParam.m_bUseCard) { F_InitDecodeCard(); } mycurwin.Create(IDD_CURWIN,this); ArrayWindow(0,WINDOWNUM); MoveCurWin(WINDOWNUM,0); hVideoBeeper=NULL; //报警事件 hBeepThread=NULL; //报警线程 hVideoBeeper = ::CreateEvent(NULL, // no security attributes TRUE, // auto-reset event FALSE, // initial state is signaled NULL // object name ); ResetEvent(hVideoBeeper); freespacetimer = 0; freespacetimer = SetTimer(FREESPACE_TIMER, 5000, NULL); fileintervaltimer = 0; fileintervaltimer = SetTimer(FILEINTERVAL_TIMER, 2000, NULL); //SDK中收到DVR发过来的信息需要上传的通过回调函数实现,比如报警信息,日志信息等。 NET_DVR_SetDVRMessCallBack(MessageCallback); //SDK中检测到异常通过消息的方式上传,比如网络断开 NET_DVR_SetDVRMessage(WM_MYCOMMAND,this->m_hWnd); // 设置连接的超时设置 NET_DVR_SetConnectTime(5000,1); //7200端口是监听端口 if (!NET_DVR_StartListen(NULL,7200)) { CString sTemp; sTemp.Format("ERROR: NET_DVR_StartListen = %d \n", NET_DVR_GetLastError()); AfxMessageBox(sTemp); } cycletimer = 0; m_NetDelayCtrl.SetCurSel(g_nNetDelay); pDecHandle = pEncHandle = NULL; pEncHandle = NET_DVR_InitG722Encoder(); pDecHandle = NET_DVR_InitG722Decoder(16000); MainDlg = this; return TRUE; // return TRUE unless you set the focus to a control } void CNewclientDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CNewclientDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon 1) / 2; int y = (rect.Height() - cyIcon 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CNewclientDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CNewclientDlg::OnExit() { // TODO: Add your control notification handler code here if (IDOK != MessageBox("确定要退出吗?","警告",IDOK)) return; int i = 0; F_StopPlay(); if (lVoiceIndex != -1) { if (NET_DVR_StopVoiceCom(lVoiceIndex)) { GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲"); lVoiceIndex = -1; } else { AfxMessageBox("停止语音对讲失败!"); } } if (cycletimer) { KillTimer(CYCLE_TIMER); cycletimer = 0; } if (freespacetimer) { KillTimer(FREESPACE_TIMER); freespacetimer = 0; } if (fileintervaltimer) { KillTimer(FILEINTERVAL_TIMER); fileintervaltimer = 0; } if (checkservertimer) { // TRACE("关闭校时时钟"); KillTimer(CHECKSERVER_TIMER); checkservertimer = 0; } if (hVideoBeeper) SetEvent(hVideoBeeper); if (ClientParam.m_bUseCard) { NET_DVR_ReleaseDevice_Card(); NET_DVR_ReleaseDDraw_Card(); } NET_DVR_StopListen(); for (i=0; i<MAXIPNUMBER; i ) { if (serverinfo[i].m_iServerChannelNumber >= 0) { if (serverinfo[i].m_lServerID != -1) { if (ClientParam.m_iAlarmHandle[i] >= 0) { if (NET_DVR_CloseAlarmChan(ClientParam.m_iAlarmHandle[i])) { ClientParam.m_iAlarmHandle[i] = -1; } } if (!NET_DVR_Logout(serverinfo[i].m_lServerID)) { CString sTemp; sTemp.Format("ERROR: %s NET_DVR_Logout = %d",serverinfo[i].m_csServerIP, NET_DVR_GetLastError()); TRACE(sTemp); } } } } NET_DVR_ReleaseG722Decoder(pDecHandle); NET_DVR_ReleaseG722Encoder(pEncHandle); CDialog::OnCancel(); } void CNewclientDlg::ArrayWindow(WORD iPos, WORD iNumber) { int i = 0; CRect crect; GetClientRect(&crect); WORD iWidth,iHeight; NET_DVR_DISPLAY_PARA displaypara; for (i = 0;i < MAXVIEWNUM;i ) { myoutput[i].ShowWindow(SW_HIDE); } switch (iNumber) { case 4: if (ClientParam.m_bMultiScreen) { iWidth = 510; iHeight = 383; MYVIEW_LEFT = 0; MYVIEW_TOP = 0; } else { MYVIEW_LEFT = 20; MYVIEW_TOP = 20; iWidth = 354; iHeight = 290; } bLargeWnd = FALSE; for (i = 0; i < 2; i ) { myoutput[i].MoveWindow(MYVIEW_LEFT i*iWidth i*3,MYVIEW_TOP,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT i*iWidth i*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for (i = 2; i < 4; i ) { myoutput[i].MoveWindow(MYVIEW_LEFT (i-2)*iWidth (i-2)*3,MYVIEW_TOP iHeight 2,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT (i-2)*iWidth (i-2)*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP iHeight 2; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } break; case 9: if (ClientParam.m_bMultiScreen) { iWidth = 339; iHeight = 254; MYVIEW_LEFT = 0; MYVIEW_TOP = 0; } else { iWidth = 234; iHeight = 192; MYVIEW_LEFT = 20; MYVIEW_TOP = 20; } bLargeWnd = FALSE; for (i=0;i<3;i ) { myoutput[i].MoveWindow(MYVIEW_LEFT i*iWidth i*3,MYVIEW_TOP,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT i*iWidth i*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for (i=3;i<6;i ) { myoutput[i].MoveWindow(MYVIEW_LEFT (i-3)*iWidth (i-3)*3,MYVIEW_TOP iHeight 2,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT (i-3)*iWidth (i-3)*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP iHeight 2; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for (i=6;i<9;i ) { myoutput[i].MoveWindow(MYVIEW_LEFT (i-6)*iWidth (i-6)*3,MYVIEW_TOP 2*iHeight 4,iWidth,iHeight,true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT (i-6)*iWidth (i-6)*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP (iHeight 2)*2; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } break; case 16: if (ClientParam.m_bMultiScreen) { iWidth = 254; iHeight = 190; MYVIEW_LEFT = 0; MYVIEW_TOP = 0; } else { MYVIEW_LEFT = 20; MYVIEW_TOP = 20; iWidth = 178;//176; iHeight = 146;//144; } bLargeWnd = FALSE; for (i = 0; i < 4; i ) { myoutput[i].MoveWindow(MYVIEW_LEFT i*iWidth i*3, MYVIEW_TOP, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT i*iWidth i*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for (i = 4; i < 8; i ) { myoutput[i].MoveWindow(MYVIEW_LEFT (i-4)*iWidth (i-4)*3, MYVIEW_TOP iHeight 2, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT (i-4)*iWidth (i-4)*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP iHeight 2; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for (i = 8; i < 12; i ) { myoutput[i].MoveWindow(MYVIEW_LEFT (i-8)*iWidth (i-8)*3, MYVIEW_TOP iHeight*2 4, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT (i-8)*iWidth (i-8)*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP (iHeight 2)*2; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } for (i = 12; i < 16; i ) { myoutput[i].MoveWindow(MYVIEW_LEFT (i-12)*iWidth (i-12)*3, MYVIEW_TOP iHeight*3 6, iWidth, iHeight, true); myoutput[i].m_display_para.nLeft = MYVIEW_LEFT (i-12)*iWidth (i-12)*3/*-2*/; myoutput[i].m_display_para.nTop = MYVIEW_TOP (iHeight 2)*3; myoutput[i].m_display_para.nWidth = iWidth/* 2*/; myoutput[i].m_display_para.nHeight = iHeight; myoutput[i].ShowWindow(SW_SHOW); } break; case 1: // wndsize为TRUE时,表示画面中的某个窗口放大; // wndsize为FALSE时,表示画面只有一个窗口,也就不需要放大、缩小; if (ClientParam.m_bMultiScreen) { iWidth = 1024; iHeight = 768; MYVIEW_LEFT = 0; MYVIEW_TOP = 0; } else { MYVIEW_LEFT = 20; MYVIEW_TOP = 20; iWidth = 706; iHeight = 578; } myoutput[iPos].MoveWindow(MYVIEW_LEFT,MYVIEW_TOP,iWidth,iHeight,true); myoutput[iPos].m_display_para.nLeft = MYVIEW_LEFT; myoutput[iPos].m_display_para.nTop = MYVIEW_TOP; myoutput[iPos].m_display_para.nWidth = iWidth; myoutput[iPos].m_display_para.nHeight = iHeight; myoutput[iPos].ShowWindow(SW_SHOW); break; default: break; } if (ClientParam.m_bUseCard) { TRACE("Use Decode Card"); TRACE("iNumber = %d", iNumber); NET_DVR_ClearSurface_Card(); for (i = 0; i < MAXVIEWNUM; i ) { displaypara.bToScreen = 0; displaypara.bToVideoOut = 1; displaypara.nLeft = myoutput[i].m_display_para.nLeft; displaypara.nTop = myoutput[i].m_display_para.nTop; displaypara.nWidth = myoutput[i].m_display_para.nWidth; displaypara.nHeight = myoutput[i].m_display_para.nHeight; NET_DVR_ResetPara_Card(myoutput[i].m_iPlayhandle,&displaypara); } if (iNumber == 1) {//放大 displaypara.bToScreen = 1; displaypara.bToVideoOut = 1; displaypara.nLeft = myoutput[iPos].m_display_para.nLeft; displaypara.nTop = myoutput[iPos].m_display_para.nTop; displaypara.nWidth = myoutput[iPos].m_display_para.nWidth; displaypara.nHeight = myoutput[iPos].m_display_para.nHeight; NET_DVR_ResetPara_Card(myoutput[iPos].m_iPlayhandle,&displaypara); } else {//缩小 for (i = 0; i < iNumber; i ) { displaypara.bToScreen = 1; displaypara.bToVideoOut = 1; displaypara.nLeft = myoutput[i].m_display_para.nLeft; displaypara.nTop = myoutput[i].m_display_para.nTop; displaypara.nWidth = myoutput[i].m_display_para.nWidth; displaypara.nHeight = myoutput[i].m_display_para.nHeight; NET_DVR_ResetPara_Card(myoutput[i].m_iPlayhandle,&displaypara); } } } } void CNewclientDlg::MoveCurWin(int iWindowNum,int iCurWinPos) { CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd(); int rectWidth = 0; int rectHeight = 0; int rectTop = 0; int rectLeft = 0; switch (iWindowNum) { case 1: rectWidth = 706; rectHeight = 578; rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT; break; case 4: rectWidth = 354; rectHeight = 290; switch (iCurWinPos) { case 0: case 1: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT iCurWinPos*rectWidth iCurWinPos*3; break; case 2: case 3: rectTop = MYVIEW_TOP rectHeight 2; rectLeft = MYVIEW_LEFT (iCurWinPos-2)*rectWidth (iCurWinPos-2)*3; break; default: break; } break; case 9: rectWidth = 234; rectHeight = 192; switch (iCurWinPos) { case 0: case 1: case 2: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT iCurWinPos*rectWidth iCurWinPos*3; break; case 3: case 4: case 5: rectTop = MYVIEW_TOP rectHeight 2; rectLeft = MYVIEW_LEFT (iCurWinPos-3)*rectWidth (iCurWinPos-3)*3; break; case 6: case 7: case 8: rectTop = MYVIEW_TOP 2*rectHeight 4; rectLeft = MYVIEW_LEFT (iCurWinPos-6)*rectWidth (iCurWinPos-6)*3; break; default: break; } break; case 16: rectWidth = 178; rectHeight = 146; switch (iCurWinPos) { case 0: case 1: case 2: case 3: rectTop = MYVIEW_TOP; rectLeft = MYVIEW_LEFT iCurWinPos*rectWidth iCurWinPos*3; break; case 4: case 5: case 6: case 7: rectTop = MYVIEW_TOP rectHeight 2; rectLeft = MYVIEW_LEFT (iCurWinPos-4)*rectWidth (iCurWinPos-4)*3; break; case 8: case 9: case 10: case 11: rectTop = MYVIEW_TOP 2*rectHeight 4; rectLeft = MYVIEW_LEFT (iCurWinPos-8)*rectWidth (iCurWinPos-8)*3; break; case 12: case 13: case 14: case 15: rectTop = MYVIEW_TOP 3*rectHeight 6; rectLeft = MYVIEW_LEFT (iCurWinPos-12)*rectWidth (iCurWinPos-12)*3; break; default: break; } break; default: break; } mycurwin.m_black.ShowWindow(SW_HIDE); mycurwin.MoveWindow(rectLeft-1,rectTop-1,rectWidth 2,rectHeight 2); mycurwin.m_black.ShowWindow(SW_SHOW); mycurwin.EnableWindow(FALSE); } void CNewclientDlg::InitLed() { int i; m_pCapLed[0] = &m_CapLed1; m_pCapLed[1] = &m_CapLed2; m_pCapLed[2] = &m_CapLed3; m_pCapLed[3] = &m_CapLed4; m_pCapLed[4] = &m_CapLed5; m_pCapLed[5] = &m_CapLed6; m_pCapLed[6] = &m_CapLed7; m_pCapLed[7] = &m_CapLed8; m_pCapLed[8] = &m_CapLed9; m_pCapLed[9] = &m_CapLed10; m_pCapLed[10] = &m_CapLed11; m_pCapLed[11] = &m_CapLed12; m_pCapLed[12] = &m_CapLed13; m_pCapLed[13] = &m_CapLed14; m_pCapLed[14] = &m_CapLed15; m_pCapLed[15] = &m_CapLed16; for (i = 0; i < MAXVIEWNUM; i ) { m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } m_pAlarmLed[0] = &m_AlarmLed1; m_pAlarmLed[1] = &m_AlarmLed2; m_pAlarmLed[2] = &m_AlarmLed3; m_pAlarmLed[3] = &m_AlarmLed4; m_pAlarmLed[4] = &m_AlarmLed5; m_pAlarmLed[5] = &m_AlarmLed6; m_pAlarmLed[6] = &m_AlarmLed7; m_pAlarmLed[7] = &m_AlarmLed8; m_pAlarmLed[8] = &m_AlarmLed9; m_pAlarmLed[9] = &m_AlarmLed10; m_pAlarmLed[10] = &m_AlarmLed11; m_pAlarmLed[11] = &m_AlarmLed12; m_pAlarmLed[12] = &m_AlarmLed13; m_pAlarmLed[13] = &m_AlarmLed14; m_pAlarmLed[14] = &m_AlarmLed15; m_pAlarmLed[15] = &m_AlarmLed16; for (i = 0; i < MAXVIEWNUM; i ) { m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } } void CNewclientDlg::F_InitDecodeCard() { int nDispNum = 0; TRACE("初始化解码卡"); int iRet = NET_DVR_InitDDraw_Card(this->m_hWnd,0xff00ff); iRet=NET_DVR_InitDevice_Card(&channelcount); TRACE("ChannelCount = %d", channelcount); if (channelcount <= 0) { AfxMessageBox("请插入解码卡!"); return; } else if (channelcount > 16) { channelcount = 16; } if(ClientParam.m_bNTSC) { nDispNum = GetDisplayChannelCount(); if (nDispNum >= 2) { REGION_PARAM param[MAX_DISPLAY_REGION]; int i; memset(param, 0, sizeof(param)); for (i=0; i<MAX_DISPLAY_REGION; i ) param[i].color = RGB(i, i*8, i*16); for (i=0; i<nDispNum/2; i ) { SetDisplayStandard(2*i,StandardNTSC); param[0].left=0; param[0].top=0; param[0].width=320; param[0].height=240; param[1].left=320; param[1].top=0; param[1].width=320; param[1].height=240; param[2].left=0; param[2].top=240; param[2].width=320; param[2].height=240; param[3].left=320; param[3].top=240; param[3].width=320; param[3].height=240; if (SetDisplayRegion(2*i, 4, param, 0) != HWERR_SUCCESS) { TRACE("SetDisplayRegion failed!"); } SetDecoderVideoExtOutput(4*i, 0, 1, 2*i, 0, 0); SetDecoderVideoExtOutput(4*i 1, 0, 1, 2*i, 1, 0); SetDecoderVideoExtOutput(4*i 2, 0, 1, 2*i, 2, 0); SetDecoderVideoExtOutput(4*i 3, 0, 1, 2*i, 3, 0); SetDisplayStandard(2*i 1,StandardNTSC); param[0].left=0; param[0].top=0; param[0].width=704; param[0].height=480; if (SetDisplayRegion(2*i 1, 1, param, 0) != HWERR_SUCCESS) { TRACE("SetDisplayRegion failed!"); } SetDecoderVideoExtOutput(4*i, 1, 1, 2*i 1, 0, 0); } } } else { nDispNum = GetDisplayChannelCount(); if (nDispNum >= 2) { REGION_PARAM param[MAX_DISPLAY_REGION]; int i; memset(param, 0, sizeof(param)); for (i=0; i<MAX_DISPLAY_REGION; i ) param[i].color = RGB(i, i*8, i*16); for (i=0; i<nDispNum/2; i ) { SetDisplayStandard(2*i,StandardPAL); param[0].left=0; param[0].top=0; param[0].width=352; param[0].height=288; param[1].left=352; param[1].top=0; param[1].width=352; param[1].height=288; param[2].left=0; param[2].top=288; param[2].width=352; param[2].height=288; param[3].left=352; param[3].top=288; param[3].width=352; param[3].height=288; if (SetDisplayRegion(2*i, 4, param, 0) != HWERR_SUCCESS) { TRACE("SetDisplayRegion failed!"); } SetDecoderVideoExtOutput(4*i, 0, 1, 2*i, 0, 0); SetDecoderVideoExtOutput(4*i 1, 0, 1, 2*i, 1, 0); SetDecoderVideoExtOutput(4*i 2, 0, 1, 2*i, 2, 0); SetDecoderVideoExtOutput(4*i 3, 0, 1, 2*i, 3, 0); SetDisplayStandard(2*i 1,StandardPAL); param[0].left=0; param[0].top=0; param[0].width=704; param[0].height=576; if (SetDisplayRegion(2*i 1, 1, param, 0) != HWERR_SUCCESS) { TRACE("SetDisplayRegion failed!"); } SetDecoderVideoExtOutput(4*i, 1, 1, 2*i 1, 0, 0); } } } if (channelcount==1) { WINDOWNUM=1; m_windownum.SetCurSel(0); } else if (channelcount<=4) { WINDOWNUM=4; m_windownum.SetCurSel(1); } else if (channelcount<=9) { WINDOWNUM = 9; m_windownum.SetCurSel(2); } else { m_windownum.SetCurSel(3); WINDOWNUM = 16; } } void CNewclientDlg::OnAudioexchange() { // TODO: Add your control notification handler code here if (lVoiceIndex == -1) { CVoiceExchange VoiceDlg; VoiceDlg.DoModal(); if (lVoiceIndex != -1) { GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("停止对讲"); } } else { if (NET_DVR_StopVoiceCom(lVoiceIndex)) { GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲"); lVoiceIndex = -1; } else { AfxMessageBox("停止语音对讲失败!"); } } } void CNewclientDlg::OnSystemcfg() { // TODO: Add your control notification handler code here CSystemConfig SysCfgDlg; SysCfgDlg.DoModal(); if (nUseCard == 1) { channelcount = 0; F_InitDecodeCard(); ArrayWindow(0,WINDOWNUM); MoveCurWin(WINDOWNUM,0); nUseCard = 0; } if (nUseCard == 2) { NET_DVR_ReleaseDevice_Card(); NET_DVR_ReleaseDDraw_Card(); nUseCard = 0; } if (ClientParam.m_bCheckServerTime) { if (checkservertimer == 0) { TRACE("启动硬盘录像机校时时钟,校时时间是每天的%06d", ClientParam.m_iCheckServerTime); checkservertimer = SetTimer(CHECKSERVER_TIMER, 1000, NULL); } } else { if (checkservertimer) { // TRACE("关闭硬盘录像机校时时钟"); KillTimer(CHECKSERVER_TIMER); checkservertimer = 0; } } F_JudgeDiskFull(); } void CNewclientDlg::OnSelchangeCombowndnum() { // TODO: Add your control notification handler code here int i; WORD wndnum; i = m_windownum.GetCurSel(); switch (i) { case 0: wndnum = 1; break; case 1: wndnum = 4; break; case 2: wndnum = 9; break; case 3: wndnum = 16; break; default: break; } if (WINDOWNUM != wndnum) { WINDOWNUM = wndnum; if (ClientParam.m_bCycling) { AfxMessageBox("请停止循环播放!"); return; } /* if (ClientParam.m_bPlaying) { TRACE("Stop Play"); F_StopPlay(); OnVideonetplay(); } */ for (i = 0; i < MAXVIEWNUM; i ) { if (myoutput[i].m_iPlayhandle != -1) { // NET_DVR_RealPlayPause(myoutput[i].m_iPlayhandle); } } ArrayWindow(0, WINDOWNUM); MoveCurWin(WINDOWNUM,0); for (i = 0; i < WINDOWNUM; i ) { if (myoutput[i].m_iPlayhandle != -1) { // NET_DVR_RealPlayRestart(myoutput[i].m_iPlayhandle); } } } } void CNewclientDlg::F_StopPlay() { int i; if (cycletimer) { KillTimer(CYCLE_TIMER); cycletimer = 0; } if (!ClientParam.m_bUseCard) { if (!g_bShareSound) NET_DVR_CloseSound(); } for (i = 0; i < MAXVIEWNUM; i ) { if (myoutput[i].m_bFileSave) F_StopClientRecord(i); if (g_bShareSound) NET_DVR_CloseSoundShare(myoutput[i].m_iPlayhandle); myoutput[i].StopNet(); } GetDlgItem(IDC_PLAY)->SetWindowText("预览"); numberpos = 0; if ( (ClientParam.m_bEnlarged) || (ClientParam.m_bFullScreen) ) { ArrayWindow(0, WINDOWNUM); MoveCurWin(WINDOWNUM,0); } ClientParam.m_bPlaying = FALSE; ClientParam.m_bCycling = FALSE; ClientParam.m_bPaused = FALSE; ClientParam.m_bNextPage = FALSE; ClientParam.m_bFrontPage = FALSE; GetDlgItem(IDC_COMBOWNDNUM)->EnableWindow(TRUE); } void CNewclientDlg::OnVideonetplay() { // TODO: Add your control notification handler code here int itemp,i; UpdateData(TRUE); if (iSurveillanceNumber == 0) return; if (ClientParam.m_bPlaying) { TRACE("Stop Play"); F_StopPlay(); return; } GetDlgItem(IDC_COMBOWNDNUM)->EnableWindow(FALSE); ClientParam.m_bPlaying = TRUE; if (iSurveillanceNumber < WINDOWNUM) itemp = iSurveillanceNumber; else itemp = WINDOWNUM; for (i=0;i<itemp;i ) { myoutput[i].m_lIndex = i; nCnt = i; if (ClientParam.m_bUseCard) myoutput[i].StartCard(&selipinfo[i]); else { TRACE("start play %s m_lServerId = %d", selipinfo[i].m_csIP, selipinfo[i].m_lServerID); myoutput[i].StartNet(&selipinfo[i]); if (g_bShareSound && (myoutput[i].m_iPlayhandle >= 0)) { ClientParam.m_bPlaySound[i] = TRUE; } } Sleep(100); } if (iSurveillanceNumber <= WINDOWNUM) { numberpos = iSurveillanceNumber; } else { numberpos = WINDOWNUM; if (ClientParam.m_bCyclePlay) //循环播放 { if (cycletimer == 0) { cycletimer = SetTimer(CYCLE_TIMER,ClientParam.m_iCycleTime*1000,NULL); } ClientParam.m_bCycling = TRUE; m_bChangePage = TRUE; ClientParam.m_bPaused = FALSE; } else { ClientParam.m_bNextPage = TRUE; ClientParam.m_bFrontPage = FALSE; } } // m_windownum.EnableWindow(FALSE); GetDlgItem(IDC_PLAY)->SetWindowText("停止"); UpdateData(FALSE); } void CNewclientDlg::F_FullScreen() { GetWindowPlacement(&m_OldWndPlacement); CRect WindowRect, ClientRect, FullScreenRect; int FullWidth, FullHeight; GetWindowRect(&WindowRect); RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect); ClientToScreen(&ClientRect); //获取屏幕的分辨率; FullWidth = GetSystemMetrics(SM_CXSCREEN); FullHeight = GetSystemMetrics(SM_CYSCREEN); //将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, 将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的 客户区位置间的差值, 就得到全屏显示的窗口位置; FullScreenRect.left = WindowRect.left-ClientRect.left; FullScreenRect.top = WindowRect.top-ClientRect.top; FullScreenRect.right = WindowRect.right-ClientRect.right FullWidth; FullScreenRect.bottom = WindowRect.bottom-ClientRect.bottom FullHeight; //进入全屏显示状态 ; WINDOWPLACEMENT wndpl; wndpl.length = sizeof(WINDOWPLACEMENT); wndpl.flags = 0; wndpl.showCmd = SW_SHOWNORMAL; wndpl.rcNormalPosition = FullScreenRect; SetWindowPlacement(&wndpl); for (int i = 0; i < WINDOWNUM; i ) myoutput[i].ShowWindow(SW_HIDE); F_ShowHide(FALSE); mycurwin.ShowWindow(SW_HIDE); i = iActiveWndNumber; if (ClientParam.m_bUseCard) { NET_DVR_DISPLAY_PARA displaypara; displaypara.bToVideoOut = 1; displaypara.bToScreen = 1; displaypara.nLeft = 0; displaypara.nTop = 0; displaypara.nWidth = 1024; displaypara.nHeight = 768; NET_DVR_ResetPara_Card(myoutput[i].m_iPlayhandle,&displaypara); } } void CNewclientDlg::F_EndFullScreen() { SetWindowPlacement(&m_OldWndPlacement); F_ShowHide(TRUE); mycurwin.ShowWindow(SW_SHOW); } void CNewclientDlg::F_ShowHide(BOOL bShow) { if (bShow) { //云台 GetDlgItem(IDC_BUTTONUP)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONLEFT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONRIGHT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONDOWN)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONTJLEFT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONTJRIGHT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONJJLEFT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONJJRIGHT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONGQLEFT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONGQRIGHT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_YZD)->ShowWindow(SW_SHOW); GetDlgItem(IDC_BUTTONYZW)->ShowWindow(SW_SHOW); //预览 GetDlgItem(IDC_PLAY)->ShowWindow(SW_SHOW); //系统设置 GetDlgItem(IDC_SYSTEMCFG)->ShowWindow(SW_SHOW); //抓图 GetDlgItem(IDC_GETPICTURE)->ShowWindow(SW_SHOW); //录像 GetDlgItem(IDC_RECORD)->ShowWindow(SW_SHOW); //时间日志 GetDlgItem(IDC_EVENTLIST)->ShowWindow(SW_SHOW); //布防,撤防 GetDlgItem(IDC_BUTTONALARMSET)->ShowWindow(SW_SHOW); //语音对讲 GetDlgItem(IDC_AUDIOEXCHANGE)->ShowWindow(SW_SHOW); //回放 GetDlgItem(IDC_VIDEOFILEPLAY)->ShowWindow(SW_SHOW); //亮度 GetDlgItem(IDC_SLIDERLD)->ShowWindow(SW_SHOW); //对比度 GetDlgItem(IDC_SLIDERDBD)->ShowWindow(SW_SHOW); //饱和度 GetDlgItem(IDC_SLIDERBHD)->ShowWindow(SW_SHOW); //色度 GetDlgItem(IDC_SLIDERSD)->ShowWindow(SW_SHOW); //音量 GetDlgItem(IDC_SLIDERYL)->ShowWindow(SW_SHOW); //恢复默认值 GetDlgItem(IDC_BUTTONPOLL)->ShowWindow(SW_SHOW); //退出系统 GetDlgItem(IDC_EXIT)->ShowWindow(SW_SHOW); //窗口画面数 GetDlgItem(IDC_COMBOWNDNUM)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED1)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED2)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED3)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED4)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED5)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED6)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED7)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED8)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED9)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED10)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED11)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED12)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED13)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED14)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED15)->ShowWindow(SW_SHOW); GetDlgItem(IDC_LED16)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED1)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED2)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED3)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED4)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED5)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED6)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED7)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED8)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED9)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED10)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED11)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED12)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED13)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED14)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED15)->ShowWindow(SW_SHOW); GetDlgItem(IDC_ALARMLED16)->ShowWindow(SW_SHOW); //2006-01-11 GetDlgItem(IDC_STATIC0)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC3)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC4)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC5)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC6)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC7)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC8)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC9)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC10)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC11)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC12)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC13)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC14)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC15)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC16)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC17)->ShowWindow(SW_SHOW); } else { //云台 GetDlgItem(IDC_BUTTONUP)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONLEFT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONRIGHT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONDOWN)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONTJLEFT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONTJRIGHT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONJJLEFT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONJJRIGHT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONGQLEFT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONGQRIGHT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_YZD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_BUTTONYZW)->ShowWindow(SW_HIDE); //预览 GetDlgItem(IDC_PLAY)->ShowWindow(SW_HIDE); //系统设置 GetDlgItem(IDC_SYSTEMCFG)->ShowWindow(SW_HIDE); //抓图 GetDlgItem(IDC_GETPICTURE)->ShowWindow(SW_HIDE); //录像 GetDlgItem(IDC_RECORD)->ShowWindow(SW_HIDE); //时间日志 GetDlgItem(IDC_EVENTLIST)->ShowWindow(SW_HIDE); //布防,撤防 GetDlgItem(IDC_BUTTONALARMSET)->ShowWindow(SW_HIDE); //语音对讲 GetDlgItem(IDC_AUDIOEXCHANGE)->ShowWindow(SW_HIDE); //回放 GetDlgItem(IDC_VIDEOFILEPLAY)->ShowWindow(SW_HIDE); //亮度 GetDlgItem(IDC_SLIDERLD)->ShowWindow(SW_HIDE); //对比度 GetDlgItem(IDC_SLIDERDBD)->ShowWindow(SW_HIDE); //饱和度 GetDlgItem(IDC_SLIDERBHD)->ShowWindow(SW_HIDE); //色度 GetDlgItem(IDC_SLIDERSD)->ShowWindow(SW_HIDE); //音量 GetDlgItem(IDC_SLIDERYL)->ShowWindow(SW_HIDE); //恢复默认值 GetDlgItem(IDC_BUTTONPOLL)->ShowWindow(SW_HIDE); //退出系统 GetDlgItem(IDC_EXIT)->ShowWindow(SW_HIDE); //窗口画面数 GetDlgItem(IDC_COMBOWNDNUM)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED1)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED2)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED3)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED4)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED5)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED6)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED7)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED8)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED9)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED10)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED11)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED12)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED13)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED14)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED15)->ShowWindow(SW_HIDE); GetDlgItem(IDC_LED16)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED1)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED2)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED3)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED4)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED5)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED6)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED7)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED8)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED9)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED10)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED11)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED12)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED13)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED14)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED15)->ShowWindow(SW_HIDE); GetDlgItem(IDC_ALARMLED16)->ShowWindow(SW_HIDE); //2006-01-11 GetDlgItem(IDC_STATIC0)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC5)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC6)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC7)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC8)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC9)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC10)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC11)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC12)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC13)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC14)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC15)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC16)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC17)->ShowWindow(SW_HIDE); } } void CNewclientDlg::F_ShowVideoParams() { m_ld.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness); m_sd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iHue); m_bhd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation); m_dbd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast); m_yl.SetPos(ClientParam.m_Volume); } void CNewclientDlg::F_NextPage() { int itemp,i; itemp = numberpos % WINDOWNUM; if ((itemp > 0) || (numberpos == iSurveillanceNumber))//只有当numberpos是WINDOWNUM的整数倍时才有可能按next return; for (i = 0; i < MAXVIEWNUM; i ) { if ( (myoutput[i].m_iPlayhandle >= 0) || (myoutput[i].m_bFileSave) ) F_StopClientRecord(i); } if ( (ClientParam.m_bEnlarged) || (ClientParam.m_bFullScreen) ) { ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数; MoveCurWin(WINDOWNUM,0); ClientParam.m_bEnlarged = FALSE; ClientParam.m_bFullScreen = FALSE; } itemp = iSurveillanceNumber - numberpos; if (itemp > WINDOWNUM) itemp = WINDOWNUM; if (!ClientParam.m_bUseCard) { if (!g_bShareSound) NET_DVR_CloseSound(); } for (i=0;i<WINDOWNUM;i ) { if (g_bShareSound) NET_DVR_CloseSoundShare(myoutput[i].m_iPlayhandle); myoutput[i].StopNet(); } for (i=0;i<itemp;i ) { if (i numberpos < MAXNUMBER) { myoutput[i].m_lIndex = i; if (ClientParam.m_bUseCard) myoutput[i].StartCard(&selipinfo[i numberpos]); else { myoutput[i].StartNet(&selipinfo[i numberpos]); if (g_bShareSound && (myoutput[i].m_iPlayhandle >= 0)) { ClientParam.m_bPlaySound[i] = TRUE; } } Sleep(100); } } itemp = iSurveillanceNumber - numberpos; if (itemp <= WINDOWNUM) { numberpos = iSurveillanceNumber; ClientParam.m_bNextPage = FALSE; } else { numberpos = WINDOWNUM; } ClientParam.m_bFrontPage = TRUE; UpdateData(FALSE); } void CNewclientDlg::F_FrontPage() { int itemp,i; if (numberpos <= WINDOWNUM) return; for (i = 0; i < MAXVIEWNUM; i ) { if ( (myoutput[i].m_iPlayhandle >= 0) || (myoutput[i].m_bFileSave) ) F_StopClientRecord(i); } if ( (ClientParam.m_bEnlarged) || (ClientParam.m_bFullScreen) ) { ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数; MoveCurWin(WINDOWNUM,0); ClientParam.m_bEnlarged = FALSE; ClientParam.m_bFullScreen = FALSE; } if (numberpos > WINDOWNUM) { if (numberpos < 2*WINDOWNUM) { itemp = 0; } else { i = numberpos % WINDOWNUM; if (i == 0) itemp = numberpos - 2*WINDOWNUM ; else itemp = numberpos - WINDOWNUM -i; } if (!ClientParam.m_bUseCard) { if (!g_bShareSound) NET_DVR_CloseSound(); } //itemp:确定上一页要播放监控点的起始编号; for (i=0;i<WINDOWNUM;i ) { if (g_bShareSound) NET_DVR_CloseSoundShare(myoutput[i].m_iPlayhandle); myoutput[i].StopNet(); } for (i=0;i<WINDOWNUM;i ) { if (itemp i < MAXNUMBER) { myoutput[i].m_lIndex = i; if (ClientParam.m_bUseCard) myoutput[i].StartCard(&selipinfo[i itemp]); else { myoutput[i].StartNet(&selipinfo[i itemp]); if (g_bShareSound && (myoutput[i].m_iPlayhandle >= 0)) { ClientParam.m_bPlaySound[i] = TRUE; } } Sleep(100); } } if (numberpos <= 2*WINDOWNUM) { numberpos = WINDOWNUM; ClientParam.m_bFrontPage = FALSE; //没有上一页 } else { i = numberpos % WINDOWNUM; if (i == 0) numberpos -= WINDOWNUM; else numberpos -= i; } } ClientParam.m_bNextPage = TRUE; UpdateData(FALSE); } void CNewclientDlg::F_CyclePause() { if (!ClientParam.m_bPaused) { ClientParam.m_bPaused = TRUE; if (cycletimer) { KillTimer(CYCLE_TIMER); cycletimer = 0; } } else { m_bChangePage = TRUE; F_CyclePlay(); if (cycletimer == 0) cycletimer = SetTimer(CYCLE_TIMER,ClientParam.m_iCycleTime*1000,NULL); ClientParam.m_bPaused = FALSE; } } void CNewclientDlg::F_CyclePlay() { int itemp,i,j; TRACE("F_CyclePlay"); if (iSurveillanceNumber <= WINDOWNUM) return; m_bChangePage = FALSE; if ( (ClientParam.m_bEnlarged) || (ClientParam.m_bFullScreen) ) { if (ClientParam.m_bFullScreen) { F_EndFullScreen(); } ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数; MoveCurWin(WINDOWNUM,0); ClientParam.m_bEnlarged = FALSE; ClientParam.m_bFullScreen = FALSE; } if (iSurveillanceNumber == numberpos) //循环已到了最后一页,又开始第一页; itemp = WINDOWNUM; else { itemp = iSurveillanceNumber - numberpos; if (itemp > WINDOWNUM) itemp = WINDOWNUM; } if (iSurveillanceNumber == numberpos) j = 0; else j = numberpos; if (!ClientParam.m_bUseCard) { if (!g_bShareSound) NET_DVR_CloseSound(); } //如果一个循环结束,可能不是从9->9,或许是9->i,所以需要对对(9-i)做ClientStop //循环到最后一个画面,要播放的窗口数可能小于WINDOWNUM,所以在播放最后一个画面时,关闭多余的播放窗口; for (i=0;i<WINDOWNUM;i ) { // TRACE("cycle stopplay %d", myoutput[i].m_iPlayhandle); if (g_bShareSound) NET_DVR_CloseSoundShare(myoutput[i].m_iPlayhandle); myoutput[i].StopNet(); // TRACE("StopNet"); } for (i=0;i<itemp;i ) { if (i j < MAXNUMBER) { // TRACE("play sel = %d", i j); myoutput[i].m_lIndex = i; if (ClientParam.m_bUseCard) myoutput[i].StartCard(&selipinfo[i j]); else { myoutput[i].StartNet(&selipinfo[i j]); if (g_bShareSound && (myoutput[i].m_iPlayhandle >= 0)) { ClientParam.m_bPlaySound[i] = TRUE; } } Sleep(100); // TRACE("cycle startplay %d", myoutput[i].m_iPlayhandle); } } // MyInvalidate(); itemp = iSurveillanceNumber - numberpos; if (itemp ==0) { numberpos = WINDOWNUM; } else if (itemp <= WINDOWNUM) { numberpos = iSurveillanceNumber; } else { numberpos = WINDOWNUM; } m_bChangePage = TRUE; UpdateData(FALSE); } void CNewclientDlg::OnGetpicture() { // TODO: Add your control notification handler code here int i; char cFilename[256]; CString sTemp; i = iActiveWndNumber; CTime time = CTime::GetCurrentTime(); if (myoutput[i].m_iPlayhandle >= 0) { sTemp.Format("%s\\", ClientParam.m_csPictureSavePath); if (GetFileAttributes(sTemp) != FILE_ATTRIBUTE_DIRECTORY) { CreateDirectory(sTemp, NULL); } sprintf(cFilename, "%s\\Picture_%s_%02d_%4d%02d%02d_%02d%02d%02d_%d.bmp", ClientParam.m_csPictureSavePath, myoutput[i].m_csIP, myoutput[i].m_iChannel, \ time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond(), GetTickCount()); TRACE("Picture save file name : %s", cFilename); if (ClientParam.m_bUseCard) { //2005-12-08 add if(NET_DVR_CapturePicture_Card(myoutput[i].m_iPlayhandle, cFilename)) { CString sTemp; sTemp.Format("Capture picture succeed %s!",cFilename); AfxMessageBox(sTemp); return; } else { AfxMessageBox("Failed to capture picture!"); } } else { if (NET_DVR_CapturePicture(myoutput[i].m_iPlayhandle, cFilename)) { CString sTemp; sTemp.Format("抓图成功 %s!",cFilename); AfxMessageBox(sTemp); return; } else { AfxMessageBox("抓图失败!"); } } } } void CNewclientDlg::OnRecord() { // TODO: Add your control notification handler code here int i; if (ClientParam.m_bAutoRecord) return; i = iActiveWndNumber; if ( (myoutput[i].m_iPlayhandle >= 0) && (!myoutput[i].m_bFileSave) ) { //AfxMessageBox("111"); if (F_MakeDir()) F_StartClientRecord(i); } else if (myoutput[i].m_bFileSave) F_StopClientRecord(i); } BOOL CNewclientDlg::F_MakeDir() { CString sTemp; DWORD dirattr; CTime time; time = CTime::GetCurrentTime(); sTemp.Format("%c:\\mpeg4record\\", m_cCurrentRecordDriver); dirattr = GetFileAttributes(sTemp); if (dirattr == FILE_ATTRIBUTE_DIRECTORY) { sTemp.Format("%c:\\mpeg4record\\%4d-%02d-%02d\\", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay()); dirattr=GetFileAttributes(sTemp); if (dirattr == FILE_ATTRIBUTE_DIRECTORY) { ClientParam.m_csClientRecordPath.Format("%s",sTemp); TRACE("已经创建了目录%s", sTemp); return TRUE; } else { if (!CreateDirectory(sTemp, NULL)) { AfxMessageBox("创建年月日目录失败!"); return FALSE; } else { ClientParam.m_csClientRecordPath.Format("%s",sTemp); TRACE("在已有的目录%c:\\mpeg4record下创建子目录%4d-%02d-%02d", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay()); return TRUE; } } } if (!CreateDirectory(sTemp, NULL)) { TRACE("创建mpeg4record目录失败!"); return FALSE; } sTemp.Format("%c:\\mpeg4record\\%4d-%02d-%02d\\",m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay()); if (!CreateDirectory(sTemp, NULL)) { return FALSE; } ClientParam.m_csClientRecordPath.Format("%s",sTemp); TRACE("先创建%c:\\mpeg4record目录,再创建子目录%4d-%02d-%02d", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay()); return TRUE; } void CNewclientDlg::F_StartClientRecord(int iRecordWndIndex) { int i; char cFilename[256]; i = iRecordWndIndex; TRACE("Start myoutput[%d] Client Record", i); CTime time = CTime::GetCurrentTime(); sprintf(cFilename, "%s%s_%02d_%4d%02d%02d_%02d%02d%02d.mp4", ClientParam.m_csClientRecordPath, myoutput[i].m_csIP, myoutput[i].m_iChannel, \ time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond() ); if (!NET_DVR_SaveRealData(myoutput[i].m_iPlayhandle, cFilename)) { AfxMessageBox("录像失败!"); return; } TRACE("Client Record Filename = %s", cFilename); myoutput[i].m_lChangeFileNameTime = time.GetTime() ClientParam.m_iRecordFileInterval * 60; myoutput[i].m_bFileSave = TRUE; m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_ON,CLed::LED_ROUND); } void CNewclientDlg::F_StopClientRecord(int iRecordWndIndex) { int i; i = iRecordWndIndex; TRACE("Stop myoutput[%d] Client Record", i); NET_DVR_StopSaveRealData(myoutput[i].m_iPlayhandle); myoutput[i].m_bFileSave = FALSE; m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } /* void CNewclientDlg::OnHide() { // TODO: Add your control notification handler code here ShowWindow(SW_MINIMIZE); } */ void CNewclientDlg::OnEventlist() { // TODO: Add your control notification handler code here int i; CEventLog EventLogDlg; EventLogDlg.DoModal(); SetEvent(hVideoBeeper); for (i = 0; i < MAXVIEWNUM; i ) { if (ClientParam.m_iAlarmHandle[i] >= 0) { m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_ON,CLed::LED_ROUND); } else m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } for (i = 0; i < MAXALARMIN; i ) { alarminfo[i].m_csIP.Format(_T("")); alarminfo[i].m_csUsername.Format(_T("")); alarminfo[i].m_csPassword.Format(_T("")); alarminfo[i].m_iChannel = -1; alarminfo[i].m_iAlarmLevel = -1; alarminfo[i].m_iAlarmType = -1; alarminfo[i].m_iPortIndex = -1; alarminfo[i].m_wServerPort = 8000; } m_iAlarmNumber = 0; } void CNewclientDlg::OnButtonalarmset() { // TODO: Add your control notification handler code here int i; CSetAlarm SetAlarmDlg; SetAlarmDlg.DoModal(); if (SetAlarmDlg.m_bOK) { for (i = 0; i < MAXVIEWNUM; i ) { if (ClientParam.m_iAlarmHandle[i] >= 0) { m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_ON,CLed::LED_ROUND); } else { m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); } } } } void CNewclientDlg::OnVideofileplay() { // TODO: Add your control notification handler code here CPlayBack PlayBackDlg; PlayBackDlg.DoModal(); } BOOL CNewclientDlg::F_JudgeDiskFull() { int i; ULARGE_INTEGER FreeSpace,CallerSpace,TotalSpace; CString csRootPath; for (i = ClientParam.m_iStartRecordDriver; i < ClientParam.m_iEndRecordDriver 1; i ) { csRootPath.Format("%c%s",m_cHardDriver[i],":\\"); //从录像起始驱动器开始 GetDiskFreeSpaceEx(csRootPath,&CallerSpace,&TotalSpace,&FreeSpace); if (CallerSpace.QuadPart > MINSPACE) { m_cCurrentRecordDriver = m_cHardDriver[i]; // TRACE("m_cCurrentRecordDriver = %c:\\", m_cCurrentRecordDriver); ClientParam.m_bAllDiskFull = FALSE; return TRUE; } } ClientParam.m_bAllDiskFull = TRUE; return FALSE; } void CNewclientDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default // time_t lCurrentTime; CString csRootPath; CString csTemp; int i,j; CTime time1 = CTime::GetCurrentTime(); int iWeekday = time1.GetDayOfWeek() - 1; WORD iNowTime = time1.GetHour() * 100 time1.GetMinute(); NET_DVR_TIME CurTime; CurTime.dwYear = time1.GetYear(); CurTime.dwMonth = time1.GetMonth(); CurTime.dwDay = time1.GetDay(); CurTime.dwHour = time1.GetHour(); CurTime.dwMinute = time1.GetMinute(); CurTime.dwSecond = time1.GetSecond(); i = j = 0; switch (nIDEvent) { case CYCLE_TIMER: if (m_bChangePage) F_CyclePlay(); break; case FREESPACE_TIMER: csRootPath.Format("%c:\\", m_cCurrentRecordDriver); ULARGE_INTEGER FreeSpace,CallerSpace,TotalSpace; GetDiskFreeSpaceEx(csRootPath,&CallerSpace,&TotalSpace,&FreeSpace); ClientParam.m_bAllDiskFull = FALSE; if (CallerSpace.QuadPart < MINSPACE) { csTemp.Format("%4d-%02d-%02d %02d:%02d:%02d 硬盘驱动器%c已满", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond, m_cCurrentRecordDriver); TRACE(csTemp); //AfxMessageBox(csTemp); if (!F_JudgeDiskFull()) //所有硬盘都满,删除8个最早的录像文件 { if (ClientParam.m_bCycleRecord) F_DeleteClientRecordFile(); else { for (i = 0; i < MAXVIEWNUM; i ) { if ( (myoutput[i].m_iPlayhandle >= 0) && (myoutput[i].m_bFileSave) ) F_StopClientRecord(i); } AfxMessageBox("客户端录像硬盘驱动器已满,无法继续录像!"); return; } } else { //其他分区还有空间,存放到其他分区 //AfxMessageBox("222"); if (F_MakeDir()) { TRACE("客户端录像文件存放到%c分区", m_cCurrentRecordDriver); for (i = 0; i < MAXVIEWNUM; i ) { if ( (myoutput[i].m_iPlayhandle >= 0) && (myoutput[i].m_bFileSave) ) F_ChangeRecordFileName(i); } } } } break; case FILEINTERVAL_TIMER: #if 0 char csServerIP[16]; char cUserName[100]; char cPassword[100]; LONG lUserID; NET_DVR_COMPRESSIONCFG m_compressioncfg; NET_DVR_RECORD m_record; NET_DVR_PICCFG m_piccfg; NET_DVR_DEVICEINFO DeviceInfo; strcpy(csServerIP, serverinfo[i].m_csServerIP); strncpy(cUserName, serverinfo[i].m_csServerAdminName, MAX_NAMELEN); strncpy(cPassword, serverinfo[i].m_csServerAdminPasswd, PASSWD_LEN); lUserID = NET_DVR_Login(csServerIP, serverinfo[i].m_wServerPort, cUserName, cPassword, &DeviceInfo); if (lUserID < 0) { CString sTemp; int nErr = NET_DVR_GetLastError(); if (nErr == NET_DVR_PASSWORD_ERROR) { sTemp.Format("!!!!!!!!!!%s 用户名密码错误! ", csServerIP); TRACE(sTemp); //AfxMessageBox(sTemp); } else { sTemp.Format("!!!!!!!!!!%s 由于网络原因或DVR忙, 注册失败, nErr[%d]! ", csServerIP, nErr); TRACE(sTemp); //AfxMessageBox(sTemp); } } DWORD dwReturned; if (!NET_DVR_GetDVRConfig(serverinfo[i].m_lServerID, NET_DVR_GET_PICCFG, 1,&m_piccfg, sizeof(NET_DVR_PICCFG), &dwReturned)) { CString sTemp; sTemp.Format("%d : NET_DVR_GET_PICCFG = %d \n", 1, NET_DVR_GetLastError()); TRACE(sTemp); } if (!NET_DVR_GetDVRConfig(serverinfo[i].m_lServerID,NET_DVR_GET_COMPRESSCFG, 1,&m_compressioncfg, sizeof(NET_DVR_COMPRESSIONCFG), &dwReturned)) { CString sTemp; sTemp.Format("%d : ERROR: NET_DVR_GET_COMPRESSCFG = %d \n", 1, NET_DVR_GetLastError()); TRACE(sTemp); } if (!NET_DVR_GetDVRConfig(serverinfo[i].m_lServerID,NET_DVR_GET_RECORDCFG, 1,&m_record, sizeof(NET_DVR_RECORD), &dwReturned)) { CString sTemp; sTemp.Format("%d : ERROR: NET_DVR_GET_RECORDCFG = %d \n", 1, NET_DVR_GetLastError()); TRACE(sTemp); } if (lUserID >= 0) { if(!NET_DVR_Logout(lUserID)) TRACE("%s[ID: %d] 注销失败! ", csServerIP, lUserID); } #endif ////////////////////// /* NET_DVR_ALARMOUTSTATUS AlarmOutState; if (NET_DVR_GetAlarmOut(serverinfo[0].m_lServerID,&AlarmOutState)) { TRACE("AlarmOut [%d][%d][%d][%d]", AlarmOutState.Output[0], AlarmOutState.Output[1], AlarmOutState.Output[2], AlarmOutState.Output[3]); if (AlarmOutState.Output[0] == 0) ; //NET_DVR_SetAlarmOut(serverinfo[0].m_lServerID, 0, 1); } */ ////////////////////// for (i = 0; i < MAXVIEWNUM; i ) { if ( (myoutput[i].m_iPlayhandle >= 0) && (myoutput[i].m_bFileSave) ) { if (time1.GetTime() - myoutput[i].m_lChangeFileNameTime >= 0) { TRACE("更改客户端录象文件名时间到"); if (F_MakeDir()) F_ChangeRecordFileName(i); } } } break; case AUTORECORD_TIMER: if (ClientParam.m_bCycling) return; //循环播放客户端不允许录像 if (!ClientParam.m_bAutoRecord) return; for (i = 0; i < 4; i ) { if ( (iNowTime >= ClientParam.m_ClientRecordTime[iWeekday][i].m_iStartTime) && (iNowTime < ClientParam.m_ClientRecordTime[iWeekday][i].m_iStopTime) ) { //自动录像时间到 for (j = 0; j < MAXVIEWNUM; j ) { if (myoutput[j].m_iPlayhandle >= 0) { if (!myoutput[j].m_bFileSave) { if (ClientParam.m_bAllDiskFull) { TRACE("自动录像时间到,但硬盘满暂不录像"); return; //如果客户端硬盘满就不录像 } //AfxMessageBox("444"); if (F_MakeDir()) { TRACE("%02d:%02d myoutput[%d]开始自动录像", CurTime.dwHour, CurTime.dwMinute, j); F_StartClientRecord(j); } } } } break; } else i ; } if (i == 4) { for (j = 0; j < MAXVIEWNUM; j ) { if (myoutput[j].m_bFileSave) { TRACE("%02d:%02d 停止自动录像的时间到,停止myoutput[%d]自动录像", CurTime.dwHour, CurTime.dwMinute, j); F_StopClientRecord(j); } } } break; case CHECKSERVER_TIMER: if (ClientParam.m_iCheckServerTime == (LONG)(CurTime.dwHour*10000 CurTime.dwMinute*100 CurTime.dwSecond) ) { for (i = 0; i < MAXIPNUMBER; i ) { if (serverinfo[i].m_csServerName != "") { if (NET_DVR_SetDVRConfig(serverinfo[i].m_lServerID, NET_DVR_SET_TIMECFG,0,&CurTime, sizeof(NET_DVR_TIME))) { TRACE("%4d年%02d月%02d日%02d时%02d分%02d秒进行硬盘录像机校时成功.", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond); } else { TRACE("%4d年%02d月%02d日%02d时%02d分%02d秒进行硬盘录像机校时失败.", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond); } } } } break; default: break; } CDialog::OnTimer(nIDEvent); } void CNewclientDlg::F_DeleteClientRecordFile() { CFileFind fdfile,fdfilemp4; BOOL bFinded,bfilefind; CString sDeleteDir,sTempDelete; CString sDir; CString sDate; CString sFileName; CTime time,temptime; int i,deletenum = 0; sDeleteDir.Format("0000-00-00"); sTempDelete.Format("3000-00-00"); time=CTime::GetCurrentTime(); for (i = ClientParam.m_iStartRecordDriver; i < (ClientParam.m_iEndRecordDriver 1); i ) { sDir.Format("%c:\\mpeg4record\\*.*",m_cHardDriver[i]); bFinded=fdfile.FindFile(sDir); while (bFinded) { bFinded=fdfile.FindNextFile(); if (fdfile.IsDots()) { continue; } if (fdfile.IsDirectory()) { if (fdfile.GetFileName()==_T("download")) { continue; } if (fdfile.GetFileName()==_T("alarm")) { continue; } sFileName.Format("%c:\\mpeg4record\\%s\\*.mp4",m_cHardDriver[i],fdfile.GetFileName()); bfilefind=fdfilemp4.FindFile(sFileName); if (!bfilefind) { RemoveDirectory(fdfile.GetFilePath()); TRACE("删除目录:%s",fdfile.GetFilePath()); } while (bfilefind) { bfilefind=fdfilemp4.FindNextFile(); if (fdfile.IsDots()) { continue; } fdfilemp4.GetCreationTime(temptime); if (temptime<time) { time=temptime; sTempDelete.Format("%s",fdfilemp4.GetFilePath()); } } } } } sFileName.Format("%s",sTempDelete); if (!DeleteFile(sFileName)) { sTempDelete.Format("删除文件%s失败",sFileName); F_AddEvent(sTempDelete); for (i = 0; i < MAXVIEWNUM; i ) { if ( (myoutput[i].m_iPlayhandle >= 0) || (myoutput[i].m_bFileSave) ) F_StopClientRecord(i); } AfxMessageBox("硬盘容量不足,自动删除文件失败,请清理硬盘后重新开始录像!"); } else { sTempDelete.Format("删除文件%s成功",sFileName); TRACE("删除文件%s",sFileName); deletenum ; } } void CNewclientDlg::F_ChangeRecordFileName(int iRecordWndIndex) { int i; char cFilename[256]; CTime time = CTime::GetCurrentTime(); i = iRecordWndIndex; if (myoutput[i].m_bFileSave) { TRACE("停止myoutput[%d]客户端录像,更换文件名", i); NET_DVR_StopSaveRealData(myoutput[i].m_iPlayhandle); } if (myoutput[i].m_iPlayhandle >= 0) { sprintf(cFilename, "%s%s_%02d_%4d%02d%02d_%02d%02d%02d.mp4", ClientParam.m_csClientRecordPath, myoutput[i].m_csIP, myoutput[i].m_iChannel, \ time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond() ); if (!NET_DVR_SaveRealData(myoutput[i].m_iPlayhandle, cFilename)) { AfxMessageBox("录像失败!"); m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND); return; } myoutput[i].m_lChangeFileNameTime = time.GetTime() ClientParam.m_iRecordFileInterval * 60; TRACE("Client Record Filename = %s", cFilename); myoutput[i].m_bFileSave = TRUE; m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_ON,CLed::LED_ROUND); } } void CNewclientDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handler code here and/or call default int i; WORD wTemp; WORD wVolumevalue; BOOL bRet; i = iActiveWndNumber; wTemp = (0xFFFF) / 100; bRet = FALSE; if (myoutput[i].m_iPlayhandle >= 0) { if (GetDlgItem(IDC_SLIDERLD) == pScrollBar) { ClientParam.m_VideoInfo[i].m_iBrightness = m_ld.GetPos(); bRet = TRUE; } else if (GetDlgItem(IDC_SLIDERDBD) == pScrollBar) { ClientParam.m_VideoInfo[i].m_iContrast = m_dbd.GetPos(); bRet = TRUE; } else if (GetDlgItem(IDC_SLIDERBHD) == pScrollBar) { ClientParam.m_VideoInfo[i].m_iSaturation = m_bhd.GetPos(); bRet = TRUE; } else if (GetDlgItem(IDC_SLIDERSD) == pScrollBar) { ClientParam.m_VideoInfo[i].m_iHue= m_sd.GetPos(); bRet = TRUE; } else if (GetDlgItem(IDC_SLIDERYL) == pScrollBar) { if (ClientParam.m_bPlaySound[i]) { TRACE("调整音频浏览声音."); ClientParam.m_Volume = m_yl.GetPos(); wVolumevalue = (WORD)(m_yl.GetPos()) * wTemp; if (g_bShareSound) { NET_DVR_OpenSoundShare(myoutput[iActiveWndNumber].m_iPlayhandle); } else { NET_DVR_OpenSound(myoutput[i].m_iPlayhandle); } NET_DVR_Volume(myoutput[i].m_iPlayhandle, wVolumevalue); } } if (bRet) { bRet = NET_DVR_ClientSetVideoEffect(myoutput[i].m_iPlayhandle, ClientParam.m_VideoInfo[i].m_iBrightness, ClientParam.m_VideoInfo[i].m_iContrast, ClientParam.m_VideoInfo[i].m_iSaturation, ClientParam.m_VideoInfo[i].m_iHue); //bRet = NET_DVR_SetVideoEffect(myoutput[i].m_lServerID, myoutput[i].m_iChannel,ClientParam.m_VideoInfo[i].m_iBrightness, ClientParam.m_VideoInfo[i].m_iContrast, // ClientParam.m_VideoInfo[i].m_iSaturation, ClientParam.m_VideoInfo[i].m_iHue); if (!bRet) { AfxMessageBox("设置视频参数失败!"); } } } if (GetDlgItem(IDC_SLIDERYL) == pScrollBar) { if (lVoiceIndex >= 0) { TRACE("调整语音对讲声音."); ClientParam.m_Volume = m_yl.GetPos(); wVolumevalue = (WORD)(m_yl.GetPos()) * wTemp; NET_DVR_SetVoiceComClientVolume(lVoiceIndex, wVolumevalue); } } CDialog::OnHScroll(nSBCode, nPos, pScrollBar); } void CNewclientDlg::OnButtonpoll() { // TODO: Add your control notification handler code here int i = iActiveWndNumber; WORD wTemp = (0xFFFF) / 100; WORD wVolumevalue; ClientParam.m_VideoInfo[i].m_iBrightness = DEFAULTBRIGHTNESS; ClientParam.m_VideoInfo[i].m_iContrast = DEFAULTCONTRAST; ClientParam.m_VideoInfo[i].m_iSaturation = DEFAULTSATURATION; ClientParam.m_VideoInfo[i].m_iHue = DEFAULTHUE; NET_DVR_ClientSetVideoEffect(myoutput[i].m_iPlayhandle, ClientParam.m_VideoInfo[i].m_iBrightness, ClientParam.m_VideoInfo[i].m_iContrast, ClientParam.m_VideoInfo[i].m_iSaturation, ClientParam.m_VideoInfo[i].m_iHue); //NET_DVR_SetVideoEffect(myoutput[i].m_lServerID, myoutput[i].m_iChannel,ClientParam.m_VideoInfo[i].m_iBrightness, ClientParam.m_VideoInfo[i].m_iContrast, // ClientParam.m_VideoInfo[i].m_iSaturation, ClientParam.m_VideoInfo[i].m_iHue); ClientParam.m_Volume = DEFAULTVOLUME; if (lVoiceIndex >= 0) { TRACE("调整语音对讲声音."); wVolumevalue = (WORD)(ClientParam.m_Volume) * 10 *wTemp; NET_DVR_SetVoiceComClientVolume(lVoiceIndex, wVolumevalue); } else if (ClientParam.m_bPlaySound) { TRACE("调整音频浏览声音."); wVolumevalue = (WORD)(ClientParam.m_Volume) * 10 * wTemp; if (g_bShareSound) { NET_DVR_OpenSoundShare(myoutput[iActiveWndNumber].m_iPlayhandle); } else { NET_DVR_OpenSound(myoutput[i].m_iPlayhandle); } NET_DVR_Volume(myoutput[i].m_iPlayhandle, wVolumevalue); } m_ld.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness); m_sd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iHue); m_bhd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation); m_dbd.SetPos(ClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast); m_yl.SetPos(ClientParam.m_Volume); } void CNewclientDlg::OnButtonyzw() { // TODO: Add your control notification handler code here UpdateData(TRUE); int i = iActiveWndNumber; if (myoutput[i].m_iPlayhandle >= 0) { NET_DVR_PTZPreset(myoutput[i].m_iPlayhandle, GOTO_PRESET, m_yzd); } } void CNewclientDlg::OnCancel() { // TODO: Add extra cleanup here // CDialog::OnCancel(); } void CNewclientDlg::OnOK() { // TODO: Add extra cleanup here // CDialog::OnOk(); } /* void CNewclientDlg::OnButauto() { // TODO: Add your control notification handler code here char buf[20]; buf[0] = 0xa0; buf[1] = 0x00; buf[2] = 0x00; buf[3] = 0x07; buf[4] = 0x00; buf[5] = 0x63; buf[6] = 0xaf; buf[7] = 0x6b; NET_DVR_TransPTZ_Other(myoutput[0].m_lServerID, 1, buf, 8); } */ /* void CNewclientDlg::OnButsharesound() { // TODO: Add your control notification handler code here if (g_bShareSound) { NET_DVR_SetAudioMode(1); g_bShareSound = FALSE; // GetDlgItem(IDC_BUTSHARESOUND)->SetWindowText("sound"); } else { NET_DVR_SetAudioMode(2); g_bShareSound = TRUE; // GetDlgItem(IDC_BUTSHARESOUND)->SetWindowText("sharesound"); } } */ void CNewclientDlg::OnSelchangeCombonetdelay() { // TODO: Add your control notification handler code here UpdateData(TRUE); g_nNetDelay = m_NetDelayCtrl.GetCurSel(); } void CNewclientDlg::OnButton1() { // TODO: Add your control notification handler code here UpdateData(TRUE); int i = iActiveWndNumber; if (!NET_DVR_MakeKeyFrame(myoutput[i].m_lServerID, myoutput[i].m_iChannel)) { AfxMessageBox("NET_DVR_MakeKeyFrame failed [%d]", NET_DVR_GetLastError()); } } void CNewclientDlg::OnButxh() { // TODO: Add your control notification handler code here int i; i = iActiveWndNumber; if ( (myoutput[i].m_iPlayhandle >= 0) && (!myoutput[i].m_bCruise) ) { NET_DVR_PTZCruise(myoutput[i].m_iPlayhandle, RUN_SEQ, 0, 0, 0); myoutput[i].m_bCruise = TRUE; GetDlgItem(IDC_BUTXH)->SetWindowText("停止巡航"); } else if (myoutput[i].m_bCruise) { NET_DVR_PTZCruise(myoutput[i].m_iPlayhandle, STOP_SEQ, 0, 0, 0); myoutput[i].m_bCruise = FALSE; GetDlgItem(IDC_BUTXH)->SetWindowText("巡航"); } } void CNewclientDlg::OnButjpegpic() { // TODO: Add your control notification handler code here int i; char cFilename[256]; CString sTemp; NET_DVR_JPEGPARA JpegPara; i = iActiveWndNumber; JpegPara.wPicQuality = 0; JpegPara.wPicSize = 0; CTime time = CTime::GetCurrentTime(); if (myoutput[i].m_iPlayhandle >= 0) { sTemp.Format("%s\\", ClientParam.m_csPictureSavePath); if (GetFileAttributes(sTemp) != FILE_ATTRIBUTE_DIRECTORY) { CreateDirectory(sTemp, NULL); } sprintf(cFilename, "%s\\JPEG_%s_%02d_%4d%02d%02d_%02d%02d%02d_%d.jpg", ClientParam.m_csPictureSavePath, myoutput[i].m_csIP, myoutput[i].m_iChannel, \ time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond(), GetTickCount()); TRACE("Picture save file name : %s", cFilename); if (!ClientParam.m_bUseCard) { if (NET_DVR_CaptureJPEGPicture(myoutput[i].m_lServerID, myoutput[i].m_iChannel, &JpegPara, cFilename)) { CString sTemp; sTemp.Format("JPEG抓图成功 %s!",cFilename); AfxMessageBox(sTemp); return; } else { AfxMessageBox("JPEG抓图失败!"); } } } } void CNewclientDlg::OnMove(int x, int y) { CDialog::OnMove(x, y); Invalidate(TRUE); if (ClientParam.m_bUseCard) NET_DVR_RefreshSurface_Card(); UpdateWindow(); // TODO: Add your message handler code here }