posctl should work now.

master
Steffen Pohle 2 years ago
parent bffbea0637
commit 281be07ed4

@ -54,6 +54,7 @@ enum {
enum { enum {
POSCTL_CALIB_MODE_OFF = 0, POSCTL_CALIB_MODE_OFF = 0,
POSCTL_CALIB_MODE_START,
POSCTL_CALIB_MODE_STOP1, POSCTL_CALIB_MODE_STOP1,
POSCTL_CALIB_MODE_DELTAM, POSCTL_CALIB_MODE_DELTAM,
POSCTL_CALIB_MODE_AXIS1START, POSCTL_CALIB_MODE_AXIS1START,

@ -595,10 +595,6 @@ gboolean cb_thread_posctl (gpointer data) {
free (data); free (data);
switch (posctl_calib_debug.mode) { switch (posctl_calib_debug.mode) {
case (POSCTL_CALIB_MODE_OFF):
tg = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "cal_mode_off"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true);
break;
case (POSCTL_CALIB_MODE_STOP1): case (POSCTL_CALIB_MODE_STOP1):
tg = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "cal_mode_rs")); tg = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "cal_mode_rs"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true);
@ -628,6 +624,8 @@ gboolean cb_thread_posctl (gpointer data) {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true);
break; break;
default: default:
tg = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "cal_mode_off"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true);
break; break;
} }
} }
@ -717,7 +715,7 @@ void PosCtl::StartCalibration() {
return; return;
} }
mode = POSCTL_MODE_CALIB; mode = POSCTL_MODE_CALIB;
calib_mode = POSCTL_CALIB_MODE_STOP1; calib_mode = POSCTL_CALIB_MODE_START;
gettimeofday (&calib_timestamp, NULL); gettimeofday (&calib_timestamp, NULL);
NotifyGtk(); NotifyGtk();
} }
@ -848,13 +846,13 @@ void PosCtl::CalibModeAxis(int x, int y) {
fp.y = (y - calib_pos.y) / timediff; fp.y = (y - calib_pos.y) / timediff;
if (calib_mode == POSCTL_CALIB_MODE_AXIS1M) { if (calib_mode == POSCTL_CALIB_MODE_AXIS1M) {
calib_axis1_v = fp; calib_axis1_v = fp - calib_rot_v;
calc_vec2anglelen(&calib_axis1_v, &calib_axis1); calc_vec2anglelen(&calib_axis1_v, &calib_axis1);
if (OutputWriteStop()) mode = POSCTL_MODE_OFF; if (OutputWriteStop()) mode = POSCTL_MODE_OFF;
else if (OutputWriteValue(1, pid_axis[1].GetMax())) mode = POSCTL_MODE_OFF; else if (OutputWriteValue(1, pid_axis[1].GetMax())) mode = POSCTL_MODE_OFF;
} }
else if (calib_mode == POSCTL_CALIB_MODE_AXIS2M) { else if (calib_mode == POSCTL_CALIB_MODE_AXIS2M) {
calib_axis2_v = fp; calib_axis2_v = fp - calib_rot_v;
calc_vec2anglelen(&calib_axis2_v, &calib_axis2); calc_vec2anglelen(&calib_axis2_v, &calib_axis2);
} }
@ -896,6 +894,9 @@ void PosCtl::Loop (int posx, int posy) {
// calibration mode? // calibration mode?
if (mode == POSCTL_MODE_CALIB) { if (mode == POSCTL_MODE_CALIB) {
switch (calib_mode) { switch (calib_mode) {
case (POSCTL_CALIB_MODE_START):
CalibModeStart(posx, posy);
break;
case (POSCTL_CALIB_MODE_STOP1): case (POSCTL_CALIB_MODE_STOP1):
case (POSCTL_CALIB_MODE_AXIS1START): case (POSCTL_CALIB_MODE_AXIS1START):
case (POSCTL_CALIB_MODE_AXIS2START): case (POSCTL_CALIB_MODE_AXIS2START):

Loading…
Cancel
Save