报警记录

Navigation:  C++ > 报警管理接口 >

报警记录

Previous pageReturn to chapter overviewNext page

 

《报警记录》的主要接口包括:

am_acknowledge_alarm

am_query_snapshots

am_register_alarm_record_info

am_unregister_alarm_record_info

am_query_tag_records

am_query_tags_all_records

am_query_group_records

am_comment_alarms

 

 

alarm record

copycode!MISSING PHRASE 'COPYCODE'!

 

//*Alarm Record Function

 

#include "hdKingAPI.h"

#include "error_code.h"

#include "data_types.h"

#include "hd3Struct.h"

#include "hd3Enum.h"

#include "hd3MaskDefine.h"

#include <stdio.h>

#include <string.h>

#include <windows.h>

 

void alarm_rec_callback(enum HD3_AM_CHANGE nChange, const HD3AlarmRecord* pRecord)

{

 printf("a alarm occur\n");

}

 

 

int32 main()

{

 int32 nRet = RD_SUCCESS;

 HD3Connection conn;

 HD3PtTagProp normalTag;

 HD3AlarmTagProp alarmTag;        

 int32 nRecNum = 3;

 const int32 ALARM_TAG_NUM = 3;

 uint32 nAlarmTagIDs[ALARM_TAG_NUM];

 HD3AlarmQuery queryCond;

 HD3Record snapshot;

 HD3HANDLE hIter = NULL;

 HD3AlarmRecord alarmRecord;

 HD3AlarmRecord snAlarms[ALARM_TAG_NUM];

 int32 nErrorCodes[ALARM_TAG_NUM];

 HD3Time alarmTimes[ALARM_TAG_NUM];

 int32 i = 0;

 HD3Mask mask;

 uint32 nPtTagID = 0;

 

 strcpy(conn.szAddress, "127.0.0.1");

 conn.nPort = 5673;

 conn.nTimeout = 3;

 nRet = nt3_connect(&conn);

 if (nRet != RD_SUCCESS)

 {

         return -1;

 }

 

 //login

 nRet = sc3_login("admin", "admin");

 if (nRet != RD_SUCCESS)

 {

         printf("login failed, error code[%d]!\n", nRet);

         return -1;

 }

 printf("login successful!\n");

 

 // add normal tag

 strcpy(normalTag.szTagName, "szNormalTag");

 normalTag.nTagType = HD3_TAG_TYPE_INT32;

 mask.nCommMask = HD3M_COMM_PROP_TAG_NAME | HD3M_COMM_PROP_TAG_TYPE;

 mask.nExtMask = 0;

 nRet = pt3_add_tag(&normalTag, &mask, "", &normalTag.nTagID);

 if (nRet != RD_SUCCESS)

 {

         printf("add tag[%s] failed, error code [%d]!\n", normalTag.szTagName, nRet);

         nt3_disconnect();

         return -1;

 }

 printf("add tag[%s] successful!\n", normalTag.szTagName);

 

 //add alarm tag

 strcpy(alarmTag.szSourceTagName, normalTag.szTagName);

 strcpy(alarmTag.szTest1, "GT(34)");

 strcpy(alarmTag.szAction1, "1_hihi_ack");

 strcpy(alarmTag.szTest2, "LT(34)");

 strcpy(alarmTag.szAction2, "2_lolo_unack");

 alarmTag.nAutoAck = HD3_AM_ACK_TYPE_MANUAL;

 

 for (i = 0; i < ALARM_TAG_NUM; i ++)

 {

         sprintf(alarmTag.szTagName, "alarmTag_%d", i);

         mask.nCommMask = HD3M_COMM_PROP_TAG_NAME;

         mask.nExtMask = HD3M_AM_EXT_PROP_SOURCE_TAG | HD3M_AM_EXT_PROP_TEST1

                 | HD3M_AM_EXT_PROP_ACTION1 | HD3M_AM_EXT_PROP_TEST2

                 | HD3M_AM_EXT_PROP_ACTION2 | HD3M_AM_EXT_PROP_AUTOACK;

 

         nRet = am3_add_tag(&alarmTag, &mask, "", nAlarmTagIDs + i );

         if (nRet != RD_SUCCESS)

         {

                 printf("add alarm tag[%s] failed, error code [%d]!\n", alarmTag.szTagName, nRet);

                 nt3_disconnect();

                 return -1;

         }

         printf("add alarm tag[%s] successful!\n", alarmTag.szTagName);

 }

 

 Sleep(30000);

 

 //register alarm callback

 nRet = am3_register_alarm_record_info(alarm_rec_callback);

 if (nRet != RD_SUCCESS)

 {

         printf("register alarm call back failed, error code [%d]!\n", nRet);

         nt3_disconnect();

         return -1;

 }

 printf("register alarm call back successful!\n");

 

 //save snapshots generate alarms

 for (i = 0; i < nRecNum; i++)

 {

         snapshot.nSec = i + 1;

         snapshot.nMsec = 0;

         snapshot.nQuality = 192;

 

         if (0 == i % 2)

         {

                 snapshot.value.nInt32 = 0;

         }

         else

         {

                 snapshot.value.nInt32 = 66;

         }

 

         nRet = sn3_save_snapshot(normalTag.nTagID, &snapshot);

         if (nRet != RD_SUCCESS)

         {

                 printf("save snapshot failed, error code [%d]!\n", nRet);

                 nt3_disconnect();

                 return -1;

         }

         printf("save snapshot successful!\n");

 }

 

 Sleep(3000);

 

 //query alarm snapshot

 nRet = am3_query_snapshots(ALARM_TAG_NUM, nAlarmTagIDs,

         HD3M_ALL, snAlarms, nErrorCodes);

 if (RD_SUCCESS == nRet)

 {

         printf("query alarm snapshots successful!\n");

 }

 else if (EC_HD_API_AM_QUERY_SNAPSHOTS_FAILED == nRet)

 {

         for (i = 0; i < ALARM_TAG_NUM; i ++)

         {

                 if (nErrorCodes[i] != RD_SUCCESS)

                 {

                         printf("query alarm tag[%d] snapshot failed, error code [%d]!\n", nAlarmTagIDs[i], nErrorCodes[i]);

                 }

         }

 }

 else

 {

         printf("query alarm snapshots failed, error code[%d]!\n", nRet);

         nt3_disconnect();

         return -1;

 }

 

 //ack alarms

 for (i = 0; i < nRecNum; i++)

 {

         alarmTimes[i].nSec = snAlarms[i].tvStartTime.nSec;

         alarmTimes[i].nMsec = snAlarms[i].tvStartTime.nMsec;

 }

 

 nRet = am3_acknowledge_alarms(ALARM_TAG_NUM, nAlarmTagIDs, alarmTimes, nErrorCodes);

 if (nRet != RD_SUCCESS)

 {

         printf("acknowledge alarms failed, error code [%d]!\n", nRet);

         nt3_disconnect();

         return -1;

 }

 printf("acknowledge alarms successful!\n");

 

 //comment alarms

 nRet = am3_comment_alarms(ALARM_TAG_NUM, nAlarmTagIDs, alarmTimes, "this is a comment", nErrorCodes);

 if (nRet != RD_SUCCESS)

 {

         printf("comment alarms failed, error code [%d]!\n", nRet);

         nt3_disconnect();

         return -1;

 }

 printf("comment alarms successful!\n");

 

 //query tag alarm records

 queryCond.tvStart.nSec = 1;

 queryCond.tvStart.nMsec = 0;

 

 queryCond.tvEnd.nMsec =0;

 queryCond.tvEnd.nSec =100;

 

 queryCond.nAckMask = HD3M_ALL;

 queryCond.nPriorMask = HD3M_ALL;

 queryCond.nTypeMask = HD3M_ALL;

 queryCond.nRestoreMask = HD3M_ALL;

 

 nRet = am3_query_tag_records(nAlarmTagIDs[0], &queryCond, HD3M_ALL, &hIter);

 while (true)

 {

         nRet = ut3_get_item_step(hIter, &alarmRecord);

         if (RD_SUCCESS == nRet)

         {

                 printf("query alarm successful, alarm tag id [%d] start time[%d:%d]\n", alarmRecord.nAlarmTagID,

                         alarmRecord.tvStartTime.nSec, alarmRecord.tvStartTime.nMsec);

         }

         else if (EC_HD_API_QUERY_END == nRet)

         {

                 printf("query tags records complete\n");

                 nRet = RD_SUCCESS;

                 break;

         }

         else

         {

                 printf("query tags all records failed, error code [%d]\n", nRet);

         }

 }

 ut3_free_handle(hIter);

 

 //query tags all alarm records include am snapshots

 nRet = am3_query_tags_all_records(ALARM_TAG_NUM, nAlarmTagIDs, &queryCond,

         HD3M_ALL, &hIter);

 

 while (true)

 {

         nRet = ut3_get_item_step(hIter, &alarmRecord);

         if (RD_SUCCESS == nRet)

         {

                 printf("query alarm successful, alarm tag id [%d] start time[%d:%d]\n", alarmRecord.nAlarmTagID,

                         alarmRecord.tvStartTime.nSec, alarmRecord.tvStartTime.nMsec);

         }

         else if (EC_HD_API_QUERY_END == nRet)

         {

                 printf("query tags all records complete\n");

                 nRet = RD_SUCCESS;

                 break;

         }

         else

         {

                 printf("query tags all records failed, error code [%d]\n", nRet);

         }

 }

 ut3_free_handle(hIter);

 

 //query group alarm records

 nRet = am3_query_group_records(0, &queryCond, HD3M_ALL, &hIter);

 while (true)

 {

         nRet = ut3_get_item_step(hIter, &alarmRecord);

         if (RD_SUCCESS == nRet)

         {

                 printf("query alarm successful, alarm tag id [%d] start time[%d:%d]\n", alarmRecord.nAlarmTagID,

                         alarmRecord.tvStartTime.nSec, alarmRecord.tvStartTime.nMsec);

         }

         else if (EC_HD_API_QUERY_END == nRet)

         {

                 printf("query group all records complete\n");

                 nRet = RD_SUCCESS;

                 break;

         }

         else

         {

                 printf("query group records failed, error code [%d]\n", nRet);

         }

 }

 ut3_free_handle(hIter);

 

 //unregister alarm callback

 nRet = am3_unregister_alarm_record_info();

 if (nRet != RD_SUCCESS)

 {

         printf("unregister alarm call back failed, error code [%d]!\n", nRet);

         nt3_disconnect();

         return -1;

 }

 printf("unregister alarm call back successful!\n");

 

 //disconnect

 nt3_disconnect();

 

 return 0;

}

 

//*/

 

 

 

©2015. All Rights Reserved.