《报警记录》的主要接口包括:
▪am_register_alarm_record_info
▪am_unregister_alarm_record_info
alarm record |
|
//*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; }
//*/
|