《内存快照接口》的主要内容包括:
▪sn3_save_tags_disorder_snapshots
▪sn3_register_value_change_callback
▪sn3_unregister_value_change_callback
snapshot |
|
///*Snapshot Function
#include "hdKingAPI.h" #include "error_code.h" #include "data_types.h" #include "hd3Struct.h" #include <stdio.h> #include <string.h> #include <Windows.h>
void sn_notify_callback(uint32 nTagID, const HD3Record* pRec) { printf("sn_notify_callback tagid = %d\n", nTagID); }
void sn_value_change_notify_callback(uint32 nTagID, const HD3Record* pRec) { printf("sn_notify_callback tagid = %d\n", nTagID); }
int32 main() { int32 nRet = RD_SUCCESS; HD3Connection conn; HD3PtTagProp tag; const char* szTagName_1 = "szTagName_1"; const char* szTagName_2 = "szTagName_2"; int32 nRecNum = 2; HD3Record snapshotsSaved[2]; uint32 nTagIDs[2]; int32 nErrorCodes[2]; HD3Record snapshotsQueried[2]; int32 i = 0;
//connect strcpy(conn.szAddress, "127.0.0.1"); conn.nPort = 5673; conn.nTimeout = 3; nRet = nt3_connect(&conn); if (nRet != RD_SUCCESS) { printf("connect to server failed, error code[%d]!\n", nRet); return -1; } printf("connect to server successful!\n");
//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 two tag , type is int32 and string strcpy(tag.szTagName, szTagName_1); tag.nTagType = HD3_TAG_TYPE_INT32; HD3Mask mask; mask.nCommMask = HD3M_COMM_PROP_TAG_NAME | HD3M_COMM_PROP_TAG_TYPE; mask.nExtMask = 0;
nRet = pt3_add_tag(&tag, &mask,"", &nTagIDs[0]); if (nRet != RD_SUCCESS) { printf("add tags[%s] failed, error code [%d]!\n", tag.szTagName, nRet); nt3_disconnect(); return -1; } printf("add tags[%s] successful!\n", tag.szTagName);
strcpy(tag.szTagName, szTagName_2); tag.nTagType = HD3_TAG_TYPE_STRING; mask.nCommMask = HD3M_COMM_PROP_TAG_NAME | HD3M_COMM_PROP_TAG_TYPE; mask.nExtMask = 0; nRet = pt3_add_tag(&tag, &mask, "", &nTagIDs[1]); if (nRet != RD_SUCCESS) { printf("add tags[%s] failed, error code [%d]!\n", tag.szTagName, nRet); nt3_disconnect(); return -1; } printf("add tags[%s] successful!\n", tag.szTagName);
//query tag ids nRet = tag3_query_id_by_name(szTagName_1, &nTagIDs[0]); if (nRet != RD_SUCCESS) { printf("query tag id failed, tag name[%s], error code[%d]!\n", szTagName_1, nRet); nt3_disconnect(); return -1; } printf("tag[%s] query tag id successful, tag id[%d]!\n", szTagName_1, nTagIDs[0]);
nRet = tag3_query_id_by_name(szTagName_2, &nTagIDs[1]); if (nRet != RD_SUCCESS) { printf("query tag id failed, tag name[%s], error code[%d]!\n", szTagName_2, nRet); nt3_disconnect(); return -1; } printf("tag[%s] query tag id successful, tag id[%d]!\n", szTagName_2, nTagIDs[1]);
nRet = sn3_register_callback(1, nTagIDs, sn_notify_callback); if (nRet != RD_SUCCESS) { printf("sn3_register_callback failed, tag id[%d], error code[%d]!\n", nTagIDs[0], nRet); nt3_disconnect(); return -1; } printf("tag[%d] sn3_register_callback successful\n", nTagIDs[0]);
nRet = sn3_register_value_change_callback(1, nTagIDs, sn_value_change_notify_callback); if (nRet != RD_SUCCESS) { printf("sn3_register_value_change_callback failed, tag id[%d], error code[%d]!\n", nTagIDs[0], nRet); nt3_disconnect(); return -1; } printf("tag[%d] sn3_register_value_change_callback successful\n", nTagIDs[0]);
Sleep(30000);
//save one snapshot snapshotsSaved[0].nSec = 3600; snapshotsSaved[0].nMsec = 0; snapshotsSaved[0].nQuality = 192; snapshotsSaved[0].nTagType = HD3_TAG_TYPE_INT32; snapshotsSaved[0].value.nInt32 = 111; nRet = sn3_save_snapshot(nTagIDs[0], &(snapshotsSaved[0])); if (nRet != RD_SUCCESS) { printf("save snapshot failed, tag id [%d], error code [%d]!\n", nTagIDs[0], nRet); nt3_disconnect(); return -1; } printf("save snapshot successful, tag id[%d]!\n", nTagIDs[0]);
//query one snapshot nRet = sn3_query_snapshot(nTagIDs[0], &(snapshotsQueried[0])); if (nRet != RD_SUCCESS) { printf("query snapshot failed, tag id [%d], error code [%d]!\n", nTagIDs[0], nRet); nt3_disconnect(); return -1; } printf("query snapshot successful, tag id[%d]!\n", nTagIDs[0]);
//save disorder snapshots snapshotsSaved[0].nSec = 3600 - 60; snapshotsSaved[0].nMsec = 0; snapshotsSaved[0].nQuality = 192; snapshotsSaved[0].nTagType = HD3_TAG_TYPE_INT32; snapshotsSaved[0].value.nInt32 = 111; snapshotsSaved[1].nSec = 3600 + 60; snapshotsSaved[1].nMsec = 0; snapshotsSaved[1].nQuality = 192; snapshotsSaved[1].nTagType = HD3_TAG_TYPE_INT32; snapshotsSaved[1].value.nInt32 = 222;
nRet = sn3_save_disorder_snapshots(nRecNum, nTagIDs[0], snapshotsSaved, &nErrorCodes[0]); if (nRet != RD_SUCCESS) { printf("save disorder snapshots failed, tag id [%d], error code [%d]!\n", nTagIDs[0], nRet); nt3_disconnect(); return -1; } printf("save disorder snapshots successful, tag id [%d]!\n", nTagIDs[0]);
// save snapshots for (i = 0; i < nRecNum; i ++) { snapshotsSaved[i].nSec = 7200; snapshotsSaved[i].nMsec = 0; snapshotsSaved[i].nQuality = 192; } snapshotsSaved[0].nTagType = HD3_TAG_TYPE_INT32; snapshotsSaved[0].value.nInt32 = 123; snapshotsSaved[1].nTagType = HD3_TAG_TYPE_STRING; snapshotsSaved[1].value.strBlob.pBuf = new char[HD3_LEN_VAR_TYPE_VALUE]; strcpy(snapshotsSaved[1].value.strBlob.pBuf, "this is a string"); snapshotsSaved[1].value.strBlob.nLenBuf = strlen(snapshotsSaved[1].value.strBlob.pBuf) + 1;
nRet = sn3_save_snapshots(nRecNum, nTagIDs, snapshotsSaved, nErrorCodes); if (RD_SUCCESS == nRet) { printf("save snapshots successful!\n"); } else if (EC_HD_API_SAVE_SNAPSHOTS_FAILED == nRet) { for (i = 0; i < nRecNum; i ++) { if (nErrorCodes[i] != RD_SUCCESS) { printf("tag[%d] save snapshot failed, error code [%d]!\n", nTagIDs[i], nErrorCodes[i]); } } } else { printf("save snapshots failed, error code[%d]!\n", nRet); nt3_disconnect(); for (i = 0; i < nRecNum; i ++) { if (HD3_TAG_TYPE_STRING == snapshotsSaved[i].nTagType||HD3_TAG_TYPE_BLOB == snapshotsSaved[i].nTagType) { delete[] snapshotsSaved[i].value.strBlob.pBuf; snapshotsSaved[i].value.strBlob.pBuf = NULL; } } return -1; } for (i = 0; i < nRecNum; i ++) { if (HD3_TAG_TYPE_STRING == snapshotsSaved[i].nTagType||HD3_TAG_TYPE_BLOB == snapshotsSaved[i].nTagType) { delete[] snapshotsSaved[i].value.strBlob.pBuf; snapshotsSaved[i].value.strBlob.pBuf = NULL; } }
//query sanpshots snapshotsQueried[0].nTagType = HD3_TAG_TYPE_INT32; snapshotsQueried[1].nTagType = HD3_TAG_TYPE_STRING; snapshotsQueried[1].value.strBlob.pBuf = new char[HD3_LEN_VAR_TYPE_VALUE]; snapshotsQueried[1].value.strBlob.nLenBuf = HD3_LEN_VAR_TYPE_VALUE; nRet = sn3_query_snapshots(nRecNum, nTagIDs, snapshotsQueried, nErrorCodes); if (RD_SUCCESS == nRet) { printf("query snapshots successful!\n"); } else if (EC_HD_API_SAVE_SNAPSHOTS_FAILED == nRet) { for (i = 0; i < nRecNum; i ++) { printf("tag[%d] query snapshot failed, error code [%d]!\n", nTagIDs[i], nErrorCodes[i]); } } else { printf("query snapshots failed, error code[%d]!\n", nRet); nt3_disconnect(); for (i = 0; i < nRecNum; i ++) { if (HD3_TAG_TYPE_STRING == snapshotsSaved[i].nTagType||HD3_TAG_TYPE_BLOB == snapshotsSaved[i].nTagType) { delete[] snapshotsQueried[i].value.strBlob.pBuf; snapshotsQueried[i].value.strBlob.pBuf = NULL; } } return -1; } for (i = 0; i < nRecNum; i ++) { if (HD3_TAG_TYPE_STRING == snapshotsSaved[i].nTagType||HD3_TAG_TYPE_BLOB == snapshotsSaved[i].nTagType) { delete[] snapshotsQueried[i].value.strBlob.pBuf; snapshotsQueried[i].value.strBlob.pBuf = NULL; } }
sn3_unregister_callback(); sn3_unregister_value_change_callback(); //disconnect nt3_disconnect();
return 0; }
//*/
|