|
|
@ -34,6 +34,7 @@ void cb_posctl_show_window (GtkWidget *widget, gpointer data) {
|
|
|
|
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
|
|
|
|
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *wnd = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "window-posctl"));
|
|
|
|
GtkWidget *wnd = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "window-posctl"));
|
|
|
|
|
|
|
|
|
|
|
|
gtk_widget_show(wnd);
|
|
|
|
gtk_widget_show(wnd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -48,6 +49,81 @@ void cb_posctl_btncalib (GtkWidget *widget, gpointer data) {
|
|
|
|
posctl_gui_update();
|
|
|
|
posctl_gui_update();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void cb_posctl_show (GtkWidget *widget, gpointer data) {
|
|
|
|
|
|
|
|
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
posctl_gui_update();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void cb_posctl_btn_axismove (GtkWidget *widget, gpointer data) {
|
|
|
|
|
|
|
|
GtkWidget *btn_a1min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a1_min"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a1center = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a1_center"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a1max = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a1_max"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a2min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a2_min"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a2center = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a2_center"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a2max = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a2_max"));
|
|
|
|
|
|
|
|
double a1min, a2min, a1max, a2max;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
posctl.GetAxisParam(0, &a1min, &a1max, NULL, NULL, NULL);
|
|
|
|
|
|
|
|
posctl.GetAxisParam(1, &a2min, &a2max, NULL, NULL, NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (widget == btn_a1min) posctl.OutputWriteValue(0, a1min);
|
|
|
|
|
|
|
|
else if (widget == btn_a1center) posctl.OutputWriteValue(0, (a1max-a1min)/2.0+a1min);
|
|
|
|
|
|
|
|
else if (widget == btn_a1max) posctl.OutputWriteValue(0, a1max);
|
|
|
|
|
|
|
|
else if (widget == btn_a2min) posctl.OutputWriteValue(1, a1min);
|
|
|
|
|
|
|
|
else if (widget == btn_a2center) posctl.OutputWriteValue(1, (a1max-a1min)/2.0+a1min);
|
|
|
|
|
|
|
|
else if (widget == btn_a2max) posctl.OutputWriteValue(1, a1max);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
posctl_gui_update();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void cb_posctl_change_entry (GtkWidget *widget, gpointer data) {
|
|
|
|
|
|
|
|
double a1min, a1max, a1p, a1i, a1d;
|
|
|
|
|
|
|
|
double a2min, a2max, a2p, a2i, a2d;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *e_posdevice = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_device"));
|
|
|
|
|
|
|
|
GtkWidget *a1_min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_min"));
|
|
|
|
|
|
|
|
GtkWidget *a1_max = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_max"));
|
|
|
|
|
|
|
|
GtkWidget *a1_kp = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_kp"));
|
|
|
|
|
|
|
|
GtkWidget *a1_ki = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_ki"));
|
|
|
|
|
|
|
|
GtkWidget *a1_kd = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_kd"));
|
|
|
|
|
|
|
|
GtkWidget *a2_min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_min"));
|
|
|
|
|
|
|
|
GtkWidget *a2_max = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_max"));
|
|
|
|
|
|
|
|
GtkWidget *a2_kp = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_kp"));
|
|
|
|
|
|
|
|
GtkWidget *a2_ki = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_ki"));
|
|
|
|
|
|
|
|
GtkWidget *a2_kd = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_kd"));
|
|
|
|
|
|
|
|
const char *s;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
posctl.GetAxisParam(0, &a1min, &a1max, &a1p, &a1i, &a1d);
|
|
|
|
|
|
|
|
posctl.GetAxisParam(1, &a2min, &a2max, &a2p, &a2i, &a2d);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
s = gtk_entry_get_text(GTK_ENTRY(widget));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
posctl.LockMutex();
|
|
|
|
|
|
|
|
if (e_posdevice == widget) posctl.SetDevice(s);
|
|
|
|
|
|
|
|
else if (a1_min == widget) a1min = atof(s);
|
|
|
|
|
|
|
|
else if (a1_max == widget) a1max = atof(s);
|
|
|
|
|
|
|
|
else if (a1_kp == widget) a1p = atof(s);
|
|
|
|
|
|
|
|
else if (a1_ki == widget) a1i = atof(s);
|
|
|
|
|
|
|
|
else if (a1_kd == widget) a1d = atof(s);
|
|
|
|
|
|
|
|
else if (a2_min == widget) a2min = atof(s);
|
|
|
|
|
|
|
|
else if (a2_max == widget) a2max = atof(s);
|
|
|
|
|
|
|
|
else if (a2_kp == widget) a2p = atof(s);
|
|
|
|
|
|
|
|
else if (a2_ki == widget) a2i = atof(s);
|
|
|
|
|
|
|
|
else if (a2_kd == widget) a2d = atof(s);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
posctl.SetAxisParam(0, a1min, a1max, a1p, a1i, a1d);
|
|
|
|
|
|
|
|
posctl.SetAxisParam(1, a2min, a2max, a2p, a2i, a2d);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
posctl.UnLockMutex();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void cb_posctl_angles_draw(GtkWidget *area, cairo_t *cr, int w, int h, gpointer data) {
|
|
|
|
void cb_posctl_angles_draw(GtkWidget *area, cairo_t *cr, int w, int h, gpointer data) {
|
|
|
|
int clientw, clienth;
|
|
|
|
int clientw, clienth;
|
|
|
|
|
|
|
|
|
|
|
@ -218,6 +294,7 @@ void cb_posctl_axis_draw(GtkWidget *area, cairo_t *cr, int w, int h, gpointer da
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void posctl_gui_update() {
|
|
|
|
void posctl_gui_update() {
|
|
|
|
char txt[255];
|
|
|
|
char txt[255];
|
|
|
|
|
|
|
|
double kp, ki, kd, mi, ma;
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *caliblabel = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_calib_label"));
|
|
|
|
GtkWidget *caliblabel = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_calib_label"));
|
|
|
|
|
|
|
|
|
|
|
@ -235,12 +312,40 @@ void posctl_gui_update() {
|
|
|
|
GtkWidget *e_cal_a2lenmi = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2lenmi"));
|
|
|
|
GtkWidget *e_cal_a2lenmi = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2lenmi"));
|
|
|
|
GtkWidget *e_cal_a2lenma = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2lenma"));
|
|
|
|
GtkWidget *e_cal_a2lenma = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2lenma"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *e_posdevice = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_device"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a1min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a1_min"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a1center = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a1_center"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a1max = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a1_max"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a2min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a2_min"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a2center = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a2_center"));
|
|
|
|
|
|
|
|
GtkWidget *btn_a2max = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a2_max"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *a1_min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_min"));
|
|
|
|
|
|
|
|
GtkWidget *a1_max = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_max"));
|
|
|
|
|
|
|
|
GtkWidget *a1_kp = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_kp"));
|
|
|
|
|
|
|
|
GtkWidget *a1_ki = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_ki"));
|
|
|
|
|
|
|
|
GtkWidget *a1_kd = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_kd"));
|
|
|
|
|
|
|
|
GtkWidget *a1_out = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_lb_outx"));
|
|
|
|
|
|
|
|
GtkWidget *a2_min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_min"));
|
|
|
|
|
|
|
|
GtkWidget *a2_max = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_max"));
|
|
|
|
|
|
|
|
GtkWidget *a2_kp = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_kp"));
|
|
|
|
|
|
|
|
GtkWidget *a2_ki = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_ki"));
|
|
|
|
|
|
|
|
GtkWidget *a2_kd = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2_kd"));
|
|
|
|
|
|
|
|
GtkWidget *a2_out = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_lb_outy"));
|
|
|
|
|
|
|
|
|
|
|
|
posctl.LockMutex();
|
|
|
|
posctl.LockMutex();
|
|
|
|
int m = posctl.GetMode();
|
|
|
|
int m = posctl.GetMode();
|
|
|
|
|
|
|
|
|
|
|
|
if (m == POSCTL_MODE_OFF) {
|
|
|
|
if (m == POSCTL_MODE_OFF) {
|
|
|
|
gtk_widget_set_sensitive(btnclib, true);
|
|
|
|
gtk_widget_set_sensitive(btnclib, true);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a1min, true);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a1center, true);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a1max, true);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a2min, true);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a2center, true);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a2max, true);
|
|
|
|
gtk_widget_set_sensitive(cbenable, true);
|
|
|
|
gtk_widget_set_sensitive(cbenable, true);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(e_posdevice, true);
|
|
|
|
gtk_label_set_label(GTK_LABEL(caliblabel), (char *) "");
|
|
|
|
gtk_label_set_label(GTK_LABEL(caliblabel), (char *) "");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
@ -249,6 +354,13 @@ void posctl_gui_update() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
gtk_widget_set_sensitive(btnclib, false);
|
|
|
|
gtk_widget_set_sensitive(btnclib, false);
|
|
|
|
gtk_widget_set_sensitive(cbenable, false);
|
|
|
|
gtk_widget_set_sensitive(cbenable, false);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a1min, false);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a1center, false);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a1max, false);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a2min, false);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a2center, false);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(btn_a2max, false);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(e_posdevice, false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.calib_rot_angle);
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.calib_rot_angle);
|
|
|
@ -270,6 +382,35 @@ void posctl_gui_update() {
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.calib_axis2_lenma);
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.calib_axis2_lenma);
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(e_cal_a2lenma), txt);
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(e_cal_a2lenma), txt);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.out[0]);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(a1_out), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.out[1]);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(a2_out), txt);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
posctl.GetAxisParam(0, &mi, &ma, &kp, &ki, &kd);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", mi);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a1_min), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", ma);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a1_max), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", kp);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a1_kp), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", ki);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a1_ki), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", kd);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a1_kd), txt);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
posctl.GetAxisParam(1, &mi, &ma, &kp, &ki, &kd);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", mi);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a2_min), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", ma);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a2_max), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", kp);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a2_kp), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", ki);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a2_ki), txt);
|
|
|
|
|
|
|
|
strfromd (txt, sizeof(txt-1), (const char *)"%f", kd);
|
|
|
|
|
|
|
|
gtk_entry_set_text (GTK_ENTRY(a2_kd), txt);
|
|
|
|
|
|
|
|
|
|
|
|
posctl.UnLockMutex();
|
|
|
|
posctl.UnLockMutex();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -296,9 +437,10 @@ PosCtl::PosCtl() {
|
|
|
|
calib_axis2_angle = 0.0;
|
|
|
|
calib_axis2_angle = 0.0;
|
|
|
|
calib_axis2_lenmi = 0.0;
|
|
|
|
calib_axis2_lenmi = 0.0;
|
|
|
|
calib_axis2_lenma = 0.0;
|
|
|
|
calib_axis2_lenma = 0.0;
|
|
|
|
|
|
|
|
device_fd = -1;
|
|
|
|
|
|
|
|
device = "";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* stop the control or the calibration
|
|
|
|
* stop the control or the calibration
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -345,6 +487,7 @@ void PosCtl::SetAxisParam ( int axis, double min, double max,
|
|
|
|
pid_axis[axis].SetParam(min, max, k, i, d);
|
|
|
|
pid_axis[axis].SetParam(min, max, k, i, d);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PosCtl::GetAxisParam ( int axis, double *min, double *max,
|
|
|
|
void PosCtl::GetAxisParam ( int axis, double *min, double *max,
|
|
|
|
double *k, double *i, double *d) {
|
|
|
|
double *k, double *i, double *d) {
|
|
|
|
|
|
|
|
|
|
|
@ -453,3 +596,37 @@ void PosCtl::Loop (int posx, int posy) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PosCtl::SetDevice (std::string d) {
|
|
|
|
|
|
|
|
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
OutputClose();
|
|
|
|
|
|
|
|
device = d;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PosCtl::OutputClose() {
|
|
|
|
|
|
|
|
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
if (device_fd > 0) close(device_fd);
|
|
|
|
|
|
|
|
device_fd = -1;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PosCtl::OutputOpen() {
|
|
|
|
|
|
|
|
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PosCtl::OutputWriteValue (int axis, double value) {
|
|
|
|
|
|
|
|
printf ("%s:%d %s Axis %d Value:%f\n", __FILE__, __LINE__, __FUNCTION__, axis, value);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PosCtl::OutputWriteStop (int axis) {
|
|
|
|
|
|
|
|
printf ("%s:%d %s Axis %d\n", __FILE__, __LINE__, __FUNCTION__, axis);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void PosCtl::OutputWriteStart (int axis) {
|
|
|
|
|
|
|
|
printf ("%s:%d %s Axis %d\n", __FILE__, __LINE__, __FUNCTION__, axis);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|