xuxiuxi
2017-05-11 109ffe9a777658936a38d0c146579a67c60a0d17
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)
   {
      //解除警报
      NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,0);
      //if (time(NULL) - last_alarmout >= 2)
      //{
         //解除警报
         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