内存快照接口

Navigation:  C++ >

内存快照接口

Previous pageReturn to chapter overviewNext page

 

《内存快照接口》的主要内容包括:

 

sn3_query_snapshot

sn3_query_snapshots

sn3_save_disorder_snapshots

sn3_save_tags_disorder_snapshots

sn3_save_snapshot

sn3_save_snapshots

sn3_register_callback

sn3_unregister_callback

sn3_register_value_change_callback

sn3_unregister_value_change_callback

snapshot

copycode!MISSING PHRASE 'COPYCODE'!

///*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;

}

 

 

//*/

 

 

©2015. All Rights Reserved.