eis/TestProject/ihd_test/main.cpp

106 lines
3.7 KiB
C++
Raw Normal View History

#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;
}