#pragma once #include "ClassFlow.h" #include "ClassFlowMakeImage.h" #include "ClassFlowCNNGeneral.h" #include "ClassFlowCNNGeneral.h" #include struct NumberPost { float MaxRateValue; bool useMaxRateValue; bool ErrorMessage; bool PreValueOkay; bool AllowNegativeRates; bool checkDigitIncreaseConsistency; time_t lastvalue; string timeStamp; float FlowRateAct; // m3 / min float PreValue; // letzter Wert, der gut ausgelesen wurde float Value; // letzer ausgelesener Wert, inkl. Korrekturen string ReturnRawValue; // Rohwert (mit N & führenden 0) string ReturnValue; // korrigierter Rückgabewert, ggf. mit Fehlermeldung string ReturnPreValue; // korrigierter Rückgabewert ohne Fehlermeldung string ReturnValueNoError; string ErrorMessageText; // Fehlermeldung bei Consistency Check int AnzahlAnalog; int AnzahlDigital; int DecimalShift; int DecimalShiftInitial; int Nachkomma; general *digit_roi; general *analog_roi; string name; }; class ClassFlowPostProcessing : public ClassFlow { protected: std::vector NUMBERS; bool UpdatePreValueINI; int PreValueAgeStartup; bool ErrorMessage; bool IgnoreLeadingNaN; // SPEZIALFALL für User Gustl ClassFlowCNNGeneral* flowAnalog; ClassFlowCNNGeneral* flowDigit; string FilePreValue; ClassFlowMakeImage *flowMakeImage; bool LoadPreValue(void); string ShiftDecimal(string in, int _decShift); string ErsetzteN(string, float _prevalue); float checkDigitConsistency(float input, int _decilamshift, bool _isanalog, float _preValue); string RundeOutput(float _in, int _anzNachkomma); void InitNUMBERS(); void handleDecimalSeparator(string _decsep, string _value); void handleMaxRateValue(string _decsep, string _value); public: bool PreValueUse; ClassFlowPostProcessing(std::vector* lfc, ClassFlowCNNGeneral *_analog, ClassFlowCNNGeneral *_digit); bool ReadParameter(FILE* pfile, string& aktparamgraph); bool doFlow(string time); string getReadout(int _number); string getReadoutParam(bool _rawValue, bool _noerror, int _number = 0); string getReadoutError(int _number = 0); string getReadoutRate(int _number = 0); string getReadoutTimeStamp(int _number = 0); void SavePreValue(); string GetPreValue(std::string _number = ""); void SetPreValue(float zw, string _numbers, bool _extern = false); std::vector GetNumbers(){return NUMBERS;}; string name(){return "ClassFlowPostProcessing";}; };