2025-06-13 11:29:59 +08:00
# include <vector>
# include <cstdint>
# include <cstring>
# include <string>
# include <stdexcept>
# include <algorithm>
# include <cctype>
# include <cstdlib>
2025-07-03 11:13:16 +08:00
# include <ctime>
# include <arpa/inet.h> // <20> ֽ<EFBFBD> <D6BD> <EFBFBD> ת<EFBFBD> <D7AA>
# include <array>
2025-07-25 10:47:50 +08:00
# include <cmath>
2025-07-03 11:13:16 +08:00
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>
Request_StatTime = 0x8b ,
//ѯ<> <D1AF> ͳ<EFBFBD> <CDB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2025-07-09 10:03:37 +08:00
Request_Stat = 0x8a ,
//ѯ<> <D1AF> ʵʱ<CAB5> <CAB1> <EFBFBD> <EFBFBD>
2025-07-25 10:47:50 +08:00
Request_New_3S = 0x04 ,
//<2F> <> <EFBFBD> <EFBFBD> װ<EFBFBD> <D7B0> <EFBFBD> ļ<EFBFBD>
2025-07-30 13:52:52 +08:00
Request_File_Download = 0x07 ,
//ѯ<> <D1AF> <EFBFBD> ļ<EFBFBD> Ŀ¼
2025-08-05 15:41:04 +08:00
Request_FileDir = 0x02 ,
//ѯ<> <D1AF> װ<EFBFBD> ö<EFBFBD> ֵ
Request_FixValue = 0x20 ,
//ѯ<> <D1AF> װ<EFBFBD> ö<EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD>
Request_FixDes = 0x21 ,
//<2F> <> <EFBFBD> <EFBFBD> װ<EFBFBD> ö<EFBFBD> ֵ
Request_Set_Fix = 0x22 ,
//ѯ<> <D1AF> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> ֵ
Request_Read_InterFix = 0x23 ,
//ѯ<> <D1AF> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <20> ڲ<EFBFBD> <DAB2> <EFBFBD> ֵor<6F> <72> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
Request_Read_InterFixDes = 0x24 ,
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> ֵ
2025-09-03 08:49:38 +08:00
Request_Set_InterFix = 0x25 ,
//ѯ<> <D1AF> װ<EFBFBD> <D7B0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
2025-09-04 15:37:26 +08:00
Request_Read_RunningInformation = 0x0e ,
//<2F> <> <EFBFBD> <EFBFBD> װ<EFBFBD> ö<EFBFBD> ʱ
2025-09-08 14:37:39 +08:00
Request_RightTime = 0x86 ,
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ¼<EFBFBD> <C2BC> <EFBFBD> ־
Request_Read_Event = 0x0D
2025-07-03 11:13:16 +08:00
} ;
// <20> <> <EFBFBD> ձ<EFBFBD> <D5B1> Ĺ<EFBFBD> <C4B9> <EFBFBD> <EFBFBD> <EFBFBD> ö<EFBFBD> <C3B6>
enum class MsgResponseType : unsigned char {
//ѯ<> <D1AF> ͳ<EFBFBD> <CDB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1>
Response_StatTime = 0x27 ,
//ѯ<> <D1AF> ͳ<EFBFBD> <CDB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2025-07-09 10:03:37 +08:00
Response_Stat = 0x26 ,
//ѯ<> <D1AF> ʵʱ<CAB5> <CAB1> <EFBFBD> <EFBFBD>
2025-07-25 10:47:50 +08:00
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>
2025-07-30 13:52:52 +08:00
Response_File_Download = 0x87 ,
//ѯ<> <D1AF> <EFBFBD> ļ<EFBFBD> Ŀ¼
2025-08-05 15:41:04 +08:00
Response_FileDir = 0x82 ,
//ѯ<> <D1AF> װ<EFBFBD> ö<EFBFBD> ֵ
Response_FixValue = 0xA0 ,
//ѯ<> <D1AF> װ<EFBFBD> ö<EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD>
Response_FixDes = 0xA1 ,
//<2F> <> <EFBFBD> <EFBFBD> װ<EFBFBD> ö<EFBFBD> ֵ(δʹ <CEB4> <CAB9> ,<2C> <> <EFBFBD> <EFBFBD> Ĭ<EFBFBD> Ͽ϶<CFBF> <CFB6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ<EFBFBD> <D3A6> )
Response_Set_Fix = 0xA2 ,
//ѯ<> <D1AF> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> ֵ
Response_Read_InterFix = 0xA3 ,
//ѯ<> <D1AF> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD>
Response_Read_InterFixDes = 0xA4 ,
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> ֵ(δʹ <CEB4> <CAB9> ,<2C> <> <EFBFBD> <EFBFBD> Ĭ<EFBFBD> Ͽ϶<CFBF> <CFB6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ<EFBFBD> <D3A6> )
Response_Set_InterFix = 0xA5 ,
2025-09-03 08:49:38 +08:00
//ѯ<> <D1AF> װ<EFBFBD> <D7B0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
Response_Read_RunningInformation = 0x8e ,
2025-09-04 15:37:26 +08:00
//<2F> <> <EFBFBD> <EFBFBD> װ<EFBFBD> ö<EFBFBD> ʱ(δʹ <CEB4> <CAB9> ,<2C> <> <EFBFBD> <EFBFBD> Ĭ<EFBFBD> Ͽ϶<CFBF> <CFB6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ<EFBFBD> <D3A6> )
Response_RightTime = 0x86 ,
2025-09-08 14:37:39 +08:00
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ¼<EFBFBD> <C2BC> <EFBFBD> ־
Response_Read_Event = 0x8D ,
2025-08-05 15:41:04 +08:00
//Ĭ<> Ͽ϶<CFBF> Ӧ<EFBFBD> <D3A6>
Response_NewACK = 0x40 ,
//Ĭ<> Ϸ<EFBFBD> <CFB7> <EFBFBD> Ӧ<EFBFBD> <D3A6>
Response_NewNACK = 0x41
2025-07-03 11:13:16 +08:00
} ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> ṹ
class MessageParser {
public :
// <20> <> Ա<EFBFBD> <D4B1> <EFBFBD> <EFBFBD>
uint8_t msgType ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : vector < uint8_t > RecvData ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int nMsgLen ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> +֡<> <D6A1> <EFBFBD> <EFBFBD> +<2B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int nRecvDataLen ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> 峤<EFBFBD> <E5B3A4>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - <20> <> <EFBFBD> <EFBFBD> bool<6F> <6C> <EFBFBD> <EFBFBD>
bool SetMsg ( const uint8_t * udata , size_t data_size ) {
// 1. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8>
if ( udata = = nullptr ) {
return false ; // <20> <> <EFBFBD> ݴ<EFBFBD> <DDB4> <EFBFBD> ʧ<EFBFBD> <CAA7>
}
// 2. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> ȣ <EFBFBD> 6<EFBFBD> ֽ<EFBFBD> ͷ<EFBFBD> <CDB7> <EFBFBD> <EFBFBD>
constexpr size_t MIN_HEADER_SIZE = 6 ;
if ( data_size < MIN_HEADER_SIZE ) {
return false ; // ͷ<> <CDB7> <EFBFBD> <EFBFBD> <EFBFBD> Ȳ<EFBFBD> <C8B2> <EFBFBD>
}
// 3. <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ij<EFBFBD> <C4B3> ȣ <EFBFBD> <C8A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
nMsgLen = ( static_cast < uint16_t > ( udata [ 4 ] ) < < 8 ) | udata [ 5 ] ;
// 4. <20> <> ֤<EFBFBD> <D6A4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ij<EFBFBD> <C4B3> <EFBFBD> (8 + nMsgLen)
if ( data_size < 8 + nMsgLen ) {
return false ; // <20> <> <EFBFBD> IJ<EFBFBD> <C4B2> <EFBFBD> <EFBFBD> <EFBFBD>
}
// 5. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɾ<> <C9BE> <EFBFBD> ˹<EFBFBD> <CBB9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֡<EFBFBD> <D6A1> <EFBFBD> <EFBFBD> 4<EFBFBD> ֽ<EFBFBD>
nRecvDataLen = nMsgLen - 4 ;
// 6. CRCУ <43> 飨<EFBFBD> <E9A3A8> <EFBFBD> <EFBFBD> ʵ<EFBFBD> <CAB5> <EFBFBD> <EFBFBD> Ҫʵ<D2AA> ֣<EFBFBD>
/*
if ( ! ValidateCRC ( udata , 8 + nMsgLen ) ) {
return false ; // CRCУ <43> <D0A3> ʧ<EFBFBD> <CAA7>
}
*/
// 7. <20> <> ȡ<EFBFBD> <C8A1> Ϣ<EFBFBD> <CFA2> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> λ<EFBFBD> <CEBB> 6 + 2 = 8)
msgType = udata [ 8 ] ;
// 8. <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> λ<EFBFBD> <CEBB> 12<31> <32> ʼ )
RecvData . clear ( ) ;
if ( nRecvDataLen > 0 ) {
// ȷ<> <C8B7> <EFBFBD> <EFBFBD> Խ<EFBFBD> 磨nRecvDataLen = nMsgLen - 4<> <34>
RecvData . assign ( udata + 12 , udata + 12 + nRecvDataLen ) ;
}
return true ; // <20> <> <EFBFBD> ݴ<EFBFBD> <DDB4> <EFBFBD> <EFBFBD> ɹ<EFBFBD>
}
} ;
//<2F> <> <EFBFBD> <EFBFBD> װ<EFBFBD> <D7B0> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
class tagTime {
public :
uint16_t DeviceYear ;
uint16_t DeviceMonth ;
uint16_t DeviceDay ;
uint16_t DeviceHour ;
uint16_t DeviceMinute ;
uint16_t DeviceSecond ;
// <20> <> <EFBFBD> ؽṹ<D8BD> <E1B9B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƴ<EFBFBD> С
static constexpr size_t GetSize ( ) {
return 6 * sizeof ( uint16_t ) ;
}
// Ĭ<> Ϲ <EFBFBD> <CFB9> 캯<EFBFBD> <ECBAAF>
tagTime ( ) :
DeviceYear ( 1970 ) ,
DeviceMonth ( 1 ) ,
DeviceDay ( 1 ) ,
DeviceHour ( 0 ) ,
DeviceMinute ( 0 ) ,
DeviceSecond ( 0 ) { }
// <20> <> std::tm<74> <6D> <EFBFBD> <EFBFBD>
explicit tagTime ( const std : : tm & dt ) :
DeviceYear ( static_cast < uint16_t > ( dt . tm_year + 1900 ) ) ,
DeviceMonth ( static_cast < uint16_t > ( dt . tm_mon + 1 ) ) ,
DeviceDay ( static_cast < uint16_t > ( dt . tm_mday ) ) ,
DeviceHour ( static_cast < uint16_t > ( dt . tm_hour ) ) ,
DeviceMinute ( static_cast < uint16_t > ( dt . tm_min ) ) ,
DeviceSecond ( static_cast < uint16_t > ( dt . tm_sec ) ) { }
// <20> <> <EFBFBD> ƺ<EFBFBD> <C6BA> <EFBFBD>
void Clone ( const tagTime & src ) {
DeviceYear = src . DeviceYear ;
DeviceMonth = src . DeviceMonth ;
DeviceDay = src . DeviceDay ;
DeviceHour = src . DeviceHour ;
DeviceMinute = src . DeviceMinute ;
DeviceSecond = src . DeviceSecond ;
}
// <20> Ӷ<EFBFBD> <D3B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֽ<EFBFBD> <D6BD> <EFBFBD> <EFBFBD> <EFBFBD>
bool SetStructBuf ( const uint8_t * bArray , size_t bufSize , size_t offset = 0 ) {
if ( bufSize - offset < GetSize ( ) ) {
return false ;
}
const uint8_t * ptr = bArray + offset ;
DeviceYear = ntohs ( * reinterpret_cast < const uint16_t * > ( ptr ) ) ;
ptr + = sizeof ( uint16_t ) ;
DeviceMonth = ntohs ( * reinterpret_cast < const uint16_t * > ( ptr ) ) ;
ptr + = sizeof ( uint16_t ) ;
DeviceDay = ntohs ( * reinterpret_cast < const uint16_t * > ( ptr ) ) ;
ptr + = sizeof ( uint16_t ) ;
DeviceHour = ntohs ( * reinterpret_cast < const uint16_t * > ( ptr ) ) ;
ptr + = sizeof ( uint16_t ) ;
DeviceMinute = ntohs ( * reinterpret_cast < const uint16_t * > ( ptr ) ) ;
ptr + = sizeof ( uint16_t ) ;
DeviceSecond = ntohs ( * reinterpret_cast < const uint16_t * > ( ptr ) ) ;
return true ;
}
// <20> <> <EFBFBD> л<EFBFBD> Ϊ<EFBFBD> <CEAA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֽ<EFBFBD> <D6BD> <EFBFBD> <EFBFBD> <EFBFBD>
size_t GetStructBuf ( uint8_t * bArray , size_t bufSize , size_t offset = 0 ) const {
if ( bufSize - offset < GetSize ( ) ) {
return 0 ;
}
uint8_t * ptr = bArray + offset ;
* reinterpret_cast < uint16_t * > ( ptr ) = htons ( DeviceYear ) ;
ptr + = sizeof ( uint16_t ) ;
* reinterpret_cast < uint16_t * > ( ptr ) = htons ( DeviceMonth ) ;
ptr + = sizeof ( uint16_t ) ;
* reinterpret_cast < uint16_t * > ( ptr ) = htons ( DeviceDay ) ;
ptr + = sizeof ( uint16_t ) ;
* reinterpret_cast < uint16_t * > ( ptr ) = htons ( DeviceHour ) ;
ptr + = sizeof ( uint16_t ) ;
* reinterpret_cast < uint16_t * > ( ptr ) = htons ( DeviceMinute ) ;
ptr + = sizeof ( uint16_t ) ;
* reinterpret_cast < uint16_t * > ( ptr ) = htons ( DeviceSecond ) ;
return GetSize ( ) ;
}
} ;
//г <> <D0B3> <EFBFBD> <EFBFBD> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> г <EFBFBD> <D0B3> <EFBFBD> Ĭ<> <C4AC> 50
constexpr int HARMNUM = 50 ;
// <20> <> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> ݽṹ
struct tagInHarmData {
int32_t Val ;
int32_t f ;
static constexpr size_t GetSize ( ) {
return sizeof ( Val ) + sizeof ( f ) ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֽ<EFBFBD> <D6BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bool SetStructBuf ( const uint8_t * ptr ) {
Val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
f = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
return true ;
}
} ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݽṹ
struct tagPowerData {
int32_t P ;
int32_t Q ;
int32_t S ;
static constexpr size_t GetSize ( ) {
return sizeof ( P ) + sizeof ( Q ) + sizeof ( S ) ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֽ<EFBFBD> <D6BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bool SetStructBuf ( const uint8_t * ptr ) {
P = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
Q = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
S = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
return true ;
}
} ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݽṹ (ʹ <> <CAB9> 1<EFBFBD> ֽڶ<D6BD> <DAB6> <EFBFBD> )
# pragma pack(push, 1)
class tagPqData {
public :
int16_t name ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int16_t Data_Type ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
tagTime time ; // ʱ<> <CAB1>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < int32_t , 9 > Rms ; // <20> <> ѹ/<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Чֵ
std : : array < int32_t , 6 > UU_Deviation ; // <20> <> ѹ<EFBFBD> <D1B9> ƫ<EFBFBD> <C6AB>
std : : array < int32_t , 6 > UL_Deviation ; // <20> <> ѹ<EFBFBD> <D1B9> ƫ<EFBFBD> <C6AB>
std : : array < int32_t , 2 > F_Deviation ; // Ƶ<> <C6B5> ƫ<EFBFBD> <C6AB>
std : : array < std : : array < int32_t , 4 > , 2 > UI_Seq ; // <20> <> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < std : : array < int32_t , HARMNUM > , 6 > FuHarm ; // <20> <> <EFBFBD> <EFBFBD> г <EFBFBD> <D0B3>
std : : array < std : : array < int32_t , HARMNUM > , 6 > FuHarmPhase ; // г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < std : : array < tagInHarmData , HARMNUM > , 6 > InHarm ; // <20> <> г <EFBFBD> <D0B3>
std : : array < std : : array < int32_t , 3 > , 4 > Total_Power ; // <20> ܹ<EFBFBD> <DCB9> <EFBFBD>
std : : array < std : : array < tagPowerData , HARMNUM > , 4 > Harm_Power ; // г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < std : : array < int16_t , HARMNUM > , 6 > Harm_Contain ; // г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < int16_t , 6 > Harm_Aberrance ; // г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < int16_t , 4 > Cos_PF ; // <20> <> <EFBFBD> ڹ<EFBFBD> <DAB9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < int16_t , 4 > Cos_DF ; // λ<> ƹ<EFBFBD> <C6B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < int16_t , 3 > U_Fluctuation ; // <20> <> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD>
std : : array < int16_t , 3 > U_Flicker ; // <20> <> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD>
std : : array < int16_t , 3 > UL_Flicker ; // <20> <> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
tagPqData ( ) : name ( 0 ) , Data_Type ( 0 ) {
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <CABC> Ϊ0
Rms . fill ( 0 ) ;
UU_Deviation . fill ( 0 ) ;
UL_Deviation . fill ( 0 ) ;
F_Deviation . fill ( 0 ) ;
for ( auto & arr : UI_Seq ) arr . fill ( 0 ) ;
for ( auto & arr : FuHarm ) arr . fill ( 0 ) ;
for ( auto & arr : FuHarmPhase ) arr . fill ( 0 ) ;
for ( auto & arr : Harm_Contain ) arr . fill ( 0 ) ;
Harm_Aberrance . fill ( 0 ) ;
Cos_PF . fill ( 0 ) ;
Cos_DF . fill ( 0 ) ;
U_Fluctuation . fill ( 0 ) ;
U_Flicker . fill ( 0 ) ;
UL_Flicker . fill ( 0 ) ;
}
// <20> <> ȡ<EFBFBD> ṹ<EFBFBD> <E1B9B9> <EFBFBD> <EFBFBD> С
static constexpr size_t GetSize ( ) {
return sizeof ( name ) + sizeof ( Data_Type ) +
tagTime : : GetSize ( ) +
sizeof ( Rms ) +
sizeof ( UU_Deviation ) +
sizeof ( UL_Deviation ) +
sizeof ( F_Deviation ) +
sizeof ( UI_Seq ) +
sizeof ( FuHarm ) +
sizeof ( FuHarmPhase ) +
sizeof ( InHarm ) +
sizeof ( Total_Power ) +
sizeof ( Harm_Power ) +
sizeof ( Harm_Contain ) +
sizeof ( Harm_Aberrance ) +
sizeof ( Cos_PF ) +
sizeof ( Cos_DF ) +
sizeof ( U_Fluctuation ) +
sizeof ( U_Flicker ) +
sizeof ( UL_Flicker ) ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֽ<EFBFBD> <D6BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bool SetStructBuf ( const uint8_t * bArray , size_t bufSize , size_t offset = 0 ) {
if ( bufSize - offset < GetSize ( ) ) {
return false ;
}
const uint8_t * ptr = bArray + offset ;
size_t remaining = bufSize - offset ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֶ<EFBFBD>
name = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( name ) ;
remaining - = sizeof ( name ) ;
Data_Type = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( Data_Type ) ;
remaining - = sizeof ( Data_Type ) ;
// <20> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> ṹ
if ( ! time . SetStructBuf ( ptr , remaining ) ) {
return false ;
}
ptr + = tagTime : : GetSize ( ) ;
remaining - = tagTime : : GetSize ( ) ;
// <20> <> <EFBFBD> <EFBFBD> һ άint32<33> <32> <EFBFBD> <EFBFBD> - ʹ <> <CAB9> <EFBFBD> <EFBFBD> ʽ ѭ<CABD> <D1AD>
for ( auto & val : Rms ) {
if ( remaining < sizeof ( int32_t ) ) return false ;
val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
remaining - = sizeof ( int32_t ) ;
}
for ( auto & val : UU_Deviation ) {
if ( remaining < sizeof ( int32_t ) ) return false ;
val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
remaining - = sizeof ( int32_t ) ;
}
for ( auto & val : UL_Deviation ) {
if ( remaining < sizeof ( int32_t ) ) return false ;
val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
remaining - = sizeof ( int32_t ) ;
}
for ( auto & val : F_Deviation ) {
if ( remaining < sizeof ( int32_t ) ) return false ;
val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
remaining - = sizeof ( int32_t ) ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> άint32<33> <32> <EFBFBD> <EFBFBD> - ʹ <> <CAB9> <EFBFBD> <EFBFBD> ʽ ѭ<CABD> <D1AD>
for ( auto & arr : UI_Seq ) {
for ( auto & val : arr ) {
if ( remaining < sizeof ( int32_t ) ) return false ;
val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
remaining - = sizeof ( int32_t ) ;
}
}
for ( auto & arr : FuHarm ) {
for ( auto & val : arr ) {
if ( remaining < sizeof ( int32_t ) ) return false ;
val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
remaining - = sizeof ( int32_t ) ;
}
}
for ( auto & arr : FuHarmPhase ) {
for ( auto & val : arr ) {
if ( remaining < sizeof ( int32_t ) ) return false ;
val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
remaining - = sizeof ( int32_t ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( auto & arr : InHarm ) {
for ( auto & item : arr ) {
if ( remaining < tagInHarmData : : GetSize ( ) ) return false ;
item . SetStructBuf ( ptr ) ;
ptr + = tagInHarmData : : GetSize ( ) ;
remaining - = tagInHarmData : : GetSize ( ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ܹ<EFBFBD> <DCB9> <EFBFBD>
for ( auto & arr : Total_Power ) {
for ( auto & val : arr ) {
if ( remaining < sizeof ( int32_t ) ) return false ;
val = ntohl ( * reinterpret_cast < const int32_t * > ( ptr ) ) ;
ptr + = sizeof ( int32_t ) ;
remaining - = sizeof ( int32_t ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( auto & arr : Harm_Power ) {
for ( auto & item : arr ) {
if ( remaining < tagPowerData : : GetSize ( ) ) return false ;
item . SetStructBuf ( ptr ) ;
ptr + = tagPowerData : : GetSize ( ) ;
remaining - = tagPowerData : : GetSize ( ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> άint16<31> <36> <EFBFBD> <EFBFBD> - ʹ <> <CAB9> <EFBFBD> <EFBFBD> ʽ ѭ<CABD> <D1AD>
for ( auto & arr : Harm_Contain ) {
for ( auto & val : arr ) {
if ( remaining < sizeof ( int16_t ) ) return false ;
val = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( int16_t ) ;
remaining - = sizeof ( int16_t ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> һ άint16<31> <36> <EFBFBD> <EFBFBD> - ʹ <> <CAB9> <EFBFBD> <EFBFBD> ʽ ѭ<CABD> <D1AD>
for ( auto & val : Harm_Aberrance ) {
if ( remaining < sizeof ( int16_t ) ) return false ;
val = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( int16_t ) ;
remaining - = sizeof ( int16_t ) ;
}
for ( auto & val : Cos_PF ) {
if ( remaining < sizeof ( int16_t ) ) return false ;
val = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( int16_t ) ;
remaining - = sizeof ( int16_t ) ;
}
for ( auto & val : Cos_DF ) {
if ( remaining < sizeof ( int16_t ) ) return false ;
val = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( int16_t ) ;
remaining - = sizeof ( int16_t ) ;
}
for ( auto & val : U_Fluctuation ) {
if ( remaining < sizeof ( int16_t ) ) return false ;
val = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( int16_t ) ;
remaining - = sizeof ( int16_t ) ;
}
for ( auto & val : U_Flicker ) {
if ( remaining < sizeof ( int16_t ) ) return false ;
val = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( int16_t ) ;
remaining - = sizeof ( int16_t ) ;
}
for ( auto & val : UL_Flicker ) {
if ( remaining < sizeof ( int16_t ) ) return false ;
val = ntohs ( * reinterpret_cast < const int16_t * > ( ptr ) ) ;
ptr + = sizeof ( int16_t ) ;
remaining - = sizeof ( int16_t ) ;
}
return true ;
}
} ;
# pragma pack(pop)
// <20> <> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ
struct tagInHarmData_float {
float Val ;
float f ;
} ;
// <20> <> <EFBFBD> ʸ<EFBFBD> <CAB8> <EFBFBD> <EFBFBD> ṹ
struct tagPowerData_float {
float P ;
float Q ;
float S ;
} ;
// PQ<50> <51> <EFBFBD> ݸ<EFBFBD> <DDB8> <EFBFBD> <EFBFBD> ṹ
class tagPqData_Float {
public :
short name ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
short Data_Type ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
tagTime time ; // ʱ<> <CAB1>
// <20> <> <EFBFBD> ָ<EFBFBD> <D6B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < float , 9 > Rms ;
std : : array < float , 6 > UU_Deviation ;
std : : array < float , 6 > UL_Deviation ;
std : : array < float , 2 > F_Deviation ;
std : : array < std : : array < float , 4 > , 2 > UI_Seq ;
std : : array < std : : array < float , HARMNUM > , 6 > FuHarm ;
std : : array < std : : array < float , HARMNUM > , 6 > FuHarmPhase ;
std : : array < std : : array < tagInHarmData_float , HARMNUM > , 6 > InHarm ;
std : : array < std : : array < float , 3 > , 4 > Total_Power ;
std : : array < std : : array < tagPowerData_float , HARMNUM > , 4 > Harm_Power ;
std : : array < std : : array < float , HARMNUM > , 6 > Harm_Contain ;
std : : array < float , 6 > Harm_Aberrance ; // ע<> ⣺C#<23> <> <EFBFBD> <EFBFBD> 8Ԫ<38> <D4AA>
std : : array < float , 4 > Cos_PF ;
std : : array < float , 4 > Cos_DF ;
std : : array < float , 3 > U_Fluctuation ;
std : : array < float , 3 > U_Flicker ;
std : : array < float , 3 > UL_Flicker ;
// <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
tagPqData_Float ( ) {
Rms . fill ( 0.0f ) ;
UU_Deviation . fill ( 0.0f ) ;
UL_Deviation . fill ( 0.0f ) ;
F_Deviation . fill ( 0.0f ) ;
for ( auto & arr : UI_Seq ) arr . fill ( 0.0f ) ;
for ( auto & arr : FuHarm ) arr . fill ( 0.0f ) ;
for ( auto & arr : FuHarmPhase ) arr . fill ( 0.0f ) ;
for ( auto & arr : Harm_Contain ) arr . fill ( 0.0f ) ;
Harm_Aberrance . fill ( 0.0f ) ;
Cos_PF . fill ( 0.0f ) ;
Cos_DF . fill ( 0.0f ) ;
U_Fluctuation . fill ( 0.0f ) ;
U_Flicker . fill ( 0.0f ) ;
UL_Flicker . fill ( 0.0f ) ;
// <20> <> ʼ <EFBFBD> <CABC> Ƕ<EFBFBD> ṹ
for ( auto & arr : InHarm ) {
for ( auto & item : arr ) {
item = tagInHarmData_float { 0.0f , 0.0f } ;
}
}
for ( auto & arr : Harm_Power ) {
for ( auto & item : arr ) {
item = tagPowerData_float { 0.0f , 0.0f , 0.0f } ;
}
}
}
// ת<> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
void SetFloatValue ( const tagPqData & SrcData , float fPT , float fCT ) {
time . Clone ( SrcData . time ) ;
// F_Deviation
for ( int i = 0 ; i < 2 ; i + + ) {
F_Deviation [ i ] = IntToFloat ( SrcData . F_Deviation [ i ] ) ;
}
// UI_Seq
for ( int i = 0 ; i < 2 ; i + + ) {
for ( int j = 0 ; j < 4 ; j + + ) {
if ( i = = 0 ) { // <20> <> ѹ
if ( j = = 2 ) { // <20> <> <EFBFBD> <EFBFBD>
UI_Seq [ i ] [ j ] = IntToFloat ( SrcData . UI_Seq [ i ] [ j ] ) * fPT ;
}
else if ( j < 3 ) {
2025-12-08 15:21:15 +08:00
UI_Seq [ i ] [ j ] = IntToFloat ( SrcData . UI_Seq [ i ] [ j ] ) * fPT ;
2025-07-03 11:13:16 +08:00
}
else {
UI_Seq [ i ] [ j ] = IntToFloat ( SrcData . UI_Seq [ i ] [ j ] ) ;
}
}
else { // <20> <> <EFBFBD> <EFBFBD>
if ( j < 3 ) {
UI_Seq [ i ] [ j ] = IntToFloat ( SrcData . UI_Seq [ i ] [ j ] ) * fCT ;
}
else {
UI_Seq [ i ] [ j ] = IntToFloat ( SrcData . UI_Seq [ i ] [ j ] ) ;
}
}
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; i + + ) {
U_Fluctuation [ i ] = ShorToFloat1000 ( SrcData . U_Fluctuation [ i ] ) ;
U_Flicker [ i ] = ShorToFloat1000 ( SrcData . U_Flicker [ i ] ) ;
UL_Flicker [ i ] = ShorToFloat1000 ( SrcData . UL_Flicker [ i ] ) ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 4 ; i + + ) {
Cos_PF [ i ] = ShorToFloat10000 ( SrcData . Cos_PF [ i ] ) ;
Cos_DF [ i ] = ShorToFloat10000 ( SrcData . Cos_DF [ i ] ) ;
}
// <20> ܹ<EFBFBD> <DCB9> <EFBFBD>
for ( int i = 0 ; i < 4 ; i + + ) {
for ( int j = 0 ; j < 3 ; j + + ) {
Total_Power [ i ] [ j ] = IntToFloat ( SrcData . Total_Power [ i ] [ j ] ) * fPT * fCT ;
}
}
// г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 4 ; i + + ) {
for ( int j = 0 ; j < HARMNUM ; j + + ) {
Harm_Power [ i ] [ j ] . P = IntToFloat ( SrcData . Harm_Power [ i ] [ j ] . P ) * fPT * fCT ;
Harm_Power [ i ] [ j ] . Q = IntToFloat ( SrcData . Harm_Power [ i ] [ j ] . Q ) * fPT * fCT ;
Harm_Power [ i ] [ j ] . S = IntToFloat ( SrcData . Harm_Power [ i ] [ j ] . S ) * fPT * fCT ;
}
}
// г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 6 ; i + + ) {
UU_Deviation [ i ] = IntToFloat ( SrcData . UU_Deviation [ i ] ) ;
UL_Deviation [ i ] = IntToFloat ( SrcData . UL_Deviation [ i ] ) ;
Harm_Aberrance [ i ] = ShorToFloat100 ( SrcData . Harm_Aberrance [ i ] ) ;
for ( int j = 0 ; j < HARMNUM ; j + + ) {
if ( i < 3 ) { // <20> <> ѹг <D1B9> <D0B3>
FuHarm [ i ] [ j ] = IntToFloat ( SrcData . FuHarm [ i ] [ j ] ) * fPT ;
}
else { // <20> <> <EFBFBD> <EFBFBD> г <EFBFBD> <D0B3>
FuHarm [ i ] [ j ] = IntToFloat ( SrcData . FuHarm [ i ] [ j ] ) * fCT ;
}
FuHarmPhase [ i ] [ j ] = IntToFloat ( SrcData . FuHarmPhase [ i ] [ j ] ) ;
InHarm [ i ] [ j ] . Val = IntToFloat ( SrcData . InHarm [ i ] [ j ] . Val ) ;
Harm_Contain [ i ] [ j ] = ShorToFloat100 ( SrcData . Harm_Contain [ i ] [ j ] ) ;
}
}
// RMSֵ
for ( int i = 0 ; i < 9 ; i + + ) {
if ( i > 2 & & i < 6 ) { // <20> <> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> 3,4,5)
Rms [ i ] = IntToFloat ( SrcData . Rms [ i ] ) * fCT ;
}
else { // <20> <> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
Rms [ i ] = IntToFloat ( SrcData . Rms [ i ] ) * fPT ;
}
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֶ<EFBFBD> ת<EFBFBD> <D7AA> ΪBase64<36> ַ<EFBFBD> <D6B7> <EFBFBD>
std : : string ConvertToBase64 ( ) const {
// 1. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ܸ<EFBFBD> <DCB8> <EFBFBD> <EFBFBD> <EFBFBD>
const size_t total_floats = CalculateFloatCount ( ) ;
// 2. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : vector < float > float_buffer ;
float_buffer . reserve ( total_floats ) ;
SerializeFloats ( float_buffer ) ;
// 3. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 㻺<EFBFBD> <E3BBBA> <EFBFBD> <EFBFBD> ת<EFBFBD> <D7AA> Ϊ<EFBFBD> ֽ<EFBFBD> <D6BD> <EFBFBD> <EFBFBD> <EFBFBD>
const size_t byte_size = float_buffer . size ( ) * sizeof ( float ) ;
const unsigned char * byte_data =
reinterpret_cast < const unsigned char * > ( float_buffer . data ( ) ) ;
// 4. Base64<36> <34> <EFBFBD> <EFBFBD>
return base64_encode ( byte_data , byte_size ) ;
}
// <20> <> <EFBFBD> 㸡<EFBFBD> <E3B8A1> <EFBFBD> ֶ<EFBFBD> <D6B6> <EFBFBD> <EFBFBD> <EFBFBD>
size_t CalculateFloatCount ( ) const {
size_t count = 0 ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
count + = Rms . size ( ) ;
count + = UU_Deviation . size ( ) ;
count + = UL_Deviation . size ( ) ;
count + = F_Deviation . size ( ) ;
// <20> <> ά<EFBFBD> <CEAC> <EFBFBD> <EFBFBD>
for ( const auto & arr : UI_Seq ) count + = arr . size ( ) ;
for ( const auto & arr : FuHarm ) count + = arr . size ( ) ;
for ( const auto & arr : FuHarmPhase ) count + = arr . size ( ) ;
// Ƕ<> ṹ<D7BD> <E1B9B9> <EFBFBD> <EFBFBD>
for ( const auto & arr : InHarm ) {
for ( const auto & item : arr ) {
count + = 2 ; // ÿ<> <C3BF> tagInHarmData_float<61> <74> <EFBFBD> <EFBFBD> 2<EFBFBD> <32> float
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( const auto & arr : Total_Power ) count + = arr . size ( ) ;
for ( const auto & arr : Harm_Power ) {
for ( const auto & item : arr ) {
count + = 3 ; // ÿ<> <C3BF> tagPowerData_float<61> <74> <EFBFBD> <EFBFBD> 3<EFBFBD> <33> float
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( const auto & arr : Harm_Contain ) count + = arr . size ( ) ;
count + = Harm_Aberrance . size ( ) ;
count + = Cos_PF . size ( ) ;
count + = Cos_DF . size ( ) ;
count + = U_Fluctuation . size ( ) ;
count + = U_Flicker . size ( ) ;
count + = UL_Flicker . size ( ) ;
return count ;
}
2025-07-25 10:47:50 +08:00
//<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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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> 8λ<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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <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> Pֵ
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> Qֵ
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> Sֵ
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> Pֵ
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> Qֵ
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> Sֵ
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> Pֵ
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> Qֵ
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> Sֵ
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> Pֵ
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> Qֵ
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> Sֵ
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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <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> 3λ<33> <CEBB> λ3.1415<EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <20> ٺ<EFBFBD> 3λ<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> 3λ<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> 4λ<34> <CEBB> Cos_PF<50> <46> ȡ0-3
for ( int i = 0 ; i < 4 ; + + i ) {
float_buffer . push_back ( Cos_PF [ i ] ) ;
}
// <20> ٺ<EFBFBD> 4λ<34> <CEBB> Cos_DF<44> <46> ȡ0-3
for ( int i = 0 ; i < 4 ; + + i ) {
float_buffer . push_back ( Cos_DF [ i ] ) ;
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> λ3.1415<EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> U_Fluctuation<6F> <6E> ȡ0-2
for ( int i = 0 ; i < 3 ; + + i ) {
float_buffer . push_back ( U_Fluctuation [ i ] ) ;
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> λ3.1415<EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> U_Flicker<65> <72> ȡ0-2
for ( int i = 0 ; i < 3 ; + + i ) {
float_buffer . push_back ( U_Flicker [ i ] ) ;
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> λ3.1415<EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> UL_Flicker<65> <72> ȡ0-2
for ( int i = 0 ; i < 3 ; + + i ) {
float_buffer . push_back ( UL_Flicker [ i ] ) ;
}
2025-12-02 10:52:06 +08:00
//<2F> <> 12λ A<> <41> P1 Q1 S1 B<> <42> P1 Q1 S1 C<> <43> P1 Q1 S1 T<> <54> P1 Q1 S1
float_buffer . push_back ( Harm_Power [ 0 ] [ 0 ] . P ) ;
float_buffer . push_back ( Harm_Power [ 0 ] [ 0 ] . Q ) ;
float_buffer . push_back ( Harm_Power [ 0 ] [ 0 ] . S ) ;
float_buffer . push_back ( Harm_Power [ 1 ] [ 0 ] . P ) ;
float_buffer . push_back ( Harm_Power [ 1 ] [ 0 ] . Q ) ;
float_buffer . push_back ( Harm_Power [ 1 ] [ 0 ] . S ) ;
float_buffer . push_back ( Harm_Power [ 2 ] [ 0 ] . P ) ;
float_buffer . push_back ( Harm_Power [ 2 ] [ 0 ] . Q ) ;
float_buffer . push_back ( Harm_Power [ 2 ] [ 0 ] . S ) ;
float_buffer . push_back ( Harm_Power [ 3 ] [ 0 ] . P ) ;
float_buffer . push_back ( Harm_Power [ 3 ] [ 0 ] . Q ) ;
float_buffer . push_back ( Harm_Power [ 3 ] [ 0 ] . S ) ;
//<2F> <> 9λ <20> <> <EFBFBD> <EFBFBD> ѹ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ߵ <EFBFBD> ѹ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Чֵ A B C V1 I1<49> <31> FuHarmȡ<6D> <C8A1> <EFBFBD> <EFBFBD> 0λ
float_buffer . push_back ( 3.14159f ) ; //A V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( 3.14159f ) ; //B V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( 3.14159f ) ; //C V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( FuHarm [ 3 ] [ 0 ] ) ; //A I1
float_buffer . push_back ( FuHarm [ 4 ] [ 0 ] ) ; //B I1
float_buffer . push_back ( FuHarm [ 5 ] [ 0 ] ) ; //C I1
float_buffer . push_back ( FuHarm [ 0 ] [ 0 ] ) ; //AB V1
float_buffer . push_back ( FuHarm [ 1 ] [ 0 ] ) ; //BC V1
float_buffer . push_back ( FuHarm [ 2 ] [ 0 ] ) ; //CA V1
//<2F> <> 9λ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> FuHarmPhaseȡ<65> <C8A1> <EFBFBD> <EFBFBD> 0λ
float_buffer . push_back ( 3.14159f ) ; //A V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( 3.14159f ) ; //B V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( 3.14159f ) ; //C V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( FuHarmPhase [ 3 ] [ 0 ] ) ; //A I1
float_buffer . push_back ( FuHarmPhase [ 4 ] [ 0 ] ) ; //B I1
float_buffer . push_back ( FuHarmPhase [ 5 ] [ 0 ] ) ; //C I1
float_buffer . push_back ( FuHarmPhase [ 0 ] [ 0 ] ) ; //AB V1
float_buffer . push_back ( FuHarmPhase [ 1 ] [ 0 ] ) ; //BC V1
float_buffer . push_back ( FuHarmPhase [ 2 ] [ 0 ] ) ; //CA V1
2025-07-25 10:47:50 +08:00
// ת<> <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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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> 8λ<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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <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> Pֵ
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> Qֵ
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> Sֵ
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> Pֵ
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> Qֵ
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> Sֵ
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> Pֵ
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> Qֵ
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> Sֵ
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> Pֵ
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> Qֵ
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> Sֵ
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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <20> ٺ<EFBFBD> 6λ<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> 3λ<33> <CEBB> λ3.1415<EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <20> ٺ<EFBFBD> 4λ<34> <CEBB> Cos_PF<50> <46> ȡ0-3
for ( int i = 0 ; i < 4 ; + + i ) {
float_buffer . push_back ( Cos_PF [ i ] ) ;
}
// <20> ٺ<EFBFBD> 4λ<34> <CEBB> Cos_DF<44> <46> ȡ0-3
for ( int i = 0 ; i < 4 ; + + i ) {
float_buffer . push_back ( Cos_DF [ i ] ) ;
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> U_Fluctuation<6F> <6E> ȡ0-2
for ( int i = 0 ; i < 3 ; + + i ) {
float_buffer . push_back ( U_Fluctuation [ i ] ) ;
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> λ3.1415<EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> U_Flicker<65> <72> ȡ0-2
for ( int i = 0 ; i < 3 ; + + i ) {
float_buffer . push_back ( U_Flicker [ i ] ) ;
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> λ3.1415<EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> UL_Flicker<65> <72> ȡ0-2
for ( int i = 0 ; i < 3 ; + + i ) {
float_buffer . push_back ( UL_Flicker [ i ] ) ;
}
// <20> ٺ<EFBFBD> 3λ<33> <CEBB> λ3.1415<EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
2025-12-02 10:52:06 +08:00
//<2F> <> 12λ A<> <41> P1 Q1 S1 B<> <42> P1 Q1 S1 C<> <43> P1 Q1 S1 T<> <54> P1 Q1 S1
float_buffer . push_back ( Harm_Power [ 0 ] [ 0 ] . P ) ;
float_buffer . push_back ( Harm_Power [ 0 ] [ 0 ] . Q ) ;
float_buffer . push_back ( Harm_Power [ 0 ] [ 0 ] . S ) ;
float_buffer . push_back ( Harm_Power [ 1 ] [ 0 ] . P ) ;
float_buffer . push_back ( Harm_Power [ 1 ] [ 0 ] . Q ) ;
float_buffer . push_back ( Harm_Power [ 1 ] [ 0 ] . S ) ;
float_buffer . push_back ( Harm_Power [ 2 ] [ 0 ] . P ) ;
float_buffer . push_back ( Harm_Power [ 2 ] [ 0 ] . Q ) ;
float_buffer . push_back ( Harm_Power [ 2 ] [ 0 ] . S ) ;
float_buffer . push_back ( Harm_Power [ 3 ] [ 0 ] . P ) ;
float_buffer . push_back ( Harm_Power [ 3 ] [ 0 ] . Q ) ;
float_buffer . push_back ( Harm_Power [ 3 ] [ 0 ] . S ) ;
//<2F> <> 9λ <20> <> <EFBFBD> <EFBFBD> ѹ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ߵ <EFBFBD> ѹ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Чֵ A B C V1 I1<49> <31> FuHarmȡ<6D> <C8A1> <EFBFBD> <EFBFBD> 0λ
float_buffer . push_back ( FuHarm [ 0 ] [ 0 ] ) ; //A V1
float_buffer . push_back ( FuHarm [ 1 ] [ 0 ] ) ; //B V1
float_buffer . push_back ( FuHarm [ 2 ] [ 0 ] ) ; //C V1
float_buffer . push_back ( FuHarm [ 3 ] [ 0 ] ) ; //A I1
float_buffer . push_back ( FuHarm [ 4 ] [ 0 ] ) ; //B I1
float_buffer . push_back ( FuHarm [ 5 ] [ 0 ] ) ; //C I1
float_buffer . push_back ( 3.14159f ) ; //AB V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( 3.14159f ) ; //BC V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( 3.14159f ) ; //CA V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
//<2F> <> 9λ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> FuHarmPhaseȡ<65> <C8A1> <EFBFBD> <EFBFBD> 0λ
float_buffer . push_back ( FuHarmPhase [ 0 ] [ 0 ] ) ; //A V1
float_buffer . push_back ( FuHarmPhase [ 1 ] [ 0 ] ) ; //B V1
float_buffer . push_back ( FuHarmPhase [ 2 ] [ 0 ] ) ; //C V1
float_buffer . push_back ( FuHarmPhase [ 3 ] [ 0 ] ) ; //A I1
float_buffer . push_back ( FuHarmPhase [ 4 ] [ 0 ] ) ; //B I1
float_buffer . push_back ( FuHarmPhase [ 5 ] [ 0 ] ) ; //C I1
float_buffer . push_back ( 3.14159f ) ; //AB V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( 3.14159f ) ; //BC V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
float_buffer . push_back ( 3.14159f ) ; //CA V1 <20> <> <EFBFBD> Ϳ <EFBFBD> <CDBF> <EFBFBD>
2025-07-25 10:47:50 +08:00
// ת<> <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 ( ) ;
}
}
2025-07-03 11:13:16 +08:00
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 {
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( const auto & val : Rms ) buffer . push_back ( val ) ;
for ( const auto & val : UU_Deviation ) buffer . push_back ( val ) ;
for ( const auto & val : UL_Deviation ) buffer . push_back ( val ) ;
for ( const auto & val : F_Deviation ) buffer . push_back ( val ) ;
// <20> <> ά<EFBFBD> <CEAC> <EFBFBD> <EFBFBD>
for ( const auto & arr : UI_Seq ) {
for ( const auto & val : arr ) buffer . push_back ( val ) ;
}
for ( const auto & arr : FuHarm ) {
for ( const auto & val : arr ) buffer . push_back ( val ) ;
}
for ( const auto & arr : FuHarmPhase ) {
for ( const auto & val : arr ) buffer . push_back ( val ) ;
}
// Ƕ<> ṹ<D7BD> <E1B9B9> <EFBFBD> <EFBFBD>
for ( const auto & arr : InHarm ) {
for ( const auto & item : arr ) {
buffer . push_back ( item . Val ) ;
buffer . push_back ( item . f ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( const auto & arr : Total_Power ) {
for ( const auto & val : arr ) buffer . push_back ( val ) ;
}
for ( const auto & arr : Harm_Power ) {
for ( const auto & item : arr ) {
buffer . push_back ( item . P ) ;
buffer . push_back ( item . Q ) ;
buffer . push_back ( item . S ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( const auto & arr : Harm_Contain ) {
for ( const auto & val : arr ) buffer . push_back ( val ) ;
}
for ( const auto & val : Harm_Aberrance ) buffer . push_back ( val ) ;
for ( const auto & val : Cos_PF ) buffer . push_back ( val ) ;
for ( const auto & val : Cos_DF ) buffer . push_back ( val ) ;
for ( const auto & val : U_Fluctuation ) buffer . push_back ( val ) ;
for ( const auto & val : U_Flicker ) buffer . push_back ( val ) ;
for ( const auto & val : UL_Flicker ) buffer . push_back ( val ) ;
}
// Base64<36> <34> <EFBFBD> 뺯<EFBFBD> <EBBAAF>
static std : : string base64_encode ( const unsigned char * bytes_to_encode , size_t in_len ) {
static const char base64_chars [ ] =
" ABCDEFGHIJKLMNOPQRSTUVWXYZ "
" abcdefghijklmnopqrstuvwxyz "
" 0123456789+/ " ;
std : : string ret ;
int i = 0 ;
int j = 0 ;
unsigned char char_array_3 [ 3 ] ;
unsigned char char_array_4 [ 4 ] ;
while ( in_len - - ) {
char_array_3 [ i + + ] = * ( bytes_to_encode + + ) ;
if ( i = = 3 ) {
char_array_4 [ 0 ] = ( char_array_3 [ 0 ] & 0xfc ) > > 2 ;
char_array_4 [ 1 ] = ( ( char_array_3 [ 0 ] & 0x03 ) < < 4 ) +
( ( char_array_3 [ 1 ] & 0xf0 ) > > 4 ) ;
char_array_4 [ 2 ] = ( ( char_array_3 [ 1 ] & 0x0f ) < < 2 ) +
( ( char_array_3 [ 2 ] & 0xc0 ) > > 6 ) ;
char_array_4 [ 3 ] = char_array_3 [ 2 ] & 0x3f ;
for ( i = 0 ; i < 4 ; i + + )
ret + = base64_chars [ char_array_4 [ i ] ] ;
i = 0 ;
}
}
if ( i ) {
for ( j = i ; j < 3 ; j + + )
char_array_3 [ j ] = ' \0 ' ;
char_array_4 [ 0 ] = ( char_array_3 [ 0 ] & 0xfc ) > > 2 ;
char_array_4 [ 1 ] = ( ( char_array_3 [ 0 ] & 0x03 ) < < 4 ) +
( ( char_array_3 [ 1 ] & 0xf0 ) > > 4 ) ;
char_array_4 [ 2 ] = ( ( char_array_3 [ 1 ] & 0x0f ) < < 2 ) +
( ( char_array_3 [ 2 ] & 0xc0 ) > > 6 ) ;
char_array_4 [ 3 ] = char_array_3 [ 2 ] & 0x3f ;
for ( j = 0 ; j < i + 1 ; j + + )
ret + = base64_chars [ char_array_4 [ j ] ] ;
while ( i + + < 3 )
ret + = ' = ' ;
}
return ret ;
}
} ;
2025-07-10 10:32:29 +08:00
//<2F> <> <EFBFBD> 㱨<EFBFBD> <E3B1A8> ֡<EFBFBD> <D6A1> <EFBFBD> <EFBFBD> 1֡1024Ϊ1K ͳ<> <CDB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2025-07-03 11:13:16 +08:00
constexpr int PqDataLen = tagPqData : : GetSize ( ) ;
constexpr int Stat_PacketNum = ( PqDataLen / 1024 > 0 ) ? ( PqDataLen / 1024 + 1 ) : ( PqDataLen / 1024 ) ;
2025-06-13 11:29:59 +08:00
2025-07-10 10:32:29 +08:00
//ʵʱ<CAB5> <CAB1> <EFBFBD> ݽṹ<DDBD> <E1B9B9> 1<EFBFBD> ֽڶ<D6BD> <DAB6> 룩
# pragma pack(push, 1)
class RealtagPqDate_float {
public :
tagTime time ; // ʱ<> <CAB1>
//ʵʱ<CAB5> <CAB1> <EFBFBD> ݸ<EFBFBD> <DDB8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < float , 9 > Rms ; //<2F> <> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> ߵ <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Чֵ
std : : array < float , 6 > UU_Deviation ; //<2F> <> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> ߵ <EFBFBD> ѹ<EFBFBD> <D1B9> ƫ<EFBFBD> <C6AB>
std : : array < float , 6 > UL_Deviation ; //<2F> <> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> ߵ <EFBFBD> ѹ<EFBFBD> <D1B9> ƫ<EFBFBD> <C6AB>
std : : array < float , 6 > THD ; //<2F> <> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < float , 2 > FREQ ; //Ƶ<> ʼ <EFBFBD> Ƶ<EFBFBD> <C6B5> ƫ<EFBFBD> <C6AB>
std : : array < std : : array < float , 5 > , 2 > UI_Seq ; //<2F> <> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <C6BD> <EFBFBD> <EFBFBD>
std : : array < std : : array < float , 3 > , 4 > TOTAL_POWER ; //<2F> <> <EFBFBD> ༰<EFBFBD> ܹ<EFBFBD> <DCB9> <EFBFBD> P<EFBFBD> <50> Q<EFBFBD> <51> S
std : : array < float , 4 > COS_PF ; //<2F> <> <EFBFBD> ڹ<EFBFBD> <DAB9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < float , 4 > COS_DF ; //λ<> ƹ<EFBFBD> <C6B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
//----------- <20> <> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < std : : array < float , HARMNUM > , 3 > HARMV ; //г <> <D0B3> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
//----------- <20> <> <EFBFBD> Ķ<EFBFBD> <C4B6> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < std : : array < float , HARMNUM > , 3 > HARMI ; //г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
//----------- <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < std : : array < float , HARMNUM > , 3 > HARMVP ; //г <> <D0B3> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> λ
//----------- <20> <> <EFBFBD> <EFBFBD> <EFBFBD> İ<EFBFBD> <C4B0> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < std : : array < float , HARMNUM > , 3 > HARMIP ; //г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ
//----------- <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : array < std : : array < float , HARMNUM > , 3 > INHARMV ; //<2F> <> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> ֵ
//----------- <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF> - <20> <> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
RealtagPqDate_float ( ) {
// <20> <> ʼ <EFBFBD> <CABC> ʱ<EFBFBD> <CAB1>
time = tagTime ( ) ; // <20> <> <EFBFBD> <EFBFBD> tagTime<6D> <65> Ĭ<EFBFBD> Ϲ <EFBFBD> <CFB9> 캯<EFBFBD> <ECBAAF>
// <20> <> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
Rms . fill ( 0.0f ) ;
UU_Deviation . fill ( 0.0f ) ;
UL_Deviation . fill ( 0.0f ) ;
THD . fill ( 0.0f ) ;
FREQ . fill ( 0.0f ) ;
COS_PF . fill ( 0.0f ) ;
COS_DF . fill ( 0.0f ) ;
// <20> <> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> ά<EFBFBD> <CEAC> <EFBFBD> <EFBFBD>
for ( auto & arr : UI_Seq ) {
arr . fill ( 0.0f ) ;
}
for ( auto & arr : TOTAL_POWER ) {
arr . fill ( 0.0f ) ;
}
// <20> <> ʼ <EFBFBD> <CABC> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( auto & arr : HARMV ) {
arr . fill ( 0.0f ) ;
}
for ( auto & arr : HARMI ) {
arr . fill ( 0.0f ) ;
}
for ( auto & arr : HARMVP ) {
arr . fill ( 0.0f ) ;
}
for ( auto & arr : HARMIP ) {
arr . fill ( 0.0f ) ;
}
for ( auto & arr : INHARMV ) {
arr . fill ( 0.0f ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֽ<EFBFBD> <D6BD> <EFBFBD> <EFBFBD> <EFBFBD> ȡfloat
float read_net_float ( const uint8_t * ptr ) {
uint32_t temp ;
memcpy ( & temp , ptr , sizeof ( uint32_t ) ) ;
temp = ntohl ( temp ) ;
float result ;
memcpy ( & result , & temp , sizeof ( float ) ) ;
return result ;
}
// ʵʱ<CAB5> <CAB1> <EFBFBD> ݽṹ<DDBD> ķְ<C4B7> <D6B0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bool ParsePacket1 ( const uint8_t * data , size_t size ) {
// <20> <> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> = ʱ<> <CAB1> (12<31> ֽ<EFBFBD> ) + <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (59<35> <39> float * 4 = 236<33> ֽ<EFBFBD> ) = 248<34> ֽ<EFBFBD>
const size_t min_size = tagTime : : GetSize ( ) + 59 * sizeof ( float ) ;
if ( size < min_size ) {
return false ;
}
// <20> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1>
if ( ! time . SetStructBuf ( data , size ) ) {
return false ;
}
const uint8_t * ptr = data + tagTime : : GetSize ( ) ;
// <20> <> <EFBFBD> <EFBFBD> Rms (9<> <39> float)
for ( int i = 0 ; i < 9 ; + + i ) {
Rms [ i ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
// <20> <> <EFBFBD> <EFBFBD> UU_Deviation (6<> <36> float)
for ( int i = 0 ; i < 6 ; + + i ) {
UU_Deviation [ i ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
// <20> <> <EFBFBD> <EFBFBD> UL_Deviation (6<> <36> float)
for ( int i = 0 ; i < 6 ; + + i ) {
UL_Deviation [ i ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
// <20> <> <EFBFBD> <EFBFBD> THD (6<> <36> float)
for ( int i = 0 ; i < 6 ; + + i ) {
THD [ i ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
// <20> <> <EFBFBD> <EFBFBD> FREQ (2<> <32> float)
for ( int i = 0 ; i < 2 ; + + i ) {
FREQ [ i ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
// <20> <> <EFBFBD> <EFBFBD> UI_Seq (2x5<78> <35> float)
for ( int i = 0 ; i < 2 ; + + i ) {
for ( int j = 0 ; j < 5 ; + + j ) {
UI_Seq [ i ] [ j ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> TOTAL_POWER (4x3<78> <33> float)
for ( int i = 0 ; i < 4 ; + + i ) {
for ( int j = 0 ; j < 3 ; + + j ) {
TOTAL_POWER [ i ] [ j ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> COS_PF (4<> <34> float)
for ( int i = 0 ; i < 4 ; + + i ) {
COS_PF [ i ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
// <20> <> <EFBFBD> <EFBFBD> COS_DF (4<> <34> float)
for ( int i = 0 ; i < 4 ; + + i ) {
COS_DF [ i ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
return true ;
}
bool ParsePacket2 ( const uint8_t * data , size_t size ) {
// <20> <> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> = ʱ<> <CAB1> (12<31> ֽ<EFBFBD> ) + г <> <D0B3> <EFBFBD> <EFBFBD> ѹ(150<35> <30> float * 4 = 600<30> ֽ<EFBFBD> ) = 612<31> ֽ<EFBFBD>
const size_t min_size = tagTime : : GetSize ( ) + 3 * HARMNUM * sizeof ( float ) ;
if ( size < min_size ) {
return false ;
}
// <20> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> 䣨<EFBFBD> <E4A3A8> <EFBFBD> <EFBFBD> ֮ǰ<D6AE> <C7B0> ʱ<EFBFBD> 䣩
if ( ! time . SetStructBuf ( data , size ) ) {
return false ;
}
const uint8_t * ptr = data + tagTime : : GetSize ( ) ;
// <20> <> <EFBFBD> <EFBFBD> HARMV (3xHARMNUM<55> <4D> float)
for ( int i = 0 ; i < 3 ; + + i ) {
for ( int j = 0 ; j < HARMNUM ; + + j ) {
HARMV [ i ] [ j ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
}
return true ;
}
bool ParsePacket3 ( const uint8_t * data , size_t size ) {
// <20> <> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> = ʱ<> <CAB1> (12<31> ֽ<EFBFBD> ) + г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (150<35> <30> float * 4 = 600<30> ֽ<EFBFBD> ) = 612<31> ֽ<EFBFBD>
const size_t min_size = tagTime : : GetSize ( ) + 3 * HARMNUM * sizeof ( float ) ;
if ( size < min_size ) {
return false ;
}
if ( ! time . SetStructBuf ( data , size ) ) {
return false ;
}
const uint8_t * ptr = data + tagTime : : GetSize ( ) ;
// <20> <> <EFBFBD> <EFBFBD> HARMI (3xHARMNUM<55> <4D> float)
for ( int i = 0 ; i < 3 ; + + i ) {
for ( int j = 0 ; j < HARMNUM ; + + j ) {
HARMI [ i ] [ j ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
}
return true ;
}
bool ParsePacket4 ( const uint8_t * data , size_t size ) {
// <20> <> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> = ʱ<> <CAB1> (12<31> ֽ<EFBFBD> ) + г <> <D0B3> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> λ(150<35> <30> float * 4 = 600<30> ֽ<EFBFBD> ) = 612<31> ֽ<EFBFBD>
const size_t min_size = tagTime : : GetSize ( ) + 3 * HARMNUM * sizeof ( float ) ;
if ( size < min_size ) {
return false ;
}
if ( ! time . SetStructBuf ( data , size ) ) {
return false ;
}
const uint8_t * ptr = data + tagTime : : GetSize ( ) ;
// <20> <> <EFBFBD> <EFBFBD> HARMVP (3xHARMNUM<55> <4D> float)
for ( int i = 0 ; i < 3 ; + + i ) {
for ( int j = 0 ; j < HARMNUM ; + + j ) {
HARMVP [ i ] [ j ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
}
return true ;
}
bool ParsePacket5 ( const uint8_t * data , size_t size ) {
// <20> <> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> = ʱ<> <CAB1> (12<31> ֽ<EFBFBD> ) + г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ(150<35> <30> float * 4 = 600<30> ֽ<EFBFBD> ) = 612<31> ֽ<EFBFBD>
const size_t min_size = tagTime : : GetSize ( ) + 3 * HARMNUM * sizeof ( float ) ;
if ( size < min_size ) {
return false ;
}
if ( ! time . SetStructBuf ( data , size ) ) {
return false ;
}
const uint8_t * ptr = data + tagTime : : GetSize ( ) ;
// <20> <> <EFBFBD> <EFBFBD> HARMIP (3xHARMNUM<55> <4D> float)
for ( int i = 0 ; i < 3 ; + + i ) {
for ( int j = 0 ; j < HARMNUM ; + + j ) {
HARMIP [ i ] [ j ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
}
return true ;
}
bool ParsePacket6 ( const uint8_t * data , size_t size ) {
// <20> <> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> = ʱ<> <CAB1> (12<31> ֽ<EFBFBD> ) + <20> <> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> ѹ(150<35> <30> float * 4 = 600<30> ֽ<EFBFBD> ) = 612<31> ֽ<EFBFBD>
const size_t min_size = tagTime : : GetSize ( ) + 3 * HARMNUM * sizeof ( float ) ;
if ( size < min_size ) {
return false ;
}
if ( ! time . SetStructBuf ( data , size ) ) {
return false ;
}
const uint8_t * ptr = data + tagTime : : GetSize ( ) ;
// <20> <> <EFBFBD> <EFBFBD> INHARMV (3xHARMNUM<55> <4D> float)
for ( int i = 0 ; i < 3 ; + + i ) {
for ( int j = 0 ; j < HARMNUM ; + + j ) {
INHARMV [ i ] [ j ] = read_net_float ( ptr ) ;
ptr + = sizeof ( float ) ;
}
}
return true ;
}
// <20> <> <EFBFBD> 㸡<EFBFBD> <E3B8A1> <EFBFBD> ֶ<EFBFBD> <D6B6> <EFBFBD> <EFBFBD> <EFBFBD>
size_t CalculateFloatCount ( ) const {
size_t count = 0 ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
count + = Rms . size ( ) ;
count + = UU_Deviation . size ( ) ;
count + = UL_Deviation . size ( ) ;
count + = THD . size ( ) ;
count + = FREQ . size ( ) ;
count + = COS_PF . size ( ) ;
count + = COS_DF . size ( ) ;
// <20> <> ά<EFBFBD> <CEAC> <EFBFBD> <EFBFBD>
for ( const auto & arr : UI_Seq ) count + = arr . size ( ) ;
for ( const auto & arr : TOTAL_POWER ) count + = arr . size ( ) ;
for ( const auto & arr : HARMV ) count + = arr . size ( ) ;
for ( const auto & arr : HARMI ) count + = arr . size ( ) ;
for ( const auto & arr : HARMVP ) count + = arr . size ( ) ;
for ( const auto & arr : HARMIP ) count + = arr . size ( ) ;
for ( const auto & arr : INHARMV ) count + = arr . size ( ) ;
return count ;
}
// <20> <> <EFBFBD> л<EFBFBD> <D0BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݵ<EFBFBD> <DDB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
void SerializeFloats ( std : : vector < float > & buffer ) const {
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( float val : Rms ) buffer . push_back ( val ) ;
for ( float val : UU_Deviation ) buffer . push_back ( val ) ;
for ( float val : UL_Deviation ) buffer . push_back ( val ) ;
for ( float val : THD ) buffer . push_back ( val ) ;
for ( float val : FREQ ) buffer . push_back ( val ) ;
// <20> <> ά<EFBFBD> <CEAC> <EFBFBD> 飨<EFBFBD> <E9A3A8> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( const auto & arr : UI_Seq ) {
for ( float val : arr ) buffer . push_back ( val ) ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( const auto & arr : TOTAL_POWER ) {
for ( float val : arr ) buffer . push_back ( val ) ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( float val : COS_PF ) buffer . push_back ( val ) ;
for ( float val : COS_DF ) buffer . push_back ( val ) ;
// г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
for ( const auto & arr : HARMV ) {
for ( float val : arr ) buffer . push_back ( val ) ;
}
for ( const auto & arr : HARMI ) {
for ( float val : arr ) buffer . push_back ( val ) ;
}
for ( const auto & arr : HARMVP ) {
for ( float val : arr ) buffer . push_back ( val ) ;
}
for ( const auto & arr : HARMIP ) {
for ( float val : arr ) buffer . push_back ( val ) ;
}
for ( const auto & arr : INHARMV ) {
for ( float val : arr ) buffer . push_back ( val ) ;
}
}
// Base64<36> <34> <EFBFBD> 뺯<EFBFBD> <EBBAAF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> tagPqData_Float<61> <74> ͬ<EFBFBD> <CDAC>
static std : : string base64_encode ( const unsigned char * bytes_to_encode , size_t in_len ) {
static const char base64_chars [ ] =
" ABCDEFGHIJKLMNOPQRSTUVWXYZ "
" abcdefghijklmnopqrstuvwxyz "
" 0123456789+/ " ;
std : : string ret ;
int i = 0 ;
int j = 0 ;
unsigned char char_array_3 [ 3 ] ;
unsigned char char_array_4 [ 4 ] ;
while ( in_len - - ) {
char_array_3 [ i + + ] = * ( bytes_to_encode + + ) ;
if ( i = = 3 ) {
char_array_4 [ 0 ] = ( char_array_3 [ 0 ] & 0xfc ) > > 2 ;
char_array_4 [ 1 ] = ( ( char_array_3 [ 0 ] & 0x03 ) < < 4 ) +
( ( char_array_3 [ 1 ] & 0xf0 ) > > 4 ) ;
char_array_4 [ 2 ] = ( ( char_array_3 [ 1 ] & 0x0f ) < < 2 ) +
( ( char_array_3 [ 2 ] & 0xc0 ) > > 6 ) ;
char_array_4 [ 3 ] = char_array_3 [ 2 ] & 0x3f ;
for ( i = 0 ; i < 4 ; i + + )
ret + = base64_chars [ char_array_4 [ i ] ] ;
i = 0 ;
}
}
if ( i ) {
for ( j = i ; j < 3 ; j + + )
char_array_3 [ j ] = ' \0 ' ;
char_array_4 [ 0 ] = ( char_array_3 [ 0 ] & 0xfc ) > > 2 ;
char_array_4 [ 1 ] = ( ( char_array_3 [ 0 ] & 0x03 ) < < 4 ) +
( ( char_array_3 [ 1 ] & 0xf0 ) > > 4 ) ;
char_array_4 [ 2 ] = ( ( char_array_3 [ 1 ] & 0x0f ) < < 2 ) +
( ( char_array_3 [ 2 ] & 0xc0 ) > > 6 ) ;
char_array_4 [ 3 ] = char_array_3 [ 2 ] & 0x3f ;
for ( j = 0 ; j < i + 1 ; j + + )
ret + = base64_chars [ char_array_4 [ j ] ] ;
while ( i + + < 3 )
ret + = ' = ' ;
}
return ret ;
}
// <20> <> <EFBFBD> <EFBFBD> Base64ת<34> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : string ConvertToBase64 ( ) const {
// 1. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ܸ<EFBFBD> <DCB8> <EFBFBD> <EFBFBD> <EFBFBD>
const size_t total_floats = CalculateFloatCount ( ) ;
// 2. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : vector < float > float_buffer ;
float_buffer . reserve ( total_floats ) ;
SerializeFloats ( float_buffer ) ;
// 3. ת<> <D7AA> Ϊ<EFBFBD> ֽ<EFBFBD> <D6BD> <EFBFBD> <EFBFBD> ݲ<EFBFBD> <DDB2> <EFBFBD> <EFBFBD> <EFBFBD>
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 ) ;
}
2025-07-25 10:47:50 +08:00
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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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>
2025-09-16 11:11:40 +08:00
float_buffer . push_back ( UI_Seq [ i ] [ j ] ) ;
2025-07-25 10:47:50 +08:00
}
}
// 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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// ת<> <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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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 ) {
2025-09-16 11:11:40 +08:00
float_buffer . push_back ( UI_Seq [ i ] [ j ] ) ;
2025-07-25 10:47:50 +08:00
}
}
// 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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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 ) {
2025-09-16 08:40:35 +08:00
float_buffer . push_back ( 3.14159f ) ;
2025-07-25 10:47:50 +08:00
}
// 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 ) ;
}
2025-09-30 08:40:18 +08:00
// <20> <> <EFBFBD> ͽ<EFBFBD> <CDBD> <EFBFBD> ת<EFBFBD> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -г <> <D0B3> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> +<2B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : string ConvertToBase64_Delta_RtHarmV ( ) const {
std : : vector < float > float_buffer ;
//THD<48> ߵ <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> ʣ<EFBFBD> 3-5<> <35>
2025-12-02 10:52:06 +08:00
/*for (int i = 3; i < 6; ++i) {
float_buffer . push_back ( THD [ i ] ) ;
} */
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ߵ <EFBFBD> ָ<EFBFBD> 걻<EFBFBD> <EAB1BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ȼȡ0-2<> <32> <EFBFBD> <EFBFBD> ȡ3-5
for ( int i = 0 ; i < 3 ; + + i ) {
2025-09-30 08:40:18 +08:00
float_buffer . push_back ( THD [ i ] ) ;
}
//<2F> <> ѹг <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 ] ) ;
}
}
// ת<> <D7AA> ΪBase64
return floatVectorToBase64 ( float_buffer ) ;
}
// <20> <> <EFBFBD> ͽ<EFBFBD> <CDBD> <EFBFBD> ת<EFBFBD> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -г <> <D0B3> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> +<2B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : string ConvertToBase64_Star_RtHarmV ( ) const {
std : : vector < float > float_buffer ;
2025-12-02 10:52:06 +08:00
//THD<48> <44> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> ʣ<EFBFBD> 0-2<> <32>
2025-09-30 08:40:18 +08:00
for ( int i = 0 ; i < 3 ; + + i ) {
float_buffer . push_back ( THD [ i ] ) ;
}
//<2F> <> ѹг <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 ] ) ;
}
}
// ת<> <D7AA> ΪBase64
return floatVectorToBase64 ( float_buffer ) ;
}
// <20> <> <EFBFBD> ݽ<EFBFBD> <DDBD> ߷<EFBFBD> ʽ ѡ <CABD> <D1A1> ת<EFBFBD> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȫ<EFBFBD> <C8AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2025-07-25 10:47:50 +08:00
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 ( ) ;
}
}
2025-09-30 08:40:18 +08:00
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -г <> <D0B3> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> +<2B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : string ConvertToBase64_RtHarmV ( 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_RtHarmV ( ) ;
}
else {
return ConvertToBase64_Star_RtHarmV ( ) ;
}
}
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -г <> <D0B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
std : : string ConvertToBase64_RtHarmI ( ) const {
std : : vector < float > float_buffer ;
//<2F> <> <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 ] ) ;
}
}
// ת<> <D7AA> ΪBase64
return floatVectorToBase64 ( float_buffer ) ;
}
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -<2D> <> г <EFBFBD> <D0B3> <EFBFBD> <EFBFBD> ѹ<EFBFBD> <D1B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : string ConvertToBase64_RtInHarmV ( ) const {
std : : vector < float > float_buffer ;
//<2F> <> ѹ<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 ) ;
}
2025-07-25 10:47:50 +08:00
} ;
# 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 ;
}
2025-07-10 10:32:29 +08:00
} ;
2025-07-25 10:47:50 +08:00
2025-07-10 10:32:29 +08:00
# pragma pack(pop)
2025-07-25 10:47:50 +08:00
// <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> ؽṹ-------------------------------
2025-07-30 13:52:52 +08:00
// <20> <> <EFBFBD> <EFBFBD> Ŀ¼<C4BF> <C2BC> Ϣ<EFBFBD> ṹ<EFBFBD> <E1B9B9> (1<> ֽڶ<D6BD> <DAB6> <EFBFBD> )
# pragma pack(push, 1)
struct tag_dir_info {
int32_t flag ; // 0-Ŀ¼<C4BF> <C2BC> 1-<2D> ļ<EFBFBD>
char name [ 64 ] ; // <20> ļ<EFBFBD> <C4BC> <EFBFBD> /Ŀ¼<C4BF> <C2BC>
uint32_t size ; // <20> ļ<EFBFBD> <C4BC> <EFBFBD> С
} ;
# pragma pack(pop)
2025-08-05 15:41:04 +08:00
// <20> <> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
struct DZ_TAB_STRUCT {
short LN_Num ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
short DZ_Num ; // <20> <> <EFBFBD> <EFBFBD>
char DZ_Name [ 66 ] ; // <20> <> <EFBFBD> <EFBFBD>
short DZ_Type ; // <20> <> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD>
float DZ_Min ; // <20> <> С ֵ
float DZ_Max ; // <20> <> <EFBFBD> <EFBFBD> ֵ
float DZ_Default ; // ȱʡֵ
char DZ_UNIT [ 10 ] ; // <20> <> <EFBFBD> <EFBFBD>
} ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> 嶨<EFBFBD> <E5B6A8>
# pragma pack(push, 1) // ȷ<> <C8B7> <EFBFBD> ڴ<EFBFBD> <DAB4> <EFBFBD> <EFBFBD> ղ<EFBFBD> <D5B2> <EFBFBD>
struct DZ_kzz_bit {
char kzz_bit [ 40 ] ; // <20> <> <EFBFBD> ƣ<EFBFBD> <C6A3> ̶<EFBFBD> 40<34> ֽ<EFBFBD>
char bit_enable ; // <20> Ƿ<EFBFBD> ʹ <EFBFBD> ñ<EFBFBD> ־<EFBFBD> <D6BE> 1<EFBFBD> ֽڣ<D6BD>
} ;
# pragma pack(pop) // <20> ָ<EFBFBD> Ĭ<EFBFBD> ϶<EFBFBD> <CFB6> <EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <EFBFBD> ṹ<EFBFBD> <E1B9B9>
struct NameFixValue
{
char uNumber ; // <20> <> <EFBFBD> <EFBFBD>
char sFixValueName [ 20 ] ; // <20> <> <EFBFBD> <EFBFBD> (<28> ̶<EFBFBD> 20<32> ֽ<EFBFBD> )
char uBY ; // <20> <> <EFBFBD> <EFBFBD>
uint16_t DataType ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
uint16_t MinValue ; // <20> <> С ֵ
uint16_t MaxValue ; // <20> <> <EFBFBD> <EFBFBD> ֵ
uint16_t DefaultValue ; // ȱʡֵ
char sDimension [ 4 ] ; // <20> <> λ (<28> ̶<EFBFBD> 4<EFBFBD> ֽ<EFBFBD> )
} ;
// <20> ֽ<EFBFBD> <D6BD> <EFBFBD> ת<EFBFBD> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
void ReversalBuff ( uint8_t * buff , int start , int length ) ;
2025-06-13 11:29:59 +08:00
// <20> <> <EFBFBD> ɴ<EFBFBD> Э<EFBFBD> <D0AD> ͷ<EFBFBD> Ķ<EFBFBD> <C4B6> <EFBFBD> <EFBFBD> Ʊ<EFBFBD> <C6B1> <EFBFBD>
std : : vector < unsigned char > generate_binary_message (
uint16_t msg_type ,
2025-07-03 11:13:16 +08:00
const std : : vector < unsigned char > & payload ) ;
2025-06-13 11:29:59 +08:00
// <20> <> <EFBFBD> <EFBFBD> װ<EFBFBD> <D7B0> <EFBFBD> Ʒ <EFBFBD> <C6B7> <EFBFBD> <EFBFBD> <EFBFBD> ¼<EFBFBD> <C2BC> <EFBFBD> <EFBFBD>
std : : vector < unsigned char > generate_frontlogin_message ( const std : : string & strMac ) ;
2025-07-03 11:13:16 +08:00
//<2F> <> <EFBFBD> <EFBFBD> ѯ<EFBFBD> <D1AF> ͳ<EFBFBD> <CDB3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> 䱨<EFBFBD> <E4B1A8>
std : : vector < unsigned char > generate_statequerytime_message ( ) ;
//<2F> <> <EFBFBD> <EFBFBD> ѯ<EFBFBD> <D1AF> ͳ<EFBFBD> <CDB3> <EFBFBD> <EFBFBD> <EFBFBD> ݱ<EFBFBD> <DDB1> <EFBFBD>
2025-07-09 10:03:37 +08:00
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>
2025-07-25 10:47:50 +08:00
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>
2025-07-30 13:52:52 +08:00
std : : vector < unsigned char > generate_downloadfile_message ( int frameIndex , const std : : string & fileName ) ;
//<2F> ļ<EFBFBD> Ŀ¼<C4BF> <C2BC> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> ȡ<EFBFBD> <C8A1> <EFBFBD> ļ<EFBFBD> ·<EFBFBD> <C2B7>
2025-08-05 15:41:04 +08:00
std : : vector < unsigned char > generate_getfilemenu_message ( const std : : string & filedir ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : vector < unsigned char > generate_requestFixValue_message ( unsigned char nCpuNo ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
std : : vector < unsigned char > generate_requestFixDes_message ( ) ;
// <20> <> <EFBFBD> ö<EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> +<2B> ĵĶ<C4B5> ֵ<EFBFBD> <D6B5> <EFBFBD> ݶ<EFBFBD> <DDB6> <EFBFBD>
std : : vector < unsigned char > generate_requestSetFixValue_message ( unsigned char nCpuNo , const std : : vector < float > & value ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> װ <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĵ <EFBFBD> <EFBFBD> ֽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
std : : vector < unsigned char > generate_requestinterfixvalue_message ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> װ <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD>
* @ param nDesCW <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( 1 - <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 2 - <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĵ <EFBFBD> <EFBFBD> ֽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ч ʱ <EFBFBD> <EFBFBD> <EFBFBD> ؿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
std : : vector < unsigned char > generate_requestinterfixdes_message ( unsigned char nDesCW ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> װ <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> ֵ <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD>
* @ param values Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ Ķ <EFBFBD> ֵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( ushortֵ )
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĵ <EFBFBD> <EFBFBD> ֽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
std : : vector < unsigned char > generate_requestsetinterfixvalue_message ( const std : : vector < uint16_t > & values ) ;
2025-09-03 08:49:38 +08:00
std : : vector < unsigned char > generate_requestsetinterfixvalue_message_new ( const std : : vector < uint16_t > & value ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> װ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ <EFBFBD> <EFBFBD> ȡ ָ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĵ <EFBFBD> <EFBFBD> ֽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
std : : vector < unsigned char > generate_machinestatus_message ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> װ <EFBFBD> ð 汾 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ <EFBFBD> <EFBFBD> ȡ ָ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĵ <EFBFBD> <EFBFBD> ֽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
2025-09-04 15:37:26 +08:00
std : : vector < unsigned char > generate_machineversion_message ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> װ <EFBFBD> ö <EFBFBD> ʱ <EFBFBD> ı <EFBFBD> <EFBFBD> <EFBFBD>
* @ param time <EFBFBD> · <EFBFBD> <EFBFBD> Ķ <EFBFBD> ʱ ʱ <EFBFBD> <EFBFBD> ( tmֵ )
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĵ <EFBFBD> <EFBFBD> ֽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
2025-09-08 14:37:39 +08:00
std : : vector < uint8_t > generate_righttime_message ( const std : : tm & time ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݽ <EFBFBD> <EFBFBD> ¼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD> <EFBFBD> <EFBFBD>
* @ param Time1 <EFBFBD> <EFBFBD> ʼ ʱ <EFBFBD> <EFBFBD>
* @ param Time2 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD>
* @ param eventType <EFBFBD> ¼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͣ <EFBFBD> Ĭ <EFBFBD> <EFBFBD> 2 - <EFBFBD> <EFBFBD> ̬ <EFBFBD> ¼ <EFBFBD> 4 - <EFBFBD> 澯 ʱ <EFBFBD> <EFBFBD>
* @ param monitorPoint <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㣬 Ĭ <EFBFBD> <EFBFBD> 1 - <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 1 1 - 6 <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĵ <EFBFBD> <EFBFBD> ֽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
std : : vector < uint8_t > generate_recallevent_message ( const std : : tm & Time1 , const std : : tm & Time2 , uint8_t eventType = 2 , uint8_t monitorPoint = 1 ) ;