[chronojump] Doing encoder inertial machine
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] Doing encoder inertial machine
- Date: Wed, 17 Jul 2013 18:11:06 +0000 (UTC)
commit ba02ed9164d2241ce523e91251ba3588583d3206
Author: Xavier de Blas <xaviblas gmail com>
Date: Wed Jul 17 20:09:37 2013 +0200
Doing encoder inertial machine
encoder/graph.R | 20 +++++++-----
glade/chronojump.glade | 74 ++++++++++++++++++++++++++++++++++++++------
src/gui/encoder.cs | 29 ++++++++++++++----
src/sqlite/main.cs | 14 ++++++++-
src/sqlite/preferences.cs | 1 +
5 files changed, 113 insertions(+), 25 deletions(-)
---
diff --git a/encoder/graph.R b/encoder/graph.R
index 943c5a4..81898b1 100644
--- a/encoder/graph.R
+++ b/encoder/graph.R
@@ -1326,8 +1326,12 @@ doProcess <- function(options) {
#if(isJump)
# titleType="jump"
+ Analysis on curvesRI comes:
+ #"curvesRI;0.001" [1] string [2] inertia momentum
+ analysisCurves = unlist(strsplit(Analysis, "\\;"))
+
curvesPlot = FALSE
- if(Analysis == "curves" || Analysis == "curvesRI") {
+ if(Analysis == "curves" || analysisCurves[1] == "curvesRI") {
curvesPlot = TRUE
par(mar=c(2,2.5,2,1))
}
@@ -1470,15 +1474,15 @@ doProcess <- function(options) {
quit()
}
- if(Analysis == "curvesRI")
+ if(analysisCurves[1] == "curvesRI")
Eccon = "ecS"
- curves=findCurves(rawdata, Eccon, MinHeight, curvesPlot, Title, Analysis)
+ curves=findCurves(rawdata, Eccon, MinHeight, curvesPlot, Title, analysisCurves[1])
print("curves PRE")
print(curves)
- if(Analysis == "curvesRI") {
+ if(analysisCurves[1] == "curvesRI") {
rawdata = fixRawdataRIByKnowingHeight(rawdata)
curves = fixCurvesRIByKnowingHeight(rawdata, curves)
@@ -1491,7 +1495,7 @@ doProcess <- function(options) {
n=length(curves[,1])
quitIfNoData(n, curves, OutputData1)
- if(Analysis != "curvesRI") {
+ if(analysisCurves[1] != "curvesRI") {
for(i in 1:n) {
curves[i,1]=reduceCurveBySpeed(Eccon, i, curves[i,1],
rawdata[curves[i,1]:curves[i,2]],
SmoothingOneEC, SmoothingOneC)
@@ -1505,7 +1509,7 @@ doProcess <- function(options) {
adjVert = 0
if(Eccon=="ecS") {
myEc=c("c","e")
- if(Analysis == "curvesRI")
+ if(analysisCurves[1] == "curvesRI")
myEc=c("e","c")
myLabel = paste(trunc((i+1)/2),myEc[((i%%2)+1)],sep="")
myY = rawdata.cumsum[curves[i,1]]/10
@@ -1646,7 +1650,7 @@ doProcess <- function(options) {
if(
Analysis == "powerBars" || analysisCross[1] == "cross" ||
Analysis == "1RMBadillo2010" || analysisCross[1] == "1RMAnyExercise" ||
- Analysis == "curves" || Analysis == "curvesRI" || writeCurves)
+ Analysis == "curves" || analysisCurves[1] == "curvesRI" || writeCurves)
{
paf = data.frame()
discardedCurves = NULL
@@ -1750,7 +1754,7 @@ doProcess <- function(options) {
paint1RMBadillo2010(paf, Title, OutputData1)
}
- if(Analysis == "curves" || Analysis == "curvesRI" || writeCurves) {
+ if(Analysis == "curves" || analysisCurves[1] == "curvesRI" || writeCurves) {
if(singleFile)
paf=cbind(
"1", #seriesName
diff --git a/glade/chronojump.glade b/glade/chronojump.glade
index 276db25..0dece3a 100644
--- a/glade/chronojump.glade
+++ b/glade/chronojump.glade
@@ -12029,13 +12029,14 @@ on current Chronojump version.</property>
<widget class="GtkHBox" id="hbox90">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">8</property>
+ <property name="spacing">4</property>
<child>
<widget class="GtkRadioButton"
id="radiobutton_encoder_capture_linear">
- <property name="label" translatable="yes">Linear
(default)</property>
+ <property name="label"
translatable="yes">Linear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property
name="receives_default">False</property>
+ <property name="tooltip"
translatable="yes">Linear encoder (default)</property>
<property
name="use_action_appearance">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
@@ -12053,7 +12054,7 @@ on current Chronojump version.</property>
<property name="can_focus">True</property>
<property
name="receives_default">False</property>
<property name="has_tooltip">True</property>
- <property name="tooltip"
translatable="yes">Linear Encoder upside down</property>
+ <property name="tooltip"
translatable="yes">Linear encoder upside down</property>
<property
name="use_action_appearance">False</property>
<property name="draw_indicator">True</property>
<property
name="group">radiobutton_encoder_capture_linear</property>
@@ -12065,13 +12066,13 @@ on current Chronojump version.</property>
</packing>
</child>
<child>
- <widget class="GtkRadioButton"
id="radiobutton_encoder_capture_rotary_inertial">
- <property name="label" translatable="yes">Rotary
/ inertial</property>
+ <widget class="GtkRadioButton"
id="radiobutton_encoder_capture_rotary">
+ <property name="label"
translatable="yes">Rotary</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property
name="receives_default">False</property>
<property name="has_tooltip">True</property>
- <property name="tooltip"
translatable="yes">Rotary encoder on inertial machine</property>
+ <property name="tooltip"
translatable="yes">Rotary encoder</property>
<property
name="use_action_appearance">False</property>
<property name="draw_indicator">True</property>
<property
name="group">radiobutton_encoder_capture_linear</property>
@@ -12089,6 +12090,59 @@ on current Chronojump version.</property>
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <widget class="GtkHBox"
id="hbox_encoder_capture_inertial">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkCheckButton"
id="checkbutton_encoder_capture_inertial">
+ <property name="label"
translatable="yes">Inertial</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="tooltip"
translatable="yes">Inertial machine (Yoyo, VersaPulley)</property>
+ <property
name="use_action_appearance">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="clicked"
handler="on_checkbutton_encoder_capture_inertial_clicked" swapped="no"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton"
id="spin_encoder_capture_inertial">
+ <property name="can_focus">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip"
translatable="yes">Inertia Momentum</property>
+ <property name="invisible_char">●</property>
+ <property
name="invisible_char_set">True</property>
+ <property
name="primary_icon_activatable">False</property>
+ <property
name="secondary_icon_activatable">False</property>
+ <property
name="primary_icon_sensitive">True</property>
+ <property
name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0.01 0 1 0.01 0.01
0</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">3</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="expand">True</property>
@@ -12800,7 +12854,7 @@ on current Chronojump version.</property>
<widget class="GtkHBox" id="hbox77">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">10</property>
+ <property name="spacing">8</property>
<child>
<widget class="GtkButton"
id="button_encoder_load_signal">
<property name="visible">True</property>
@@ -12845,7 +12899,7 @@ on current Chronojump version.</property>
<widget class="GtkHBox" id="hbox107">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">4</property>
+ <property name="spacing">8</property>
<child>
<widget class="GtkButton"
id="button_encoder_capture_cancel">
<property name="visible">True</property>
@@ -12917,7 +12971,7 @@ on current Chronojump version.</property>
<widget class="GtkHBox" id="hbox82">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">10</property>
+ <property name="spacing">8</property>
<child>
<widget class="GtkProgressBar"
id="encoder_pulsebar_capture">
<property name="visible">True</property>
@@ -12969,7 +13023,7 @@ on current Chronojump version.</property>
<widget class="GtkHBox" id="hbox87">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">10</property>
+ <property name="spacing">8</property>
<child>
<widget class="GtkHBox" id="hbox85">
<property name="width_request">150</property>
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index 69aad4c..24a4d03 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -37,7 +37,9 @@ public partial class ChronoJumpWindow
[Widget] Gtk.RadioButton radiobutton_encoder_capture_linear;
[Widget] Gtk.RadioButton radiobutton_encoder_capture_linear_inverted;
- [Widget] Gtk.RadioButton radiobutton_encoder_capture_rotary_inertial;
+ [Widget] Gtk.RadioButton radiobutton_encoder_capture_rotary;
+ [Widget] Gtk.CheckButton checkbutton_encoder_capture_inertial;
+ [Widget] Gtk.SpinButton spin_encoder_capture_inertial;
[Widget] Gtk.Button button_encoder_capture;
[Widget] Gtk.RadioButton radiobutton_encoder_capture_safe;
@@ -200,6 +202,9 @@ public partial class ChronoJumpWindow
//the glade cursor_changed does not work on mono 1.2.5 windows
treeview_encoder_capture_curves.CursorChanged +=
on_treeview_encoder_capture_curves_cursor_changed;
createEncoderCombos();
+
+ spin_encoder_capture_inertial.Value = Convert.ToDouble(Util.ChangeDecimalSeparator(
+ SqlitePreferences.Select("inertialmomentum")));
}
void on_button_encoder_capture_clicked (object o, EventArgs args)
@@ -280,6 +285,9 @@ public partial class ChronoJumpWindow
lastRecalculateWasInverted = radiobutton_encoder_capture_linear_inverted.Active;
+ //Update inertia momentum of encoder if needed
+ SqlitePreferences.Update("inertialmomentum", Util.ConvertToPoint((double)
spin_encoder_capture_inertial.Value), false);
+
if (radiobutton_encoder_capture_external.Active) {
encoderStartVideoRecord();
@@ -313,6 +321,10 @@ public partial class ChronoJumpWindow
}
}
+ void on_checkbutton_encoder_capture_inertial_clicked (object o, EventArgs args) {
+ spin_encoder_capture_inertial.Visible = (checkbutton_encoder_capture_inertial.Active);
+ }
+
void on_combo_encoder_exercise_changed (object o, EventArgs args) {
if(UtilGtk.ComboGetActive(combo_encoder_exercise) != "") //needed because
encoder_exercise_edit updates this combo and can be without values in the changing process
encoder_change_displaced_weight_and_1RM ();
@@ -489,8 +501,9 @@ public partial class ChronoJumpWindow
{
string analysis = "curves";
//if(capturingRotaryInertial)
- if(radiobutton_encoder_capture_rotary_inertial.Active)
- analysis = "curvesRI";
+ if(radiobutton_encoder_capture_rotary.Active && checkbutton_encoder_capture_inertial.Active)
+ analysis = "curvesRI;" + Util.ConvertToPoint( //inertial momentum with '.' for R
+ (double) spin_encoder_capture_inertial.Value);
string analysisOptions = "-";
if(encoderPropulsive)
@@ -500,7 +513,7 @@ public partial class ChronoJumpWindow
if(radiobutton_encoder_capture_linear_inverted.Active)
future3 = Constants.EncoderSignalMode.LINEARINVERTED.ToString();
//if(capturingRotaryInertial)
- if(radiobutton_encoder_capture_rotary_inertial.Active)
+ if(radiobutton_encoder_capture_rotary.Active && checkbutton_encoder_capture_inertial.Active)
future3 = Constants.EncoderSignalMode.ROTARYINERTIAL.ToString();
//see explanation on the top of this file
@@ -1014,7 +1027,11 @@ public partial class ChronoJumpWindow
radiobutton_encoder_capture_linear_inverted.Active =
(es.future3 == Constants.EncoderSignalMode.LINEARINVERTED.ToString());
lastRecalculateWasInverted =
radiobutton_encoder_capture_linear_inverted.Active;
- radiobutton_encoder_capture_rotary_inertial.Active =
+ radiobutton_encoder_capture_rotary.Active =
+ (es.future3 == Constants.EncoderSignalMode.ROTARYINERTIAL.ToString());
+
+ //TODO: add also spinbutton
+ checkbutton_encoder_capture_inertial.Active =
(es.future3 == Constants.EncoderSignalMode.ROTARYINERTIAL.ToString());
}
}
@@ -1548,7 +1565,7 @@ public partial class ChronoJumpWindow
//will start calcule curves thread
if(capturedOk) {
- //capturingRotaryInertial = radiobutton_encoder_capture_rotary_inertial.Active;
+ //capturingRotaryInertial = radiobutton_encoder_capture_rotaryl.Active &&
checkbutton_encoder_capture_inertial.Active
calculeCurves();
}
diff --git a/src/sqlite/main.cs b/src/sqlite/main.cs
index e538110..0fc164d 100644
--- a/src/sqlite/main.cs
+++ b/src/sqlite/main.cs
@@ -72,7 +72,7 @@ class Sqlite
* Important, change this if there's any update to database
* Important2: if database version get numbers higher than 1, check if the comparisons with
currentVersion works ok
*/
- static string lastChronojumpDatabaseVersion = "0.96";
+ static string lastChronojumpDatabaseVersion = "0.97";
public Sqlite() {
}
@@ -1303,6 +1303,17 @@ class Sqlite
currentVersion = "0.96";
}
+ if(currentVersion == "0.96") {
+ dbcon.Open();
+
+ SqlitePreferences.Insert ("inertialmomentum", "0.01");
+ Log.WriteLine("Added inertialmomentum in preferences");
+
+ SqlitePreferences.Update ("databaseVersion", "0.97", true);
+ dbcon.Close();
+
+ currentVersion = "0.97";
+ }
}
//if changes are made here, remember to change also in CreateTables()
@@ -1442,6 +1453,7 @@ class Sqlite
SqliteCountry.initialize();
//changes [from - to - desc]
+ //0.96 - 0.97 Converted DB to 0.97 Added inertialmomentum in preferences
//0.95 - 0.96 Converted DB to 0.96 Encoder signal future3 three modes
//0.94 - 0.95 Converted DB to 0.95 Added encoder1RMMethod
//0.93 - 0.94 Converted DB to 0.94 Added encoder1RM table
diff --git a/src/sqlite/preferences.cs b/src/sqlite/preferences.cs
index b6b40c5..30fa71a 100644
--- a/src/sqlite/preferences.cs
+++ b/src/sqlite/preferences.cs
@@ -76,6 +76,7 @@ class SqlitePreferences : Sqlite
Insert ("encoderSmoothCon", "0.7");
Insert ("videoDevice", "0"); //first
Insert ("encoder1RMMethod", Constants.Encoder1RMMethod.WEIGHTED2.ToString());
+ Insert ("inertialmomentum", "0.01");
}
public static void Insert(string myName, string myValue)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]