From e813367bf6300da58cb5347d61d8b3ec7cf6cf38 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期五, 31 三月 2017 10:01:41 +0800
Subject: [PATCH] bugfix

---
 ProxyConsole/proxyconsole-hc.cpp |   93 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 84 insertions(+), 9 deletions(-)

diff --git a/ProxyConsole/proxyconsole-hc.cpp b/ProxyConsole/proxyconsole-hc.cpp
index b21a9de..b29f2b0 100644
--- a/ProxyConsole/proxyconsole-hc.cpp
+++ b/ProxyConsole/proxyconsole-hc.cpp
@@ -54,6 +54,7 @@
 	ET_HCNET_DECODER_POPWIN, // 3
 	ET_HCNET_DECODER_LOGO, // 4
 	ET_HCNET_DECODER_ALARMOUT, // 5
+	ET_HCNET_DECODER_LOGO_ALARMOUT, // 6
 	ET_HCNET_DECODER__LAST,
 	ET__LAST
 };
@@ -300,7 +301,7 @@
 	printf("hcnetsdk_ExceptionCallBack: %d\n", int(dwType));
 }
 
-int hcnetsdk_alarm_alarmout(LONG lUserID, const HCNetCameraConfig& camConfig)
+int hcnetsdk_alarm_alarmout(LONG lUserID, const HCNetCameraConfig& camConfig, bool isDisalarm)
 {
 	//鎶ヨ鏃堕棿娈�
 	NET_DVR_SCHEDTIME net_dvr_schedtime = {0};
@@ -321,17 +322,28 @@
 	}
 		
 	//寮�鍚鎶�
-	if(NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,1) == FALSE){
-		printf("NET_DVR_SetAlarmOut failed, err: %d\n", NET_DVR_GetLastError());
-	}
+	//if(NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,1) == FALSE){
+	//	printf("NET_DVR_SetAlarmOut failed, err: %d\n", NET_DVR_GetLastError());
+	//}
 	last_alarmout = time(NULL);
 	
-	sleep(3);
+	//sleep(2);
 	
-	if (time(NULL) - last_alarmout >= 3)
+	if (isDisalarm)
 	{
-		//瑙i櫎璀︽姤
-		NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,0);
+		//if (time(NULL) - last_alarmout >= 2)
+		//{
+			//瑙i櫎璀︽姤
+			NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,0);
+		//}
+	}
+	else
+	{
+		//寮�鍚鎶�
+		if(NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,1) == FALSE){
+			printf("NET_DVR_SetAlarmOut failed, err: %d\n", NET_DVR_GetLastError());
+		}
+		last_alarmout = time(NULL);
 	}
 }
 
@@ -597,6 +609,67 @@
 	//net_dvr_win_logo_cfg.byEnable = 0;
 	//NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize);
 }
+
+
+int hcnetsdk_alarm_logo_alarmout(LONG lUserID, const HCNetCameraConfig& _camConfig, const std::string& ip, int channel, bool disalarm)
+{
+	HCNetCameraConfig camConfig(_camConfig);
+	//if (camConfig.channel != channel)
+	//{
+	//	camConfig.channel = -1;
+	//	sockinfo* equipConfig = hcnetsdk_find_equip(ip, channel);
+	//	if (equipConfig != NULL)
+	//		camConfig = *(HCNetCameraConfig*)(equipConfig->user_config);
+	//}
+	
+	printf("hcnetsdk_alarm_logo, channel=%d, matchc=%d\n", channel, camConfig.channel);
+	
+	if (camConfig.channel < 0)
+		return -1;
+	
+	//绐楀彛閰嶇疆淇℃伅
+	NET_DVR_WIN_LOGO_CFG net_dvr_win_logo_cfg;
+	net_dvr_win_logo_cfg.dwLogoNo = 1;
+	net_dvr_win_logo_cfg.byEnable = (disalarm ? 0 : 1);//0:hidden,1:visible
+	net_dvr_win_logo_cfg.byRes1[3] =0;
+	net_dvr_win_logo_cfg.dwCoordinateX = 5;
+	net_dvr_win_logo_cfg.dwCoordinateY =5;
+	net_dvr_win_logo_cfg.byFlash = 1;
+	net_dvr_win_logo_cfg.byTranslucent = 0;
+	net_dvr_win_logo_cfg.byRes2[34] = 0;
+
+	net_dvr_win_logo_cfg.dwSize = sizeof(net_dvr_win_logo_cfg);
+	//璁剧疆绐楀彛杈撳嚭logo
+	int byWallNo=1,dwSubWinNo=2,dwWinNo=1;
+	
+	for (int i= 0; i < camConfig.dwWinNo.size(); i++)
+	{
+		DWORD dwDecChanNum=(camConfig.byWallNo << 24) | (camConfig.dwSubWinNo << 16) | camConfig.dwWinNo[i];
+		if(!NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize))
+		{
+			printf("NET_DVR_SetDVRConfig2 error, err: %d\n", NET_DVR_GetLastError());
+			//return -1;
+		}
+		else
+		{
+			printf("NET_DVR_SetDVRConfig2 done.\n");
+			//return 0;
+		}
+	}
+	
+	//if (!disalarm)
+	//{
+		//int hcnetsdk_alarm_alarmout(LONG lUserID, const HCNetCameraConfig& camConfig)
+		hcnetsdk_alarm_alarmout(lUserID, camConfig, disalarm);
+	//}
+	
+	return 0;
+	
+	//sleep(3);
+	//net_dvr_win_logo_cfg.byEnable = 0;
+	//NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize);
+}
+
 
 int main(int argc,char **argv)
 {
@@ -868,9 +941,11 @@
 				{
 					std::cout << "......alarm begin k=" << k << std::endl;
 					if (equipConfig.m_type == ET_HCNET_DECODER_ALARMOUT && !isDisalarm)
-						hcnetsdk_alarm_alarmout(lUserData, *camConfig);
+						hcnetsdk_alarm_alarmout(lUserData, *camConfig, isDisalarm);
 					else if (equipConfig.m_type == ET_HCNET_DECODER_LOGO)
 						hcnetsdk_alarm_logo(lUserData, *camConfig, ip, channel, isDisalarm);
+					else if (equipConfig.m_type == ET_HCNET_DECODER_LOGO_ALARMOUT)
+						hcnetsdk_alarm_logo_alarmout(lUserData, *camConfig, ip, channel, isDisalarm);
 					std::cout << "......alarm end k=" << k << std::endl;
 				}
 				else

--
Gitblit v1.8.0