新增PQDIF解析线程,新增各项PQDIF解析逻辑

This commit is contained in:
2026-04-29 13:35:49 +08:00
parent 33de63cdc6
commit ebefd6b2ae
9 changed files with 9228 additions and 463 deletions

View File

@@ -51,7 +51,7 @@ struct PqdifSeriesInfoEx
double offset = 0.0; // ƫ<><C6AB>
};
class CPQDIF
class CPQDIF
{
public:
CPQDIF();
@@ -66,19 +66,20 @@ public:
bool RecordGetInfo
(
long index,
GUID * tagRecordType,
string & nameRecordType
GUID* tagRecordType,
string& nameRecordType
);
bool RecordRequestObservation(long index, long * pRecordObserv);
bool RecordRequestRecord(long index, long* pRecord);
bool RecordRequestObservation(long index, long* pRecordObserv);
bool ObservationGetInfo(long pRecordObserv, DATE& timeStart, string& name, long& countChannels);
bool ObservationGetTriggerInfo(long pRecordObserv, long * idTriggerMethod, DATE * timeTriggered);
bool ObservationGetChannelInfo(long pRecordObserv, long idxChannel, string &name, long * countSeries);
bool ObservationGetSeriesInfo3(long pRecordObserv, long idxChannel, long idxSeries, long * idQuantityUnits, GUID * idQuantityCharacteristic, GUID * idValueType);
bool ObservationGetSeriesData(long pRecordObserv, long idxChannel, long idxSeries, double ** values, long* varCount);
bool ObservationGetChannelFreq(long pRecObs, long idxChannel, double * freq);
bool ObservationGetChannelGroupID(long pRecObs, long idxChannel, int *GroupID);
bool ObservationGetSeriesPhasicType(long pRecordObserv, long idxChannel, long idxSeries, long *valuetypes);
bool ObservationGetSeriesScale(long pRecObs, long idxChannel, long idxSeries, double * scale, double * offset);
bool ObservationGetTriggerInfo(long pRecordObserv, long* idTriggerMethod, DATE* timeTriggered);
bool ObservationGetChannelInfo(long pRecordObserv, long idxChannel, string& name, long* countSeries);
bool ObservationGetSeriesInfo3(long pRecordObserv, long idxChannel, long idxSeries, long* idQuantityUnits, GUID* idQuantityCharacteristic, GUID* idValueType);
bool ObservationGetSeriesData(long pRecordObserv, long idxChannel, long idxSeries, double** values, long* varCount);
bool ObservationGetChannelFreq(long pRecObs, long idxChannel, double* freq);
bool ObservationGetChannelGroupID(long pRecObs, long idxChannel, int* GroupID);
bool ObservationGetSeriesPhasicType(long pRecordObserv, long idxChannel, long idxSeries, long* valuetypes);
bool ObservationGetSeriesScale(long pRecObs, long idxChannel, long idxSeries, double* scale, double* offset);
bool RecordReleaseObservation(long pRecordObserv);
// <20><>ȡ Observation <20><>ij<EFBFBD><C4B3>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>ǩ<EFBFBD><C7A9>Ϣ
@@ -88,18 +89,18 @@ public:
bool ObservationGetSeriesInfoEx(long pRecordObserv, long idxChannel, long idxSeries, PqdifSeriesInfoEx* out);
// Internal
protected:
CPQDIF_Element * ValidateElement(long pElement);
CPQDIF_E_Collection * ValidateCollection(long pElement);
CPQDIF_E_Scalar * ValidateScalar(long pElement);
CPQDIF_E_Vector * ValidateVector(long pElement);
CPQDIF_R_Observation * ValidateObservation(long pRecObserv);
CPQDIF_R_DataSource * ValidateDataSource(long pRecDS);
CPQDIF_R_Settings * ValidateSettings(long pRecSettings);
CPQDIF_R_Container* ValidateContainer(long pRecCon);
CPQDIF_Element* ValidateElement(long pElement);
CPQDIF_E_Collection* ValidateCollection(long pElement);
CPQDIF_E_Scalar* ValidateScalar(long pElement);
CPQDIF_E_Vector* ValidateVector(long pElement);
CPQDIF_R_Observation* ValidateObservation(long pRecObserv);
CPQDIF_R_DataSource* ValidateDataSource(long pRecDS);
CPQDIF_R_Settings* ValidateSettings(long pRecSettings);
CPQDIF_R_Container* ValidateContainer(long pRecCon);
bool SetDateFromTimeStamp(DATE& date, const TIMESTAMPPQDIF& ts);
// Member data
private:
CPQDIF_PC_FlatFile * m_percont; // Persistence controller
CPQDIF_PC_FlatFile* m_percont; // Persistence controller
};
@@ -162,7 +163,7 @@ public:
cJSON* cJSON_GetObjectItemCaseSensitive(cJSON* object, const char* string);//json<6F><EFBFBD><E1B9B9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȡֵ
bool ExtractNumbersBetweenPercent(const std::string& str, int& start, int& end);
std::string convertToDateOnly(const std::string& dateTime);
int getCurrentGroup(const std::time_t& currentTime,int min);
int getCurrentGroup(const std::time_t& currentTime, int min);
std::time_t stringToTimeT(const std::string& dateTime);
std::list<CTable*> DataTableList;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>