【Behavior Analysis】Receiving Behavior Analysis Alarm In Arming Mode

サンプルプログラム

//
// Device Network SDK (Behavior Analysis)
// Alarm and Event Receiving
// Configure Specific Behavior Analysis Alarms for Intelligent Device
// Sample Code of Receiving Behavior Analysis Alarm in Arming Mode
//
#include <iostream>
#include “Windows.h”
#include “HCNetSDK.h”

using namespace std;

//Macro definition of time resolution
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)

#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

BOOL CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //Behavior analysis alarm information
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));
            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);

struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //Save captured scene picture
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;
                char chTime[128];
                sprintf(chTime,”%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d”,struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay,
                struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);
                sprintf(cFilename, “VcaAlarmPic[%s][%s].jpg”,struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);
                hFile = CreateFile(cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;

}

WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;
            printf(“\n\n”);
            printf(“Behavior Analysis Alarm [0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n”, \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \

struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf(“Target Information: ID[%d]RECT[%f][%f][%f][%f]\n”,
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);
            break;
        }
        default:
        {
            printf(“Other alarms, alarm information type: 0x%x\n”, lCommand);
            break;
        }
    }
    return TRUE;
}

関連記事