[chronojump] On inertialCalibrated save since 0 is crossed



commit 7920c748637819fec4280348385bb364c763f7ef
Author: Xavier de Blas <xaviblas gmail com>
Date:   Wed Feb 15 13:24:14 2017 +0100

    On inertialCalibrated save since 0 is crossed

 src/encoderCapture.cs |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)
---
diff --git a/src/encoderCapture.cs b/src/encoderCapture.cs
index 83567c9..9e5f933 100644
--- a/src/encoderCapture.cs
+++ b/src/encoderCapture.cs
@@ -86,6 +86,11 @@ public abstract class EncoderCapture
        protected bool finish;
        protected bool capturingInertialBG;
 
+       //get the moment where we cross 0 first time on inertial calibrated
+       //signal will be saved from here
+       protected int inertialCalibratedFirstCross0Pos;
+       protected bool inertialCalibrated;
+
        //capture is simulated (a signal file is readed)
        private static bool simulated = false;
        private int [] simulatedInts;
@@ -182,6 +187,7 @@ public abstract class EncoderCapture
 
        public virtual void InitCalibrated(int angleNow)
        {
+               inertialCalibrated = false;
        }
 
        public bool Capture(string outputData1, EncoderRProcCapture encoderRProcCapture, bool compujump)
@@ -192,6 +198,8 @@ public abstract class EncoderCapture
                                return false;
                }
 
+               inertialCalibratedFirstCross0Pos = 0;
+
                LogB.Information("sum = " + sum.ToString());
                LogB.Information("sumInertialDisc = " + sumInertialDisc.ToString());
                do {
@@ -240,6 +248,15 @@ public abstract class EncoderCapture
                                }
                                
 
+                               //on inertialCalibrated set mark where 0 is crossed for the first time
+                               if(inertialCalibrated && inertialCalibratedFirstCross0Pos == 0)
+                               {
+                                       if(byteReaded > 0 && sumInertialDisc < 0 && sumInertialDisc + 
byteReaded >= 0)
+                                               inertialCalibratedFirstCross0Pos = i;
+                                       else if(byteReaded < 0 && sumInertialDisc > 0 && sumInertialDisc + 
byteReaded <= 0)
+                                               inertialCalibratedFirstCross0Pos = i;
+                               }
+
                                sumInertialDisc += byteReaded;
                                encoderReadedInertialDisc.Add(byteReaded);
 
@@ -649,6 +666,7 @@ public class EncoderCaptureInertial : EncoderCapture
 
        public override void InitCalibrated(int angleNow)
        {
+               inertialCalibrated = true;
                sum = angleNow;
                sumInertialDisc = angleNow;
 
@@ -786,7 +804,11 @@ public class EncoderCaptureInertial : EncoderCapture
        {
                TextWriter writer = File.CreateText(file);
 
-               encoderReadedInertialDisc = trimInitialZeros(encoderReadedInertialDisc);
+               //on inertialCalibrated remove from the beginnig to the moment where 0 is crossed
+               if(inertialCalibrated && inertialCalibratedFirstCross0Pos != 0)
+                       encoderReadedInertialDisc.RemoveRange(0, inertialCalibratedFirstCross0Pos);
+               else
+                       encoderReadedInertialDisc = trimInitialZeros(encoderReadedInertialDisc);
 
                string sep = "";
                foreach(int k in encoderReadedInertialDisc) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]