jomjol 5 лет назад
Родитель
Сommit
dd1155dc89

+ 2 - 0
README.md

@@ -31,6 +31,8 @@ A 3d-printable housing can be found here: https://www.thingiverse.com/thing:4571
 
 ##### Rolling - (2020-09-13)
 
+* Bug fixing DecimalShift (digits after comma)
+
 * Implementation of decimal shift (New Parameter "DecimalShift = 1" in [PostProcessing])
 DecimalShift = 2 --> Result: 123.456 --> 12345.6
   DecimalShift = -1 --> Result: 123.456 --> 12.3456

+ 11 - 16
code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.cpp

@@ -20,9 +20,7 @@ string ClassFlowPostProcessing::GetPreValue()
         if (((*ListFlowControll)[i])->name().compare("ClassFlowAnalog") == 0)
         {
             int AnzahlNachkomma = ((ClassFlowAnalog*)(*ListFlowControll)[i])->AnzahlROIs();
-            std::stringstream stream;
-            stream << std::fixed << std::setprecision(AnzahlNachkomma) << PreValue;
-            result = stream.str();
+            result =  RundeOutput(PreValue, AnzahlNachkomma + DecimalShift);
         }
     }
 
@@ -81,9 +79,7 @@ bool ClassFlowPostProcessing::LoadPreValue(void)
         if (((*ListFlowControll)[i])->name().compare("ClassFlowAnalog") == 0)
         {
             int AnzahlNachkomma = ((ClassFlowAnalog*)(*ListFlowControll)[i])->AnzahlROIs();
-            std::stringstream stream;
-            stream << std::fixed << std::setprecision(AnzahlNachkomma) << Value;
-            ReturnValue = stream.str();
+            ReturnValue = RundeOutput(Value, AnzahlNachkomma + DecimalShift);
             ReturnValueNoError = ReturnValue;
         }
     }
@@ -346,18 +342,13 @@ bool ClassFlowPostProcessing::doFlow(string zwtime)
         zw = zw + analog;
 
     Value = std::stof(zw);
-
-    std::stringstream stream;
-    stream << std::fixed << std::setprecision(AnzahlNachkomma) << Value;
-    zwvalue = stream.str();
+    zwvalue = RundeOutput(Value, AnzahlNachkomma + DecimalShift);
 
     if ((!AllowNegativeRates) && (Value < PreValue))
     {
         error = "Negative Rate - Returned old value - read value: " + zwvalue;
         Value = PreValue;
-        stream.str("");
-        stream << std::fixed << std::setprecision(AnzahlNachkomma) << Value;
-        zwvalue = stream.str();
+        zwvalue = RundeOutput(Value, AnzahlNachkomma + DecimalShift);
     }
     else
     {
@@ -365,9 +356,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime)
         {
             error = "Rate too high - Returned old value - read value: " + zwvalue;
             Value = PreValue;
-            stream.str("");
-            stream << std::fixed << std::setprecision(AnzahlNachkomma) << Value;
-            zwvalue = stream.str();
+            zwvalue = RundeOutput(Value, AnzahlNachkomma + DecimalShift);
         }
     }
 
@@ -396,6 +385,12 @@ string ClassFlowPostProcessing::getReadoutParam(bool _rawValue, bool _noerror)
     return ReturnValue;
 }
 
+string ClassFlowPostProcessing::RundeOutput(float _in, int _anzNachkomma){
+    std::stringstream stream;
+    stream << std::fixed << std::setprecision(_anzNachkomma) << _in;
+    return stream.str();  
+}
+
 
 string ClassFlowPostProcessing::ErsetzteN(string input, int lastvalueanalog = -1)
 {

+ 1 - 0
code/lib/jomjol_flowcontroll/ClassFlowPostProcessing.h

@@ -29,6 +29,7 @@ protected:
     string ShiftDecimal(string in, int _decShift);
 
     string ErsetzteN(string, int lastvalueanalog);
+    string RundeOutput(float _in, int _anzNachkomma);
 
 public:
     ClassFlowPostProcessing();

BIN
firmware/firmware.bin