[chronojump] RaceAnalyzer capture with new RunEncoderCaptureGetSpeedAndDisplacement()
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] RaceAnalyzer capture with new RunEncoderCaptureGetSpeedAndDisplacement()
- Date: Tue, 6 Apr 2021 17:17:12 +0000 (UTC)
commit 422cb75faef254bade80d1827df5e69cab171e8d
Author: Xavier de Blas <xaviblas gmail com>
Date: Tue Apr 6 19:14:02 2021 +0200
RaceAnalyzer capture with new RunEncoderCaptureGetSpeedAndDisplacement()
src/gui/app1/runEncoder.cs | 72 ++++++++++++++++++----------------------------
1 file changed, 28 insertions(+), 44 deletions(-)
---
diff --git a/src/gui/app1/runEncoder.cs b/src/gui/app1/runEncoder.cs
index dac6e1cb..46b9d69e 100644
--- a/src/gui/app1/runEncoder.cs
+++ b/src/gui/app1/runEncoder.cs
@@ -65,8 +65,7 @@ public partial class ChronoJumpWindow
static bool runEncoderProcessCancel;
static bool runEncoderProcessError;
static string runEncoderPulseMessage = "";
- static double runEncoderCaptureDistance = 0;
- static double runEncoderCaptureSpeed = 0;
+ static bool runEncoderShouldShowCaptureGraphsWithData; //on change person this is false
private RunEncoder currentRunEncoder;
private RunEncoderExercise currentRunEncoderExercise;
@@ -267,8 +266,6 @@ public partial class ChronoJumpWindow
runEncoderButtonsSensitive(false);
sensitiveLastTestButtons(false);
- runEncoderCaptureDistance = 0;
- runEncoderCaptureSpeed = 0;
if(cairoRadial != null)
cairoRadial.ResetSpeedMax();
@@ -312,6 +309,10 @@ public partial class ChronoJumpWindow
{
currentRunEncoder = new RunEncoder();
+ //draw the capture graphs empty:
+ runEncoderShouldShowCaptureGraphsWithData = false;
+ drawingarea_race_analyzer_capture.QueueDraw(); //will fire ExposeEvent
+
button_contacts_exercise_close_and_recalculate.Sensitive = false;
textview_contacts_signal_comment.Buffer.Text = "";
@@ -437,6 +438,10 @@ public partial class ChronoJumpWindow
cairoGraphRaceAnalyzerPoints_dt_l = new List<PointF>();
cairoGraphRaceAnalyzerPoints_st_l = new List<PointF>();
+ //RunEncoderCaptureGetSpeedAndDisplacement reCGSD = new
RunEncoderCaptureGetSpeedAndDisplacement();
+ reCGSD = new RunEncoderCaptureGetSpeedAndDisplacement();
+ runEncoderShouldShowCaptureGraphsWithData = true;
+
runEncoderCaptureThread = new Thread(new ThreadStart(runEncoderCaptureDo));
GLib.Idle.Add (new GLib.IdleHandler (pulseGTKRunEncoderCapture));
@@ -454,6 +459,7 @@ public partial class ChronoJumpWindow
}
string capturingMessage = "Capturing ...";
+ static RunEncoderCaptureGetSpeedAndDisplacement reCGSD;
//non GTK on this method
private void runEncoderCaptureDo()
@@ -533,9 +539,6 @@ public partial class ChronoJumpWindow
writer.WriteLine("Pulses;Time(useconds);Force(N)");
triggerListRunEncoder = new TriggerList();
- str = "";
- int firstTime = 0;
- int timePre = 0;
Stopwatch sw = new Stopwatch();
int rowsCount = 0;
@@ -560,7 +563,7 @@ public partial class ChronoJumpWindow
//runEncoder sends changes. If there is no movement in certain time, just
show a 0 on screen and capture graph
if(sw.ElapsedMilliseconds > 500)
{
- runEncoderCaptureSpeed = 0;
+ reCGSD.RunEncoderCaptureSpeed = 0;
sw.Stop();
}
@@ -569,49 +572,30 @@ public partial class ChronoJumpWindow
//time (4 bytes: long at Arduino, uint at c-sharp), force (2 bytes: uint)
List<int> binaryReaded = readBinaryRunEncoderValues();
- int encoderDisplacement = binaryReaded[0];
- int time = binaryReaded[1];
- int force = binaryReaded[2];
- int encoderOrRCA = binaryReaded[3];
-
- if(time > timePre)
+ reCGSD.PassCapturedRow (binaryReaded);
+ if(reCGSD.Calcule())
{
- if(timePre > 0)
- {
- double runEncoderCaptureDistanceAtThisSample =
Math.Abs(encoderDisplacement) * 0.0030321; //hardcoded: same as sprintEncoder.R
- runEncoderCaptureSpeed =
UtilAll.DivideSafe(runEncoderCaptureDistanceAtThisSample, (time - timePre)) * 1000000;
-
- runEncoderCaptureDistance += runEncoderCaptureDistanceAtThisSample;
-
- //distance/time
- cairoGraphRaceAnalyzerPoints_dt_l.Add(new PointF(
- UtilAll.DivideSafe(time, 1000000),
- runEncoderCaptureDistance));
- //speed/time
- cairoGraphRaceAnalyzerPoints_st_l.Add(new PointF(
- UtilAll.DivideSafe(time, 1000000),
- runEncoderCaptureSpeed));
-
- LogB.Information(string.Format("encoderDisplacement: {0};
runEncoderCaptureDistanceAtThisSample: {1}, runEncoderDistance: {2}, runEncoderCaptureSpeed: {3}; time: {4};
timePre: {5}",
- encoderDisplacement,
- runEncoderCaptureDistanceAtThisSample,
- runEncoderCaptureDistance,
- runEncoderCaptureSpeed, time, timePre));
- }
- timePre = time;
+ //distance/time
+ cairoGraphRaceAnalyzerPoints_dt_l.Add(new PointF(
+ UtilAll.DivideSafe(reCGSD.Time, 1000000),
+ reCGSD.RunEncoderCaptureDistance));
+ //speed/time
+ cairoGraphRaceAnalyzerPoints_st_l.Add(new PointF(
+ UtilAll.DivideSafe(reCGSD.Time, 1000000),
+ reCGSD.RunEncoderCaptureSpeed));
sw.Restart();
}
- LogB.Information(string.Format("{0};{1};{2};{3};{4}", pps, encoderDisplacement, time,
force, encoderOrRCA));
- writer.WriteLine(string.Format("{0};{1};{2}", encoderDisplacement, time, force));
- if(encoderOrRCA == 0)
+ LogB.Information(string.Format("{0};{1};{2};{3};{4}", pps,
reCGSD.EncoderDisplacement, reCGSD.Time, reCGSD.Force, reCGSD.EncoderOrRCA));
+ writer.WriteLine(string.Format("{0};{1};{2}", reCGSD.EncoderDisplacement,
reCGSD.Time, reCGSD.Force));
+ if(reCGSD.EncoderOrRCA == 0)
rowsCount ++; //note this is not used right now, and maybe it will need to be
for all cases, not just for encoderOrRCA
else {
Trigger trigger;
- if(encoderOrRCA == 1)
- trigger = new Trigger(Trigger.Modes.RACEANALYZER, time, false);
- else //(encoderOrRCA == 2)
- trigger = new Trigger(Trigger.Modes.RACEANALYZER, time, true);
+ if(reCGSD.EncoderOrRCA == 1)
+ trigger = new Trigger(Trigger.Modes.RACEANALYZER, reCGSD.Time, false);
+ else //(reCGSD.EncoderOrRCA == 2)
+ trigger = new Trigger(Trigger.Modes.RACEANALYZER, reCGSD.Time, true);
if(! triggerListRunEncoder.NewSameTypeThanBefore(trigger) &&
! triggerListRunEncoder.IsSpurious(trigger,
TriggerList.Type3.BOTH, 50))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]