调整了实时数据与统计数据的转换方式。更新了暂态事件与波形的处理

This commit is contained in:
zw
2025-07-25 10:47:50 +08:00
parent b1963098eb
commit 900569e5de
6 changed files with 1537 additions and 44 deletions

View File

@@ -9,13 +9,13 @@
#include <ctime>
#include <arpa/inet.h> // <20>ֽ<EFBFBD><D6BD><EFBFBD>ת<EFBFBD><D7AA>
#include <array>
#include <cmath>
using namespace std;
float IntToFloat(int num);
float ShorToFloat100(short num);
float ShorToFloat1000(short num);
float ShorToFloat10000(short num);
// <20><><EFBFBD>ͱ<EFBFBD><CDB1>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
enum class MsgRequestType : unsigned char {
//ѯ<><D1AF>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
@@ -23,7 +23,9 @@ enum class MsgRequestType : unsigned char {
//ѯ<><D1AF>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Request_Stat = 0x8a,
//ѯ<><D1AF>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
Request_New_3S = 0x04
Request_New_3S = 0x04,
//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>ļ<EFBFBD>
Request_File_Download = 0x07
};
// <20><><EFBFBD>ձ<EFBFBD><D5B1>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
enum class MsgResponseType : unsigned char {
@@ -32,7 +34,13 @@ enum class MsgResponseType : unsigned char {
//ѯ<><D1AF>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Response_Stat = 0x26,
//ѯ<><D1AF>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
Response_New_3S = 0x84
Response_New_3S = 0x84,
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>̬<EFBFBD>¼<EFBFBD>
Response_Event = 0x16,
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵IJ<CDB5><C4B2><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ<EFBFBD>¼<EFBFBD>
Response_ActiveSOEInfo = 0x17,
//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>ļ<EFBFBD>
Response_File_Download = 0x87
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>
class MessageParser {
@@ -688,6 +696,472 @@ public:
return count;
}
//<2F><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ת<EFBFBD><D7AA>
std::string ConvertToBase64_Delta() const {
std::vector<float> float_buffer;
// 0-8λ<38><CEBB>Rmsȡ0-8
for (int i = 0; i < 9; ++i) {
float_buffer.push_back(Rms[i]);
}
// 9-11λ<31><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// 12-14λ<34><CEBB>UU_Deviation<6F><6E>UL_Deviation<6F><6E><EFBFBD><EFBFBD>ȡǰ<C8A1><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ϊ0<CEAA><30>ֵ
for (int i = 0; i < 3; ++i) {
float val = (UU_Deviation[i] != 0.0f) ? UU_Deviation[i] : UL_Deviation[i];
float_buffer.push_back(val);
}
// 15-16λ<36><CEBB>F_Deviation<6F><6E>ȡ0-1
for (int i = 0; i < 2; ++i) {
float_buffer.push_back(F_Deviation[i]);
}
// <20>ٺ<EFBFBD><38><CEBB>UI_Seqȡ0-7
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 4; ++j) {
if (i * 4 + j < 8) { // ֻȡǰ8<C7B0><38>
float_buffer.push_back(UI_Seq[i][j]);
}
}
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 49 * 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>3<EFBFBD><33>ȡ1-49λ
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[3][i]);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>4<EFBFBD><34>ȡ1-49λ
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[4][i]);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>5<EFBFBD><35>ȡ1-49λ
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[5][i]);
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>FuHarm<72><6D>0-2<><32>ȡ1-49λ
for (int j = 0; j < 3; ++j) {
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[j][i]);
}
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 49 * 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB><EFBFBD>δ<EFBFBD>FuHarmPhase<73><65>3-5<><35>ȡ1-49λ
for (int j = 3; j < 6; ++j) {
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarmPhase[j][i]);
}
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB><EFBFBD>δ<EFBFBD>FuHarmPhase<73><65>0-2<><32>ȡ1-49λ
for (int j = 0; j < 3; ++j) {
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarmPhase[j][i]);
}
}
// <20>ٺ<EFBFBD>50*3λ<33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 50 * 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD>50*3λ<33><CEBB><EFBFBD>δ<EFBFBD>InHarm<72><6D>3-5<><35>ȡ0-49λ<39>е<EFBFBD>valָ<6C><D6B8>
for (int j = 3; j < 6; ++j) {
for (int i = 0; i < HARMNUM; ++i) {
float_buffer.push_back(InHarm[j][i].Val);
}
}
// <20>ٺ<EFBFBD>50*3λ<33><CEBB><EFBFBD>δ<EFBFBD>InHarm<72><6D>0-2<><32>ȡ0-49λ<39>е<EFBFBD>valָ<6C><D6B8>
for (int j = 0; j < 3; ++j) {
for (int i = 0; i < HARMNUM; ++i) {
float_buffer.push_back(InHarm[j][i].Val);
}
}
// <20>ٺ<EFBFBD>12λ<32><CEBB><EFBFBD>δ<EFBFBD>Total_Power<65><72>0-3<><33>ȡ0-2λ
for (int j = 0; j < 4; ++j) {
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(Total_Power[j][i]);
}
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ0<C8A1><30>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[0][i].P);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ0<C8A1><30>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[0][i].Q);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ0<C8A1><30>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[0][i].S);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ1<C8A1><31>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[1][i].P);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ1<C8A1><31>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[1][i].Q);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ1<C8A1><31>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[1][i].S);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ2<C8A1><32>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[2][i].P);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ2<C8A1><32>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[2][i].Q);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ2<C8A1><32>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[2][i].S);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ3<C8A1><33>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[3][i].P);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ3<C8A1><33>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[3][i].Q);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ3<C8A1><33>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[3][i].S);
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 49 * 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>Harm_Contain<69>е<EFBFBD>3-5<><35>ȡ1-49λ
for (int j = 3; j < 6; ++j) {
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Contain[j][i]);
}
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>Harm_Contain<69>е<EFBFBD>0-2<><32>ȡ1-49λ
for (int j = 0; j < 3; ++j) {
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Contain[j][i]);
}
}
// <20>ٺ<EFBFBD><33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD><33><CEBB>Harm_Aberrance<63>е<EFBFBD>3-5<><35>ȡֵ
for (int i = 3; i < 6; ++i) {
float_buffer.push_back(Harm_Aberrance[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>Harm_Aberrance<63>е<EFBFBD>0-2<><32>ȡֵ
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(Harm_Aberrance[i]);
}
// <20>ٺ<EFBFBD><34><CEBB>Cos_PF<50><46>ȡ0-3
for (int i = 0; i < 4; ++i) {
float_buffer.push_back(Cos_PF[i]);
}
// <20>ٺ<EFBFBD><34><CEBB>Cos_DF<44><46>ȡ0-3
for (int i = 0; i < 4; ++i) {
float_buffer.push_back(Cos_DF[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD><33><CEBB>U_Fluctuation<6F><6E>ȡ0-2
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(U_Fluctuation[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD><33><CEBB>U_Flicker<65><72>ȡ0-2
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(U_Flicker[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD><33><CEBB>UL_Flicker<65><72>ȡ0-2
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(UL_Flicker[i]);
}
// ת<><D7AA>ΪBase64
const size_t byte_size = float_buffer.size() * sizeof(float);
const unsigned char* byte_data = reinterpret_cast<const unsigned char*>(float_buffer.data());
return base64_encode(byte_data, byte_size);
}
//<2F><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ת<EFBFBD><D7AA>
std::string ConvertToBase64_Star() const {
std::vector<float> float_buffer;
// 0-8λ<38><CEBB>Rmsȡ0-8
for (int i = 0; i < 9; ++i) {
float_buffer.push_back(Rms[i]);
}
// 9-11λ<31><CEBB>UU_Deviation<6F><6E>UL_Deviation<6F><6E><EFBFBD><EFBFBD>ȡǰ<C8A1><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ϊ0<CEAA><30>ֵ
for (int i = 0; i < 3; ++i) {
float val = (UU_Deviation[i] != 0.0f) ? UU_Deviation[i] : UL_Deviation[i];
float_buffer.push_back(val);
}
// 12-14λ<34><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// 15-16λ<36><CEBB>F_Deviation<6F><6E>ȡ0-1
for (int i = 0; i < 2; ++i) {
float_buffer.push_back(F_Deviation[i]);
}
// <20>ٺ<EFBFBD><38><CEBB>UI_Seqȡ0-7
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 4; ++j) {
if (i * 4 + j < 8) { // ֻȡǰ8<C7B0><38>
float_buffer.push_back(UI_Seq[i][j]);
}
}
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>0<EFBFBD><30>ȡ1-49λ (ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʼ)
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[0][i]);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>1<EFBFBD><31>ȡ1-49λ
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[1][i]);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>2<EFBFBD><32>ȡ1-49λ
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[2][i]);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>3<EFBFBD><33>ȡ1-49λ
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[3][i]);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>4<EFBFBD><34>ȡ1-49λ
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[4][i]);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>FuHarm<72><6D>5<EFBFBD><35>ȡ1-49λ
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarm[5][i]);
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 49 * 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB><EFBFBD>δ<EFBFBD>FuHarmPhase<73><65>0-2<><32>ȡ1-49λ
for (int j = 0; j < 3; ++j) {
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarmPhase[j][i]);
}
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB><EFBFBD>δ<EFBFBD>FuHarmPhase<73><65>3-5<><35>ȡ1-49λ
for (int j = 3; j < 6; ++j) {
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(FuHarmPhase[j][i]);
}
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 49 * 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD>50*6λ<36><CEBB><EFBFBD>δ<EFBFBD>InHarm<72><6D>0-5<><35>ȡ0-49λ<39>е<EFBFBD>valָ<6C><D6B8>
for (int j = 0; j < 6; ++j) {
for (int i = 0; i < HARMNUM; ++i) {
float_buffer.push_back(InHarm[j][i].Val);
}
}
// <20>ٺ<EFBFBD>50*3λ<33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 50 * 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD>12λ<32><CEBB><EFBFBD>δ<EFBFBD>Total_Power<65><72>0-3<><33>ȡ0-2λ
for (int j = 0; j < 4; ++j) {
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(Total_Power[j][i]);
}
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ0<C8A1><30>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[0][i].P);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ0<C8A1><30>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[0][i].Q);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ0<C8A1><30>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[0][i].S);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ1<C8A1><31>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[1][i].P);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ1<C8A1><31>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[1][i].Q);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ1<C8A1><31>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[1][i].S);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ2<C8A1><32>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[2][i].P);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ2<C8A1><32>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[2][i].Q);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ2<C8A1><32>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[2][i].S);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ3<C8A1><33>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[3][i].P);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ3<C8A1><33>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[3][i].Q);
}
// <20>ٺ<EFBFBD>49λ<39><CEBB>Harm_Power<65><72>ȡ3<C8A1><33>1-49<34>е<EFBFBD>
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Power[3][i].S);
}
// <20>ٺ<EFBFBD>49*6λ<36><CEBB>Harm_Contain<69>е<EFBFBD>0-5<><35>ȡ1-49λ
for (int j = 0; j < 6; ++j) {
for (int i = 1; i < HARMNUM; ++i) {
float_buffer.push_back(Harm_Contain[j][i]);
}
}
// <20>ٺ<EFBFBD>49*3λ<33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 49 * 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD><36><CEBB>Harm_Aberrance<63>е<EFBFBD>0-5<><35>ȡֵ
for (int i = 0; i < 6; ++i) {
float_buffer.push_back(Harm_Aberrance[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD><34><CEBB>Cos_PF<50><46>ȡ0-3
for (int i = 0; i < 4; ++i) {
float_buffer.push_back(Cos_PF[i]);
}
// <20>ٺ<EFBFBD><34><CEBB>Cos_DF<44><46>ȡ0-3
for (int i = 0; i < 4; ++i) {
float_buffer.push_back(Cos_DF[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>U_Fluctuation<6F><6E>ȡ0-2
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(U_Fluctuation[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD><33><CEBB>U_Flicker<65><72>ȡ0-2
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(U_Flicker[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// <20>ٺ<EFBFBD><33><CEBB>UL_Flicker<65><72>ȡ0-2
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(UL_Flicker[i]);
}
// <20>ٺ<EFBFBD><33><CEBB>λ3.1415<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// ת<><D7AA>ΪBase64
const size_t byte_size = float_buffer.size() * sizeof(float);
const unsigned char* byte_data = reinterpret_cast<const unsigned char*>(float_buffer.data());
return base64_encode(byte_data, byte_size);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD>ʽѡ<CABD><D1A1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ʽ
std::string ConvertToBase64(int type) const {
//1Ϊ<31><CEAA><EFBFBD>ͽ<EFBFBD><CDBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>߼<EFBFBD>
if (type == 1) {
return ConvertToBase64_Delta();
}
else {
return ConvertToBase64_Star();
}
}
private:
// <20><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SerializeFloats(std::vector<float>& buffer) const {
@@ -1203,8 +1677,377 @@ public:
return base64_encode(byte_data, byte_size);
}
std::string floatVectorToBase64(const std::vector<float>& float_buffer) const {
const size_t byte_size = float_buffer.size() * sizeof(float);
const unsigned char* byte_data =
reinterpret_cast<const unsigned char*>(float_buffer.data());
return base64_encode(byte_data, byte_size);
}
// <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::string ConvertToBase64_Star() const {
std::vector<float> float_buffer;
// 0-8: RMSֵ
for (int i = 0; i < 9; ++i) {
float_buffer.push_back(Rms[i]);
}
// 9-11: <20><>ѹƫ<D1B9>ȡ<EEA3A8><C8A1>Ϊ0<CEAA><30>ֵ<EFBFBD><D6B5>
for (int i = 0; i < 3; ++i) {
float val = (UU_Deviation[i] != 0.0f) ? UU_Deviation[i] : UL_Deviation[i];
float_buffer.push_back(val);
}
// 12-14: <20><><EFBFBD>ã<EFBFBD><C3A3>ߵ<EFBFBD>ѹλ<D1B9>ã<EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// 15-20: THD<48>ܻ<EFBFBD><DCBB><EFBFBD><EFBFBD>ʣ<EFBFBD>0-5<><35>
for (int i = 0; i < 6; ++i) {
float_buffer.push_back(THD[i]);
}
// 21-23: <20><><EFBFBD>ã<EFBFBD><C3A3>ߵ<EFBFBD>ѹTHD<48><44>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// 24-25: Ƶ<>ʼ<EFBFBD>ƫ<EFBFBD><C6AB>
for (int i = 0; i < 2; ++i) {
float_buffer.push_back(FREQ[i]);
}
// 26-33: <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ8<C7B0><38>Ԫ<EFBFBD>أ<EFBFBD>
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 4; ++j) { // ȡÿ<C8A1>е<EFBFBD>ǰ4<C7B0><34>Ԫ<EFBFBD><D4AA>
if (i == 0 || j < 3) { // ȷ<><C8B7>ֻȡ8<C8A1><38>
float_buffer.push_back(UI_Seq[i][j]);
}
}
}
// 34-45: <20>ܹ<EFBFBD><DCB9><EFBFBD>
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 3; ++j) {
float_buffer.push_back(TOTAL_POWER[i][j]);
}
}
// 46-49: <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 4; ++i) {
float_buffer.push_back(COS_PF[i]);
}
// 50-53: λ<>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 4; ++i) {
float_buffer.push_back(COS_DF[i]);
}
// 54-200: <20><>ѹг<D1B9><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>1-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 1; j < HARMNUM; ++j) {
float_buffer.push_back(HARMV[i][j]);
}
}
// 201-347: <20><><EFBFBD>ã<EFBFBD><C3A3>ߵ<EFBFBD>ѹг<D1B9><D0B3><EFBFBD><EFBFBD>
for (int i = 0; i < 3 * 49; ++i) {
float_buffer.push_back(3.1415f);
}
// 348-494: <20><><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>1-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 1; j < HARMNUM; ++j) {
float_buffer.push_back(HARMI[i][j]);
}
}
// 495-641: <20><>ѹг<D1B9><D0B3><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>1-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 1; j < HARMNUM; ++j) {
float_buffer.push_back(HARMVP[i][j]);
}
}
// 642-788: <20><><EFBFBD>ã<EFBFBD><C3A3>ߵ<EFBFBD>ѹг<D1B9><D0B3><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
for (int i = 0; i < 3 * 49; ++i) {
float_buffer.push_back(3.1415f);
}
// 789-935: <20><><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>1-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 1; j < HARMNUM; ++j) {
float_buffer.push_back(HARMIP[i][j]);
}
}
// 936-1085: <20><>ѹ<EFBFBD><D1B9>г<EFBFBD><D0B3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < HARMNUM; ++j) {
float_buffer.push_back(INHARMV[i][j]);
}
}
// 1086-1235: <20><><EFBFBD>ã<EFBFBD><C3A3>ߵ<EFBFBD>ѹ<EFBFBD><D1B9>г<EFBFBD><D0B3><EFBFBD><EFBFBD>
for (int i = 0; i < 3 * 50; ++i) {
float_buffer.push_back(3.1415f);
}
// ת<><D7AA>ΪBase64
return floatVectorToBase64(float_buffer);
}
// <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::string ConvertToBase64_Delta() const {
std::vector<float> float_buffer;
// 0-8: RMSֵ
for (int i = 0; i < 9; ++i) {
float_buffer.push_back(Rms[i]);
}
// 9-11: <20><><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ѹλ<D1B9>ã<EFBFBD>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// 12-14: <20><>ѹƫ<D1B9>ȡ<EEA3A8><C8A1>Ϊ0<CEAA><30>ֵ<EFBFBD><D6B5>
for (int i = 0; i < 3; ++i) {
float val = (UU_Deviation[i] != 0.0f) ? UU_Deviation[i] : UL_Deviation[i];
float_buffer.push_back(val);
}
// 15-17: <20><><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ѹTHD<48><44>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(3.1415f);
}
// 18-20: THD<48>ߵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>3-5<><35>
for (int i = 3; i < 6; ++i) {
float_buffer.push_back(THD[i]);
}
// 21-23: THD<48><44><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>0-2<><32>
for (int i = 0; i < 3; ++i) {
float_buffer.push_back(THD[i]);
}
// 24-25: Ƶ<>ʼ<EFBFBD>ƫ<EFBFBD><C6AB>
for (int i = 0; i < 2; ++i) {
float_buffer.push_back(FREQ[i]);
}
// 26-33: <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ8<C7B0><38>Ԫ<EFBFBD>أ<EFBFBD>
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 4; ++j) {
if (i == 0 || j < 3) {
float_buffer.push_back(UI_Seq[i][j]);
}
}
}
// 34-45: <20>ܹ<EFBFBD><DCB9><EFBFBD>
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 3; ++j) {
float_buffer.push_back(TOTAL_POWER[i][j]);
}
}
// 46-49: <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 4; ++i) {
float_buffer.push_back(COS_PF[i]);
}
// 50-53: λ<>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < 4; ++i) {
float_buffer.push_back(COS_DF[i]);
}
// 54-200: <20><><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ѹг<D1B9><D0B3><EFBFBD><EFBFBD>
for (int i = 0; i < 3 * 49; ++i) {
float_buffer.push_back(3.1415f);
}
// 201-347: <20><>ѹг<D1B9><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>1-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 1; j < HARMNUM; ++j) {
float_buffer.push_back(HARMV[i][j]);
}
}
// 348-494: <20><><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>1-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 1; j < HARMNUM; ++j) {
float_buffer.push_back(HARMI[i][j]);
}
}
// 495-641: <20><><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ѹг<D1B9><D0B3><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
for (int i = 0; i < 3 * 49; ++i) {
float_buffer.push_back(3.1415f);
}
// 642-788: <20><>ѹг<D1B9><D0B3><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>1-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 1; j < HARMNUM; ++j) {
float_buffer.push_back(HARMVP[i][j]);
}
}
// 789-935: <20><><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>1-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 1; j < HARMNUM; ++j) {
float_buffer.push_back(HARMIP[i][j]);
}
}
// 936-1085: <20><><EFBFBD>ã<EFBFBD><C3A3>ߵ<EFBFBD>ѹ<EFBFBD><D1B9>г<EFBFBD><D0B3><EFBFBD><EFBFBD>
for (int i = 0; i < 3 * 50; ++i) {
float_buffer.push_back(3.1415f);
}
// 1086-1235: <20><>ѹ<EFBFBD><D1B9>г<EFBFBD><D0B3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0-49<34>Σ<EFBFBD>
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < HARMNUM; ++j) {
float_buffer.push_back(INHARMV[i][j]);
}
}
// ת<><D7AA>ΪBase64
return floatVectorToBase64(float_buffer);
}
// <20><><EFBFBD>ݽ<EFBFBD><DDBD>߷<EFBFBD>ʽѡ<CABD><D1A1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::string ConvertToBase64(int wiringType) const {
// 1Ϊ<31><CEAA><EFBFBD>ͽ<EFBFBD><CDBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
if (wiringType == 1) {
return ConvertToBase64_Delta();
}
else {
return ConvertToBase64_Star();
}
}
};
#pragma pack(pop)
//<2F><>̬<EFBFBD><CCAC><EFBFBD>ؽṹ------------------------------
#pragma pack(push, 1)
// ʱ<><CAB1><EFBFBD><EFBFBD><E1B9B9>
struct TagMsTime {
uint16_t Year;
uint16_t Month;
uint16_t Day;
uint16_t Hour;
uint16_t Min;
uint16_t Sec;
uint16_t Ms;
void convertByteOrder() {
Year = ntohs(Year);
Month = ntohs(Month);
Day = ntohs(Day);
Hour = ntohs(Hour);
Min = ntohs(Min);
Sec = ntohs(Sec);
Ms = ntohs(Ms);
}
};
// <20><EFBFBD>¼<EFBFBD>ͷ<EFBFBD>
struct NewHeadTaglogbuffer {
uint16_t name; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TagMsTime Devtime; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
uint16_t LogType; // <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
uint16_t LogCode; // <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
uint16_t LogLb; // <20><>־¼<D6BE><C2BC>
uint16_t LogBackup; // <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>λ
uint32_t LogParaNum; // <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void convertByteOrder() {
name = ntohs(name);
Devtime.convertByteOrder();
LogType = ntohs(LogType);
LogCode = ntohs(LogCode);
LogLb = ntohs(LogLb);
LogBackup = ntohs(LogBackup);
LogParaNum = ntohl(LogParaNum);
}
};
// <20><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct NewBodyTaglogbuffer {
uint32_t ParaCode; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t ParaValue; // <20><><EFBFBD><EFBFBD>ֵ
void convertByteOrder() {
ParaCode = ntohl(ParaCode);
ParaValue = ntohl(ParaValue);
}
};
// <20><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class NewTaglogbuffer {
public:
NewHeadTaglogbuffer head;
std::vector<NewBodyTaglogbuffer> bodyList;
// <20><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void parseFromData(const uint8_t* data, size_t data_size) {
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
if (data_size < sizeof(NewHeadTaglogbuffer)) {
throw std::runtime_error("Insufficient data for header");
}
memcpy(&head, data, sizeof(NewHeadTaglogbuffer));
head.convertByteOrder();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>岿<EFBFBD><E5B2BF>
const size_t body_start = sizeof(NewHeadTaglogbuffer);
const size_t body_size = head.LogParaNum * sizeof(NewBodyTaglogbuffer);
if (data_size < body_start + body_size) {
throw std::runtime_error("Insufficient data for body");
}
bodyList.resize(head.LogParaNum);
const uint8_t* body_data = data + body_start;
for (uint32_t i = 0; i < head.LogParaNum; ++i) {
memcpy(&bodyList[i], body_data, sizeof(NewBodyTaglogbuffer));
bodyList[i].convertByteOrder();
body_data += sizeof(NewBodyTaglogbuffer);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C#<23>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static NewTaglogbuffer createFromData(const uint8_t* data, size_t data_size) {
NewTaglogbuffer result;
result.parseFromData(data, data_size);
return result;
}
};
#pragma pack(pop)
// <20><><EFBFBD><EFBFBD>QVVRRecord<72><EFBFBD><E1B9B9>
struct QVVRRecord {
uint64_t triggerTimeMs; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTC<54><43><EFBFBD><EFBFBD>1970-01-01 00:00:00<30><30>ʼ<EFBFBD><CABC>
int nType = 0; // <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ͣ<EFBFBD>0-δ֪ 1-<2D>ݽ<EFBFBD> 2-<2D><><EFBFBD><EFBFBD> 3-<2D>ж<EFBFBD> 4-˲̬
float fPersisstime = 0.0f; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
float fMagntitude = 0.0f; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
float phase = 0.0f; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲̬ʹ<CCAC>ã<EFBFBD>0-A 1-B 2-C 3-AB 4-BC 5-CA ?-ABC
float transientValue = 0.0f;// ˲<><CBB2><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>˲̬ʹ<CCAC>ã<EFBFBD>
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>QVVRRecord
QVVRRecord DynamicLog_GetQVVRRecordFromLogBuffer(const std::string& strScale, uint32_t nPTType, float fPT, const NewTaglogbuffer& log);
//<2F><>̬<EFBFBD><CCAC><EFBFBD>ؽṹ-------------------------------
// <20><><EFBFBD>ɴ<EFBFBD>Э<EFBFBD><D0AD>ͷ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
std::vector<unsigned char> generate_binary_message(
uint16_t msg_type,
@@ -1217,4 +2060,6 @@ std::vector<unsigned char> generate_statequerytime_message();
//<2F><><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
std::vector<unsigned char> generate_statequerystat_message(tagTime time, uint16_t nDeviceNo, uint16_t nDataType);
//<2F><><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>ʵʱ<CAB5><CAB1><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
std::vector<unsigned char> generate_realstat_message(unsigned char nCpuNo, unsigned char StaTtype, unsigned char flag);
std::vector<unsigned char> generate_realstat_message(unsigned char nCpuNo, unsigned char StaTtype, unsigned char flag);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǰ֡<C7B0><D6A1><EFBFBD><EFBFBD>+<2B>ļ<EFBFBD><C4BC><EFBFBD>
std::vector<unsigned char> generate_downloadfile_message(int frameIndex, const std::string& fileName);