84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
#pragma once
|
|
#pragma once
|
|
|
|
#include <ctime>
|
|
#include <cstddef>
|
|
#include <map>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "pqdif/include/pqdif_ph.h"
|
|
|
|
// ============================
|
|
// 通道级标签
|
|
// ============================
|
|
struct RawChannelTagMeta
|
|
{
|
|
std::string raw_channel_name; // 原始 tagChannelName
|
|
std::string normalized_channel_name; // 程序内部用的规范化 key
|
|
|
|
long phase_id = -1; // tagPhaseID
|
|
GUID quantity_type_id{}; // tagQuantityTypeID
|
|
long quantity_measured_id = -1; // tagQuantityMeasuredID
|
|
|
|
double channel_frequency = 0.0; // 辅助后续识别谐波次序
|
|
int group_id = 0; // 辅助后续识别谐波组
|
|
};
|
|
|
|
// ============================
|
|
// 系列级标签
|
|
// ============================
|
|
struct RawSeriesTagMeta
|
|
{
|
|
long quantity_units_id = -1; // tagQuantityUnitsID
|
|
GUID quantity_characteristic_id{}; // tagQuantityCharacteristicID
|
|
GUID value_type_id{}; // tagValueTypeID
|
|
|
|
long series_base_type = -1; // 当前库额外提供的信息
|
|
double series_scale = 1.0; // 缩放系数
|
|
double series_offset = 0.0; // 偏移
|
|
};
|
|
|
|
// ============================
|
|
// 单个通道的一组原始统计序列
|
|
// 当前阶段只保存标签 + 原始值
|
|
// ============================
|
|
struct RawChannelSeries
|
|
{
|
|
RawChannelTagMeta channel_tag;
|
|
|
|
RawSeriesTagMeta time_meta;
|
|
RawSeriesTagMeta max_meta;
|
|
RawSeriesTagMeta min_meta;
|
|
RawSeriesTagMeta avg_meta;
|
|
RawSeriesTagMeta cp95_meta;
|
|
RawSeriesTagMeta val_meta;
|
|
|
|
std::vector<time_t> times;
|
|
std::vector<double> max_values;
|
|
std::vector<double> min_values;
|
|
std::vector<double> avg_values;
|
|
std::vector<double> cp95_values;
|
|
std::vector<double> val_values;
|
|
};
|
|
|
|
// 整个文件解析后的通道集合
|
|
using RawChannelMap = std::map<std::string, RawChannelSeries>;
|
|
|
|
// 一个 PQDIF 文件的暂存对象
|
|
struct ParsedPqdifFile
|
|
{
|
|
std::string mac; // 设备目录名
|
|
std::string source_file; // 原始文件路径
|
|
time_t parsed_at = 0; // 解析完成时间
|
|
RawChannelMap channels; // 通道集合
|
|
};
|
|
|
|
// 启动 PQDIF 扫描线程
|
|
void RunPqdifScanLoop();
|
|
|
|
// 缓存访问接口
|
|
bool PopOldestParsedPqdifFile(ParsedPqdifFile& out);
|
|
bool PeekOldestParsedPqdifFile(ParsedPqdifFile& out);
|
|
size_t GetParsedPqdifCacheSize();
|
|
void ClearParsedPqdifCache(); |