[chronojump] New class RunEncoderCaptureGetSpeedAndDisplacement to manage RaceAnalyzer captured/loaded values
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] New class RunEncoderCaptureGetSpeedAndDisplacement to manage RaceAnalyzer captured/loaded values
- Date: Tue, 6 Apr 2021 17:17:12 +0000 (UTC)
commit f0c77c28cfc2e635b59ccac2e770221a9b8fea47
Author: Xavier de Blas <xaviblas gmail com>
Date: Tue Apr 6 19:09:16 2021 +0200
New class RunEncoderCaptureGetSpeedAndDisplacement to manage RaceAnalyzer captured/loaded values
src/runEncoder.cs | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 86 insertions(+)
---
diff --git a/src/runEncoder.cs b/src/runEncoder.cs
index f74bd60a..4b30244a 100644
--- a/src/runEncoder.cs
+++ b/src/runEncoder.cs
@@ -258,6 +258,92 @@ public class RunEncoder
}
}
+//get speed, total distance, ...
+public class RunEncoderCaptureGetSpeedAndDisplacement
+{
+ private int encoderDisplacement;
+ private int time;
+ private int force;
+ private int encoderOrRCA;
+
+ private int timePre;
+
+ private double runEncoderCaptureSpeed;
+ private double runEncoderCaptureSpeedMax;
+ private double runEncoderCaptureDistance;
+
+ public RunEncoderCaptureGetSpeedAndDisplacement()
+ {
+ timePre = 0;
+ }
+
+ public void PassCapturedRow (List<int> binaryReaded)
+ {
+ this.encoderDisplacement = binaryReaded[0];
+ this.time = binaryReaded[1];
+ this.force = binaryReaded[2];
+ this.encoderOrRCA = binaryReaded[3];
+ }
+
+ public bool PassLoadedRow (string row)
+ {
+ string [] cells = row.Split(new char[] {';'});
+ if(cells.Length != 3)
+ return false;
+
+ if(! Util.IsNumber(cells[0], false) || ! Util.IsNumber(cells[1], false))
+ return false;
+
+ this.encoderDisplacement = Convert.ToInt32(cells[0]);
+ this.time = Convert.ToInt32(cells[1]);
+ return true;
+ }
+
+ public bool Calcule ()
+ {
+ bool hasCalculed = false;
+ if(time > timePre)
+ {
+ 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)
+ runEncoderCaptureSpeedMax = runEncoderCaptureSpeed;
+
+ runEncoderCaptureDistance += runEncoderCaptureDistanceAtThisSample;
+ hasCalculed = true;
+ }
+ timePre = time;
+ }
+ return hasCalculed;
+ }
+
+ public int EncoderDisplacement {
+ get { return encoderDisplacement; }
+ }
+ public int Time {
+ get { return time; }
+ }
+ public int Force {
+ get { return force; }
+ }
+ public int EncoderOrRCA {
+ get { return encoderOrRCA; }
+ }
+
+ public double RunEncoderCaptureSpeed {
+ get { return runEncoderCaptureSpeed; }
+ set { runEncoderCaptureSpeed = value; }
+ }
+ public double RunEncoderCaptureSpeedMax {
+ get { return runEncoderCaptureSpeedMax; }
+ }
+ public double RunEncoderCaptureDistance {
+ get { return runEncoderCaptureDistance; }
+ }
+}
+
public class RunEncoderExercise
{
private int uniqueID;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]