To regularly control the access permissions for managing the accessible time duration (by default, it is 24 hours) of some important access control points, you can configure the week or holiday schedules.
Make sure you have called NET_DVR_Init to initialize the development environment.
Make sure you have called NET_DVR_Login_V40 to log in to device.
#include <stdio.h> #include <iostream> #include <afx.h> #include "Windows.h" #include "HCNetSDK.h" using namespace std; void main() { //--------------------------------------- //Initialize NET_DVR_Init(); //Set connection timeout and reconnection function NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); //--------------------------------------- //Log in to device LONG lUserID; //Login parameters, including device IP address, user name, password, and so on NET_DVR_USER_LOGIN_INFO struLoginInfo = {0}; struLoginInfo.bUseAsynLogin = 0; //Synchronous login mode strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //Device IP address struLoginInfo.wPort = 8000; //Device service port number strcpy(struLoginInfo.sUserName, "admin"); //User name strcpy(struLoginInfo.sPassword, "abcd1234"); //Password //Device information, output parameter NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0}; lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40); if (lUserID < 0) { printf("Login failed, error code: %d\n", NET_DVR_GetLastError()); NET_DVR_Cleanup(); return; } //--------------------------------------- //Set access permission schedule template, when issuing card, link to this template CString m_csTemplateName = "Access permission schedule template 1"; NET_DVR_PLAN_TEMPLATE struPlanTem = {0}; struPlanTem.dwSize = sizeof(struPlanTem); struPlanTem.byEnable = 1;//Enable or not: 0-No, 1-Yes strncpy((char *)struPlanTem.byTemplateName, (LPCTSTR)m_csTemplateName, TEMPLATE_NAME_LEN); struPlanTem.dwWeekPlanNo = 1;//Week schedule No.1 struPlanTem.dwHolidayGroupNo[0] = 1;//Holiday group No.1, up to 16 holiday groups can be linked to each schedule //struPlanTem.dwHolidayGroupNo[1] = 2;//Holiday group No.2 BOOL bRet1 = NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE, 1, \ &struPlanTem, sizeof(struPlanTem)); if (!bRet1) { printf("Setting access permission schedule template failed, error:%d.\n", NET_DVR_GetLastError()); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; } //Set week schedule 1 for access permission NET_DVR_WEEK_PLAN_CFG struWeekPlan = {0}; struWeekPlan.dwSize = sizeof(struWeekPlan); struWeekPlan.byEnable = 1;//Enable week schedule NET_DVR_SINGLE_PLAN_SEGMENT struSinglePlanSegment = {0}; LPNET_DVR_SINGLE_PLAN_SEGMENT lpPlanSegment = &struSinglePlanSegment; struSinglePlanSegment.byEnable = 1; struSinglePlanSegment.struTimeSegment.struBeginTime.byHour = 0;//Start time struSinglePlanSegment.struTimeSegment.struBeginTime.byMinute = 0; struSinglePlanSegment.struTimeSegment.struBeginTime.bySecond = 0; struSinglePlanSegment.struTimeSegment.struEndTime.byHour = 23;//End time struSinglePlanSegment.struTimeSegment.struEndTime.byMinute = 59; struSinglePlanSegment.struTimeSegment.struEndTime.bySecond = 59; /*Up to 8 time periods can be set for each day. Here only takes setting one period for each day*/ for (int iDate = 0; iDate<MAX_DAYS; iDate++) { memcpy(&struWeekPlan.struPlanCfg[iDate][0], lpPlanSegment, sizeof(struSinglePlanSegment)); } BOOL bRet2 = NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_CARD_RIGHT_WEEK_PLAN, 1, \ &struWeekPlan, sizeof(struWeekPlan)); if (!bRet2) { printf("Setting week schedule for access permission failed, error:%d.\n", NET_DVR_GetLastError()); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; } //Set holiday group for access permission CString m_csGroupName = "access permission holiday group 1"; NET_DVR_HOLIDAY_GROUP_CFG struHolidayGroup1 = {0}; struHolidayGroup1.dwSize = sizeof(struHolidayGroup1); struHolidayGroup1.byEnable = 1; strncpy((char *)struHolidayGroup1.byGroupName, (LPCTSTR)m_csGroupName, HOLIDAY_GROUP_NAME_LEN); struHolidayGroup1.dwHolidayPlanNo[0] = 1;//Holiday group 1 links to holiday schedule 1, //up to 16 holiday schedules can be linked to one holiday group BOOL bRet3 = NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP, 1, \ &struHolidayGroup1, sizeof(struHolidayGroup1)); if (!bRet3) { printf("设Setting holiday group for access permission failed, error:%d.\n", NET_DVR_GetLastError()); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; } //Set holiday schedule for access permission NET_DVR_HOLIDAY_PLAN_CFG struHolidayPlan = {0}; struHolidayPlan.dwSize = sizeof(struHolidayPlan); struHolidayPlan.byEnable = 1; struHolidayPlan.struBeginDate.wYear = 2017;//Holiday start date struHolidayPlan.struBeginDate.byMonth = 10; struHolidayPlan.struBeginDate.byDay = 1; struHolidayPlan.struEndDate.wYear = 2017;//Holiday end date struHolidayPlan.struEndDate.byMonth = 10; struHolidayPlan.struEndDate.byDay = 7; //Copy the week schedule parameters to holiday schedule of access permission memcpy(struHolidayPlan.struPlanCfg, struWeekPlan.struPlanCfg, sizeof(NET_DVR_SINGLE_PLAN_SEGMENT)*MAX_DAYS*MAX_TIMESEGMENT_V30); BOOL bRet4 = NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN, 1, \ &struHolidayPlan, sizeof(struHolidayPlan)); if (!bRet4) { printf("Setting holiday schedule for access permission failed, error:%d.\n", NET_DVR_GetLastError()); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; } //--------------------------------------- //Exit Sleep(5000); //Log out NET_DVR_Logout(lUserID); //Release SDK resource NET_DVR_Cleanup(); return; }
Call NET_DVR_Logout and NET_DVR_Cleanup to log out and release the resource.