eis/TestProject/ihd_test/main.cpp

106 lines
3.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma one
#include <TestProject/ihd_test/ihdb_inc/data_types.h>
#include <TestProject/ihd_test/ihdb_inc/error_code.h>
#include <TestProject/ihd_test/ihdb_inc/hd3Enum.h>
#include <TestProject/ihd_test/ihdb_inc/hd3MaskDefine.h>
#include <TestProject/ihd_test/ihdb_inc/hd3Struct.h>
#include <TestProject/ihd_test/ihdb_inc/hdKingAPI.h>
#include <TestProject/ihd_test/ihdb_inc/ihyperdb.h>
// #include <TestProject/ihd_test/ihdb_inc/IhyperDBcommon.hh>
#include <chrono>
#include <cstring>
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
HD3Time convert_to_hd_tp(std::chrono::system_clock::time_point time_point);
int main() {
HD3Connection conn;
strcpy(conn.szAddress, "100.10.10.101");
conn.nPort = 5673;
conn.nTimeout = 3;
bool m_isconn = false;
HD3TimeRegion hd3time1;
hd3time1.left = convert_to_hd_tp(std::chrono::system_clock::now() -
std::chrono::hours(1));
hd3time1.right = convert_to_hd_tp(std::chrono::system_clock::now() -
std::chrono::minutes(1));
int32 recode_num =
(std::chrono::hours(1) - std::chrono::minutes(1)).count() / 50;
/*连接ihd*/
auto nRet = nt3_connect(&conn);
if (nRet != RD_SUCCESS) {
cout << "连接失败!错误码:" << nRet << endl;
return 0;
} else {
m_isconn = true;
cout << "连接成功:" << nRet << endl;
}
/*查询 tagname的tagid*/
string tag_name = "TCM1750_MNT-1-72-ACM-1";
HD3TagBasicInfo basic_info[1];
strcpy(basic_info[0].szTagName, tag_name.c_str());
int32 error_codes[1];
// 调用ihdb原生api查询
tag3_query_tags_basic_info_by_name(
HD3M_COMM_PROP_TAG_NAME | HD3M_COMM_PROP_TAG_TYPE, 1, basic_info,
error_codes);
if (error_codes[0] == RD_SUCCESS) {
cout << tag_name << "的tagid:" << basic_info[0].nTagID << endl;
} else {
cout << tag_name << "tagid查询失败错误码" << error_codes[0] << endl;
}
/*查询原始数据数量*/
int32 records_num = 0;
auto nRet3 = ar3_query_raw_records_number(basic_info[0].nTagID, &hd3time1,
&records_num);
if (nRet3 != RD_SUCCESS) {
cout << tag_name << ",查询数量失败失败!错误码:" << nRet3 << endl;
} else {
cout << tag_name << ",查询成功,数量:" << records_num << endl;
}
/*查询原始数据*/
const size_t once_query_size = 72000;
HD3Record* records_queried = nullptr;
records_queried = new HD3Record[once_query_size];
memset(records_queried, 0x00, sizeof(HD3Record) * once_query_size);
auto nRet2 = ar3_query_raw_records(basic_info[0].nTagID, &hd3time1,
&recode_num, records_queried);
if (nRet2 != RD_SUCCESS) {
cout << tag_name << ",查询失败失败!错误码:" << nRet2 << endl;
} else {
cout << tag_name << ",查询成功,类型:" << (*records_queried).nTagType
<< ",最新值:" << (*records_queried).NumberValue() << endl;
}
delete[] records_queried;
records_queried = nullptr;
/*断开ihd连接*/
if (m_isconn) {
auto nRet = nt3_disconnect();
if (nRet != RD_SUCCESS) {
cout << "断开连接失败!错误码:" << nRet << endl;
} else {
cout << "断开连接成功:" << nRet << endl;
}
}
return 0;
}
HD3Time convert_to_hd_tp(std::chrono::system_clock::time_point time_point) {
HD3Time hd_tp;
hd_tp.nSec = std::chrono::duration_cast<std::chrono::seconds>(
time_point.time_since_epoch())
.count();
hd_tp.nMsec =
std::chrono::duration_cast<std::chrono::milliseconds>(
(time_point - std::chrono::seconds(hd_tp.nSec)).time_since_epoch())
.count();
return hd_tp;
}