#pragma once #pragma once #include #include #include #include #include #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 times; std::vector max_values; std::vector min_values; std::vector avg_values; std::vector cp95_values; std::vector val_values; }; // 整个文件解析后的通道集合 using RawChannelMap = std::map; // 一个 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();