diff --git a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp index f1ed5bfc..1344f63c 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp @@ -46,7 +46,7 @@ string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution if (CNNType == Analogue) { float zahl = GENERAL[_analog]->ROI[GENERAL[_analog]->ROI.size() - 1]->result_float; - int ergebnis_nachkomma = ((int) floor(zahl * 10)) % 10; + int ergebnis_nachkomma = ((int) floor(zahl * 10) + 10) % 10; int prev = -1; @@ -88,6 +88,7 @@ string ClassFlowCNNGeneral::getReadout(int _analog = 0, bool _extendedResolution int ergebnis_vorkomma = ((int) floor(zahl)) % 10; result = std::to_string(ergebnis_vorkomma) + std::to_string(ergebnis_nachkomma); + zif_akt = ergebnis_vorkomma; } else { @@ -128,43 +129,43 @@ int ClassFlowCNNGeneral::ZeigerEvalHybrid(float zahl, float zahl_vorgaenger, int if (zahl_vorgaenger < 0) // keine Vorzahl vorhanden !!! --> Runde die Zahl { if ((ergebnis_nachkomma <= 2) || (ergebnis_nachkomma >= 8)) // Band um die Ziffer --> Runden, da Ziffer im Rahmen Ungenauigkeit erreicht - return (int) round(zahl); + return ((int) round(zahl) + 10) % 10; else - return (int) trunc(zahl); + return ((int) trunc(zahl) + 10) % 10; } if (zahl_vorgaenger > 9.2) // Ziffernwechsel beginnt { if (eval_vorgaenger == 0) // Wechsel hat schon stattgefunden { - return (int) round(zahl); // Annahme, dass die neue Zahl schon in der Nähe des Ziels ist + return ((int) round(zahl) + 10) % 10; // Annahme, dass die neue Zahl schon in der Nähe des Ziels ist } else { if (zahl_vorgaenger <= 9.5) // Wechsel startet gerade, aber beginnt erst { if ((ergebnis_nachkomma <= 2) || (ergebnis_nachkomma >= 8)) // Band um die Ziffer --> Runden, da Ziffer im Rahmen Ungenauigkeit erreicht - return (int) round(zahl); + return ((int) round(zahl) + 10) % 10; else - return (int) trunc(zahl); + return ((int) trunc(zahl) + 10) % 10; } else { - return (int) trunc(zahl); // Wechsel schon weiter fortgeschritten, d.h. über 2 als Nachkomma + return ((int) trunc(zahl) + 10) % 10; // Wechsel schon weiter fortgeschritten, d.h. über 2 als Nachkomma } } } if ((ergebnis_nachkomma <= 2) || (ergebnis_nachkomma >= 8)) // Band um die Ziffer --> Runden, da Ziffer im Rahmen Ungenauigkeit erreicht - return (int) round(zahl); + return ((int) round(zahl) + 10) % 10; - return (int) trunc(zahl); + return ((int) trunc(zahl) + 10) % 10; } int ClassFlowCNNGeneral::ZeigerEval(float zahl, int ziffer_vorgaenger) { - int ergebnis_nachkomma = ((int) floor(zahl * 10)) % 10; - int ergebnis_vorkomma = ((int) floor(zahl)) % 10; + int ergebnis_nachkomma = ((int) floor(zahl * 10) + 10) % 10; + int ergebnis_vorkomma = ((int) floor(zahl) + 10) % 10; int ergebnis, ergebnis_rating; if (ziffer_vorgaenger == -1) @@ -181,7 +182,7 @@ int ClassFlowCNNGeneral::ZeigerEval(float zahl, int ziffer_vorgaenger) if (ergebnis == -1) ergebnis+=10; - ergebnis = ergebnis % 10; + ergebnis = (ergebnis + 10) % 10; return ergebnis; } diff --git a/code/components/jomjol_flowcontroll/ClassFlowControll.cpp b/code/components/jomjol_flowcontroll/ClassFlowControll.cpp index 6d0e48a0..f827bcec 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowControll.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowControll.cpp @@ -311,39 +311,41 @@ bool ClassFlowControll::doFlow(string time) string ClassFlowControll::getReadoutAll(int _type) { - std::vector *numbers = flowpostprocessing->GetNumbers(); std::string out = ""; - - for (int i = 0; i < (*numbers).size(); ++i) + if (flowpostprocessing) { - out = out + (*numbers)[i]->name + "\t"; - switch (_type) { - case READOUT_TYPE_VALUE: - out = out + (*numbers)[i]->ReturnValueNoError; - break; - case READOUT_TYPE_PREVALUE: - if (flowpostprocessing->PreValueUse) - { - if ((*numbers)[i]->PreValueOkay) - out = out + (*numbers)[i]->ReturnPreValue; - else - out = out + "PreValue too old"; - } - else - out = out + "PreValue deactivated"; - break; - case READOUT_TYPE_RAWVALUE: - out = out + (*numbers)[i]->ReturnRawValue; - break; - case READOUT_TYPE_ERROR: - out = out + (*numbers)[i]->ErrorMessageText; - break; - } - if (i < (*numbers).size()-1) - out = out + "\r\n"; - } + std::vector *numbers = flowpostprocessing->GetNumbers(); -// printf("OUT: %s", out.c_str()); + for (int i = 0; i < (*numbers).size(); ++i) + { + out = out + (*numbers)[i]->name + "\t"; + switch (_type) { + case READOUT_TYPE_VALUE: + out = out + (*numbers)[i]->ReturnValueNoError; + break; + case READOUT_TYPE_PREVALUE: + if (flowpostprocessing->PreValueUse) + { + if ((*numbers)[i]->PreValueOkay) + out = out + (*numbers)[i]->ReturnPreValue; + else + out = out + "PreValue too old"; + } + else + out = out + "PreValue deactivated"; + break; + case READOUT_TYPE_RAWVALUE: + out = out + (*numbers)[i]->ReturnRawValue; + break; + case READOUT_TYPE_ERROR: + out = out + (*numbers)[i]->ErrorMessageText; + break; + } + if (i < (*numbers).size()-1) + out = out + "\r\n"; + } + // printf("OUT: %s", out.c_str()); + } return out; } diff --git a/firmware/firmware.bin b/firmware/firmware.bin index 126c06d3..a33cba70 100644 Binary files a/firmware/firmware.bin and b/firmware/firmware.bin differ