[chronojump] Force sensor capture uses exercise percentBodyWeight
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] Force sensor capture uses exercise percentBodyWeight
- Date: Fri, 6 Sep 2019 13:06:12 +0000 (UTC)
commit 636d79447b61cca0638db7b9fab73da085431bd7
Author: Xavier de Blas <xaviblas gmail com>
Date: Thu Sep 5 11:42:44 2019 +0200
Force sensor capture uses exercise percentBodyWeight
src/forceSensor.cs | 14 +++++++++-----
src/gui/forceSensor.cs | 34 +++++++++++++++++++++++-----------
src/gui/forceSensorAnalyze.cs | 4 +++-
3 files changed, 35 insertions(+), 17 deletions(-)
---
diff --git a/src/forceSensor.cs b/src/forceSensor.cs
index 7393bf6e..e2af47f3 100644
--- a/src/forceSensor.cs
+++ b/src/forceSensor.cs
@@ -27,8 +27,11 @@ public class ForceSensor
{
public enum CaptureOptions { NORMAL, ABS, INVERTED }
- public static double ForceWithFlags(double force, CaptureOptions fsco)
+ public static double ForceWithCaptureOptionsAndBW (double force, CaptureOptions fsco, int
percentBodyWeight, double personWeight)
{
+ if(percentBodyWeight > 0 && personWeight > 0)
+ force += 9.81 * percentBodyWeight * personWeight / 100.0;
+
if(fsco == CaptureOptions.ABS)
return Math.Abs(force);
if(fsco == CaptureOptions.INVERTED)
@@ -733,12 +736,13 @@ public class ForceSensorAnalyzeInstant
private int graphWidth;
private int graphHeight;
- public ForceSensorAnalyzeInstant(string file, int graphWidth, int graphHeight, double start, double
end, ForceSensor.CaptureOptions fsco)
+ public ForceSensorAnalyzeInstant(string file, int graphWidth, int graphHeight, double start, double
end,
+ int exercisePercentBW, double personWeight, ForceSensor.CaptureOptions fsco)
{
this.graphWidth = graphWidth;
this.graphHeight = graphHeight;
- readFile(file, start, end, fsco);
+ readFile(file, start, end, exercisePercentBW, personWeight, fsco);
//on zoom adjust width
if(start >= 0 || end >= 0)
@@ -752,7 +756,7 @@ public class ForceSensorAnalyzeInstant
fscAIPoints.Redo();
}
- private void readFile(string file, double start, double end, ForceSensor.CaptureOptions fsco)
+ private void readFile(string file, double start, double end, int exercisePercentBW, double
personWeight, ForceSensor.CaptureOptions fsco)
{
fscAIPoints = new ForceSensorCapturePoints(graphWidth, graphHeight);
@@ -795,7 +799,7 @@ public class ForceSensorAnalyzeInstant
int time = Convert.ToInt32(timeD);
double force = Convert.ToDouble(strFull[1]);
- force = ForceSensor.ForceWithFlags(force, fsco);
+ force = ForceSensor.ForceWithCaptureOptionsAndBW(force, fsco,
exercisePercentBW, personWeight);
fscAIPoints.Add(time, force);
fscAIPoints.NumCaptured ++;
diff --git a/src/gui/forceSensor.cs b/src/gui/forceSensor.cs
index afa605fa..0a01c566 100644
--- a/src/gui/forceSensor.cs
+++ b/src/gui/forceSensor.cs
@@ -716,6 +716,13 @@ public partial class ChronoJumpWindow
//printDataRow(dataRow);
}
+ private ForceSensorExercise currentForceSensorExercise;
+ private void assignCurrentForceSensorExercise()
+ {
+ currentForceSensorExercise = (ForceSensorExercise) SqliteForceSensorExercise.Select (
+ false, getExerciseIDFromAnyCombo(combo_force_sensor_exercise,
forceSensorComboExercisesString, false), false)[0];
+ }
+
//non GTK on this method
private void forceSensorCaptureDo()
{
@@ -747,14 +754,17 @@ public partial class ChronoJumpWindow
Util.CreateForceSensorSessionDirIfNeeded (currentSession.UniqueID);
+ assignCurrentForceSensorExercise();
+
string fileNamePre = currentPerson.Name + "_" +
- UtilGtk.ComboGetActive(combo_force_sensor_exercise) + "_" +
+ Catalog.GetString(currentForceSensorExercise.Name) + "_" +
getLaterality() + "_" +
getCaptureComment() + //includes "_" if it's no empty
UtilDate.ToFile(DateTime.Now);
ForceSensor.CaptureOptions forceSensorCaptureOption = getForceSensorCaptureOptions();
+
//fileName to save the csv
string fileName = Util.GetForceSensorSessionDir(currentSession.UniqueID) +
Path.DirectorySeparatorChar + fileNamePre + ".csv";
@@ -816,19 +826,21 @@ public partial class ChronoJumpWindow
time -= firstTime;
LogB.Information(string.Format("time: {0}, force: {1}", time, force));
- //forceWithFlags have abs or inverted
- double forceWithFlags = ForceSensor.ForceWithFlags(force, forceSensorCaptureOption);
+ //forceWithCaptureOptionsAndBW have abs or inverted
+ double forceWithCaptureOptionsAndBW = ForceSensor.ForceWithCaptureOptionsAndBW(force,
forceSensorCaptureOption,
+ currentForceSensorExercise.PercentBodyWeight,
currentPersonSession.Weight);
+
if(forceSensorCaptureOption != ForceSensor.CaptureOptions.NORMAL)
- LogB.Information(string.Format("with abs or inverted flag: time: {0}, force:
{1}", time, forceWithFlags));
+ LogB.Information(string.Format("with abs or inverted flag: time: {0}, force:
{1}", time, forceWithCaptureOptionsAndBW));
writer.WriteLine(time.ToString() + ";" + force.ToString()); //on file force is stored
without flags
forceSensorValues.TimeLast = time;
- forceSensorValues.ForceLast = forceWithFlags;
+ forceSensorValues.ForceLast = forceWithCaptureOptionsAndBW;
- forceSensorValues.SetMaxMinIfNeeded(forceWithFlags, time);
+ forceSensorValues.SetMaxMinIfNeeded(forceWithCaptureOptionsAndBW, time);
- fscPoints.Add(time, forceWithFlags);
+ fscPoints.Add(time, forceWithCaptureOptionsAndBW);
fscPoints.NumCaptured ++;
if(fscPoints.OutsideGraph())
{
@@ -1243,6 +1255,7 @@ LogB.Information(" re R ");
//when database is working the here the gui of ForceSensor.CaptureOptions will
change, and graph will be done accordingly
combo_force_sensor_capture_options.Active = 0;
+ assignCurrentForceSensorExercise();
forceSensorCopyTempAndDoGraphs();
//if drawingarea has still not shown, don't paint graph because GC screen is not
defined
@@ -1360,7 +1373,7 @@ LogB.Information(" re R ");
{
int time = Convert.ToInt32(strFull[0]);
double force = Convert.ToDouble(strFull[1]);
- force = ForceSensor.ForceWithFlags(force, fsco);
+ force = ForceSensor.ForceWithCaptureOptionsAndBW(force, fsco,
currentForceSensorExercise.PercentBodyWeight, currentPersonSession.Weight);
fscPoints.Add(time, force);
fscPoints.NumCaptured ++;
@@ -1811,7 +1824,7 @@ LogB.Information(" re R ");
genericWin = GenericWindow.Show(Catalog.GetString("Exercise"), false, //don't show now
Catalog.GetString("Force sensor exercise:"), bigArray);
- genericWin.LabelSpinInt = Catalog.GetString("Involved body weight") + " (%)" + "\nNote: this
is not used on current version.";
+ genericWin.LabelSpinInt = Catalog.GetString("Involved body weight") + " (%)";
genericWin.SetSpinRange(0, 100);
genericWin.SetSpinValue(ex.PercentBodyWeight);
@@ -1861,7 +1874,7 @@ LogB.Information(" re R ");
genericWin = GenericWindow.Show(Catalog.GetString("Exercise"), false, //don't show now
Catalog.GetString("Write the name of the force sensor exercise:"), bigArray);
- genericWin.LabelSpinInt = Catalog.GetString("Involved body weight") + " (%)" + "\nNote: this
is not used on current version.";
+ genericWin.LabelSpinInt = Catalog.GetString("Involved body weight") + " (%)";
genericWin.SetSpinRange(0, 100);
genericWin.LabelEntry2 = Catalog.GetString("Resistance");
genericWin.LabelEntry3 = Catalog.GetString("Description");
@@ -1955,7 +1968,6 @@ LogB.Information(" re R ");
new DialogMessage(Constants.MessageTypes.INFO, Catalog.GetString("Exercise deleted."));
}
-
// -------------------------------- end of exercise stuff --------------------
// -------------------------------- options, laterality and comment stuff -------------
diff --git a/src/gui/forceSensorAnalyze.cs b/src/gui/forceSensorAnalyze.cs
index 25ad604c..623f7662 100644
--- a/src/gui/forceSensorAnalyze.cs
+++ b/src/gui/forceSensorAnalyze.cs
@@ -549,7 +549,9 @@ public partial class ChronoJumpWindow
lastForceSensorFullPath,
force_sensor_ai_drawingarea.Allocation.Width,
force_sensor_ai_drawingarea.Allocation.Height,
- zoomA, zoomB, getForceSensorCaptureOptions());
+ zoomA, zoomB,
+ currentForceSensorExercise.PercentBodyWeight, currentPersonSession.Weight,
+ getForceSensorCaptureOptions());
/*
* position the hscales on the left to avoid loading a csv
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]