[chronojump/michrolab] RaceAnalyzer at load shifted to 1st trigger or accel >= minAccel, whatever comes first. Fixed also 2
- From: Xavier Padullés <xpadulles src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump/michrolab] RaceAnalyzer at load shifted to 1st trigger or accel >= minAccel, whatever comes first. Fixed also 2
- Date: Thu, 14 Jul 2022 16:37:49 +0000 (UTC)
commit 5d01850ece0221ff40fb261e057dced5db6c423c
Author: Xavier de Blas <xaviblas gmail com>
Date: Wed May 25 13:12:48 2022 +0200
RaceAnalyzer at load shifted to 1st trigger or accel >= minAccel, whatever comes first. Fixed also 2
first samples on shift.
src/gui/app1/runEncoder.cs | 11 +++++------
src/runEncoder.cs | 38 +++++++++++++++++++++++++++++++++++---
2 files changed, 40 insertions(+), 9 deletions(-)
---
diff --git a/src/gui/app1/runEncoder.cs b/src/gui/app1/runEncoder.cs
index a3c2bcbb5..f61274b17 100644
--- a/src/gui/app1/runEncoder.cs
+++ b/src/gui/app1/runEncoder.cs
@@ -1117,7 +1117,6 @@ public partial class ChronoJumpWindow
if(reCGSD.PassLoadedRow (row))
reCGSD.Calcule();
- rowPre = row;
speedPre2 = speedPre;
timePre2 = timePre;
speedPre = reCGSD.RunEncoderCaptureSpeed;
@@ -1172,11 +1171,9 @@ public partial class ChronoJumpWindow
reCGSD.SetTimeAtEnoughAccelOrTrigger0 (shiftTo);
- //pass previous row and this one
- if(reCGSD.PassLoadedRow (rowPre))
- reCGSD.Calcule();
- if(reCGSD.PassLoadedRow (row))
- reCGSD.Calcule();
+ if (reCGSD.PassLoadedRow (row))
+ reCGSD.CalculeSpeedAt0Shifted (rowPre, row);
+ //LogB.Information(string.Format("after row
runEncoderCaptureSpeed: {0}", reCGSD.RunEncoderCaptureSpeed));
signalShifted = true;
}
@@ -1207,6 +1204,8 @@ public partial class ChronoJumpWindow
UtilAll.DivideSafe(reCGSD.Time, 1000000),
accel));
}
+
+ rowPre = row;
}
if(reCGSD.RunEncoderCaptureSpeedMax > 0)
diff --git a/src/runEncoder.cs b/src/runEncoder.cs
index 4a4ca46c2..4aac55409 100644
--- a/src/runEncoder.cs
+++ b/src/runEncoder.cs
@@ -353,13 +353,45 @@ public class RunEncoderCaptureGetSpeedAndDisplacement
timeAtEnoughAccelOrTrigger0 = time;
}
+ // when at load signal is shifted, calcule the speed of previous sample and the sample that will be 0
+ public void CalculeSpeedAt0Shifted (string rowPre, string row)
+ {
+ string [] cells = rowPre.Split(new char[] {';'});
+ if(cells.Length != 3)
+ return;
+
+ if(! Util.IsNumber(cells[0], false) || ! Util.IsNumber(cells[1], false))
+ return;
+
+ //int encDisplacement = Convert.ToInt32(cells[0]);
+ int tPre = Convert.ToInt32(cells[1]);
+
+ cells = row.Split(new char[] {';'});
+ if(cells.Length != 3)
+ return;
+
+ if(! Util.IsNumber(cells[0], false) || ! Util.IsNumber(cells[1], false))
+ return;
+
+ int encDisplacement = Convert.ToInt32(cells[0]);
+ int t = Convert.ToInt32(cells[1]);
+
+ double runEncoderCaptureDistanceAtThisSample = Math.Abs(encDisplacement) * 0.0030321;
//hardcoded: same as sprintEncoder.R
+ runEncoderCaptureSpeed = UtilAll.DivideSafe(runEncoderCaptureDistanceAtThisSample, (t -
tPre)) * 1000000;
+ //LogB.Information(string.Format("speed: {0}, runEncoderCaptureDistanceAtThisSample: {1},
tPre: {2}, t: {3}",
+ // runEncoderCaptureSpeed, runEncoderCaptureDistanceAtThisSample, tPre,
t));
+
+ if(runEncoderCaptureSpeed > runEncoderCaptureSpeedMax)
+ runEncoderCaptureSpeedMax = runEncoderCaptureSpeed;
+ }
+
public bool Calcule ()
{
bool hasCalculed = false;
if(time > timePre)
{
- if(timePre > 0)
- {
+// if(timePre > 0)
+// {
double runEncoderCaptureDistanceAtThisSample = Math.Abs(encoderDisplacement)
* 0.0030321; //hardcoded: same as sprintEncoder.R
runEncoderCaptureSpeed =
UtilAll.DivideSafe(runEncoderCaptureDistanceAtThisSample, (time - timePre)) * 1000000;
if(runEncoderCaptureSpeed > runEncoderCaptureSpeedMax)
@@ -373,7 +405,7 @@ public class RunEncoderCaptureGetSpeedAndDisplacement
updateSegmentDistTimeVariable ();
hasCalculed = true;
- }
+// }
timePre = time;
}
return hasCalculed;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]