《归档数据接口》的主要内容包:
▪ar3_query_specify_num_raw_recs
▪ar3_query_interp_record_by_mode
▪ar3_query_interp_records_by_mode
▪ar3_query_tags_interp_records_by_mode
Archive Record |
|
///* Archive Record Function
#include "hdKingAPI.h" #include "error_code.h" #include "data_types.h" #include "hd3Struct.h" #include <stdio.h> #include <string.h> #include <Windows.h>
int32 main() { int32 nRet = RD_SUCCESS; HD3Connection conn; HD3PtTagProp normalTag; int32 nRecNum = 3; HD3Record records[3]; uint32 nTagIDs[3]; int32 nErrorCodes[3]; int32 i = 0; HD3Mask mask;
//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 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);
Sleep(30000); // save snapshots for (i = 0; i < nRecNum; i ++) { nTagIDs[i] = normalTag.nTagID; records[i].nSec = 1 + i; records[i].nMsec = 0; records[i].nQuality = 192; records[i].value.nInt32 = records[i].nSec; }
nRet = sn3_save_snapshots(nRecNum, nTagIDs, records, nErrorCodes); if (nRet != RD_SUCCESS) { printf("save snapshots failed, error code[%d]!\n", nRet); nt3_disconnect(); return -1; }
//query raw recs num HD3TimeRegion timeRegion; int32 nRecNumQueried; timeRegion.left.nSec = 1; timeRegion.left.nMsec = 0; timeRegion.right.nSec = 36000; timeRegion.right.nMsec = 0; timeRegion.bLeftClosed = true; timeRegion.bRightClosed = true; nRet = ar3_query_raw_records_number(normalTag.nTagID, &timeRegion, &nRecNumQueried); if (nRet != RD_SUCCESS) { printf("tag [id:%d] query raw records number failed, error code[%d]!\n", normalTag.nTagID, nRet); nt3_disconnect(); return -1; } printf("tag [id:%d] query raw records number successful, nRecNum is %d in time area [%d s : %d ms] to [%d s : %d ms] !\n", normalTag.nTagID, nRecNumQueried, timeRegion.left.nSec, timeRegion.left.nMsec, timeRegion.right.nSec, timeRegion.right.nMsec );
//query raw recs HD3Record recordsQueried[2]; nRecNumQueried = 2;
do { nRet = ar3_query_raw_records(nTagIDs[0], &timeRegion, &nRecNumQueried, recordsQueried); if (nRet != RD_SUCCESS) { printf("tag [id:%d] query raw records failed, error code[%d]!\n", normalTag.nTagID, nRet); nt3_disconnect(); return -1; } for (i = 0; i < nRecNumQueried; i ++) { printf("tag [id:%d] record time [%d s : %d ms], quality [%d], value [%d]!\n", normalTag.nTagID, recordsQueried[i].nSec, recordsQueried[i].nMsec, recordsQueried[i].nQuality, recordsQueried[i].value.nInt32); } //reset end time if (2 == nRecNumQueried) { timeRegion.right.nSec = recordsQueried[1].nSec; timeRegion.right.nMsec = recordsQueried[1].nMsec; if ( 0 == timeRegion.right.nMsec ) { timeRegion.right.nSec --; timeRegion.right.nMsec = 999; } else { timeRegion.right.nMsec --; } } } while (2 == nRecNumQueried);
//query specify number records timeRegion.left.nSec = 100; timeRegion.left.nMsec = 0; nRecNumQueried = 2; nRet = ar3_query_specify_num_raw_recs(normalTag.nTagID, &timeRegion.left, true, &nRecNumQueried, recordsQueried); if (nRet != RD_SUCCESS) { printf("tag [id:%d] query 2 records from time [%d s : %d ms] to the earlier time failed, error code[%d]!\n", normalTag.nTagID, timeRegion.left.nSec, timeRegion.left.nMsec, nRet); nt3_disconnect(); return -1; }
printf("tag [id:%d] query 2 records from time [%d s : %d ms] to the earlier time successful!\n", normalTag.nTagID, timeRegion.left.nSec, timeRegion.left.nMsec); for (i = 0; i < 2; i ++) { printf("tag [id:%d] raw record time [%d s : %d ms], quality [%d], value [%d]!\n", normalTag.nTagID, recordsQueried[i].nSec, recordsQueried[i].nMsec, recordsQueried[i].nQuality, recordsQueried[i].value.nInt32); }
//modify record recordsQueried[0].value.nInt32 = 999; nRet = ar3_modify_record(normalTag.nTagID, &recordsQueried[0]); if (nRet != RD_SUCCESS) { printf("tag [id:%d] modify record failed, error code[%d]!\n", normalTag.nTagID, nRet); nt3_disconnect(); return -1; }
printf("tag [id:%d] modify record successful!\n", normalTag.nTagID);
//delete record HD3Time hdTime; hdTime.nSec = recordsQueried[0].nSec; hdTime.nMsec = recordsQueried[0].nMsec; nRet = ar3_delete_record(normalTag.nTagID, &hdTime); if (nRet != RD_SUCCESS) { printf("tag [id:%d] delete record failed, error code[%d]!\n", normalTag.nTagID, nRet); nt3_disconnect(); return -1; } printf("tag [id:%d] delete record successful!\n", normalTag.nTagID);
//query one interpolate rec by mode recordsQueried[0].nSec = 1; recordsQueried[0].nMsec = 500; nRet = ar3_query_interp_record_by_mode(HD3_REC_INTERP_QUERY_MODE_LINEAR, normalTag.nTagID, &(recordsQueried[0])); if (nRet != RD_SUCCESS) { printf("tag [id:%d] query interpolate record by mode failed, error code[%d]!\n", normalTag.nTagID, nRet); nt3_disconnect(); return -1; }
printf("tag [id:%d] query interpolate record by mode successful, time [%d s : %d ms], quality [%d], value [%d]!\n", normalTag.nTagID, recordsQueried[0].nSec, recordsQueried[0].nMsec, recordsQueried[0].nQuality, recordsQueried[0].value.nInt32);
//query interpolate records recordsQueried[0].nSec = 1; recordsQueried[0].nMsec = 300; recordsQueried[1].nSec = 1; recordsQueried[1].nMsec = 800; nRet = ar3_query_interp_records_by_mode(HD3_REC_INTERP_QUERY_MODE_PREV, normalTag.nTagID, 2, recordsQueried, nErrorCodes); if (RD_SUCCESS == nRet) { printf("query tag [id:%d] interpolate records by mode successful\n", normalTag.nTagID); for (i = 0; i < 2; i ++) { printf("tag [id:%d] query interpolate records by mode successful, time [%d s : %d ms], quality [%d], value [%d]!\n", normalTag.nTagID, recordsQueried[i].nSec, recordsQueried[i].nMsec, recordsQueried[i].nQuality, recordsQueried[i].value.nInt32); }
} else if (EC_HD_API_QUERY_INTERP_REC_FAILED == nRet) { for (i = 0; i < 2; i ++) { if (RD_SUCCESS == nErrorCodes[i]) { printf("tag [id:%d] query interpolate record time by mode [%d s : %d ms], quality [%d], value [%d]!\n", normalTag.nTagID, recordsQueried[i].nSec, recordsQueried[i].nMsec, recordsQueried[i].nQuality, recordsQueried[i].value.nInt32); } else { printf("tag [id:%d] query interpolate record failed, error code [%d], record time [%d s : %d ms]!\n", normalTag.nTagID, nErrorCodes[i], recordsQueried[i].nSec, recordsQueried[i].nMsec); } } } else { printf("tag [id:%d] query interpolate record failed, error code[%d]!\n", normalTag.nTagID, nRet); nt3_disconnect(); return -1; }
//disconnect nt3_disconnect(); return 0; }
//*/
|