somthing works finally.

master
Steffen Pohle 3 years ago
parent 0b33a8d153
commit 7ce366d2ec

@ -95,7 +95,7 @@ void Configuration::SaveConfig(std::string filename) {
jaxis.AddObject("kp", akp); jaxis.AddObject("kp", akp);
jaxis.AddObject("ki", aki); jaxis.AddObject("ki", aki);
jaxis.AddObject("kd", akd); jaxis.AddObject("kd", akd);
printf ("%s:%d save config axis %d Out Range: %f - %f kP:%f kI:%f kD:%f\n", printf ("%s:%d save config axis %d Out Range: %f - %f kP:%g kI:%g kD:%g\n",
__FILE__, __LINE__, i, amin, amax, akp, aki, akd); __FILE__, __LINE__, i, amin, amax, akp, aki, akd);
jp.AddObject("posctl_axis" + to_string(i), jaxis); jp.AddObject("posctl_axis" + to_string(i), jaxis);
} }

@ -181,6 +181,8 @@ G_MODULE_EXPORT void cb_posctl_axis_draw(GtkWidget *area, cairo_t *cr, int w, in
G_MODULE_EXPORT void cb_posctl_change_entry (GtkWidget *widget, gpointer data); G_MODULE_EXPORT void cb_posctl_change_entry (GtkWidget *widget, gpointer data);
G_MODULE_EXPORT void cb_posctl_btn_axismove (GtkWidget *widget, gpointer data); G_MODULE_EXPORT void cb_posctl_btn_axismove (GtkWidget *widget, gpointer data);
G_MODULE_EXPORT void cb_posctl_btnsimreset (GtkWidget *widget, gpointer data);
// //
// menu elements // menu elements
G_MODULE_EXPORT void cb_menu_set_rgbenc (GtkCheckMenuItem *checkmenuitem, gpointer user_data); G_MODULE_EXPORT void cb_menu_set_rgbenc (GtkCheckMenuItem *checkmenuitem, gpointer user_data);

@ -126,7 +126,7 @@ double PID::Update(double target, double value) {
void PID::SetParam (double mi, double ma, double p, double i, double d) { void PID::SetParam (double mi, double ma, double p, double i, double d) {
Kp = p; Kp = p;
Ki = i; Ki = i/1000000.0;
Kd = d; Kd = d;
Min = mi; Min = mi;
Max = ma; Max = ma;
@ -136,7 +136,7 @@ void PID::SetParam (double mi, double ma, double p, double i, double d) {
void PID::GetParam (double *mi, double *ma, double *p, double *i, double *d) { void PID::GetParam (double *mi, double *ma, double *p, double *i, double *d) {
if (p != NULL) *p = Kp; if (p != NULL) *p = Kp;
if (i != NULL) *i = Ki; if (i != NULL) *i = Ki*1000000.0;
if (d != NULL) *d = Kd; if (d != NULL) *d = Kd;
if (mi != NULL) *mi = Min; if (mi != NULL) *mi = Min;
if (ma != NULL) *ma = Max; if (ma != NULL) *ma = Max;

@ -1 +1 @@
<mxfile host="Electron" modified="2023-02-04T00:42:33.956Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="-VtwViZtSer4q-7qMUnd" version="20.3.0" type="device"><diagram id="1p0Bprw3xxz6Ckpdy3R8" name="Seite-1">7Vvfc6M2EP5reKwH/UDAY5xc2l6n05vJQ+/upaOAbHTFyCPk2M5fX2HABslOYh+BCe5T0CKtxH6fdrUrx0G3i82vki6TP0XMUge68cZBdw6EwPU9/aeQbEsJwbgUzCWPq04HwQN/ZvXISrriMctbHZUQqeLLtjASWcYi1ZJRKcW63W0m0vasSzpnluAhoqkt/ZvHKimlAfQP8t8Ynyf1zICE5ZsFrTtXX5InNBbrhgh9ctCtFEKVT4vNLUsL49V2Kcfdn3i7X5hkmXrLgB9/xH99/hw++1P/7sb/ffsswuwXWGp5oumq+uBqsWpbW4Bl8U1hSN2KUprnPHLQNFGLVAuAfpRilcWsmMTVrXI4iy2rHpYJ9h+vWcPEgim51V3WB/N6lcmShmVrmWQpVfyprZ5WKM/36vYzfBFcTwzdipGohqPiIw7ctopcrGTEqlFNcxqKfPKKIkXlnClLkX5ofPZBtEPrDOTQUMjpDbj7shfWhkeBsKkIuP0ijC2Ev1kQK7ZRbVBzJcW/7FakQmpJJjLdczrjaWqIaMrnWcEMjS7T8ukTk4prx3dTvVjwOC6mma4TrtjDkkbFnGvt5k9Qp1DANi+TxyZFNQCGbWMHVdxocIYc4QxyT9Ojhce5xvcs438dr/F9fGLLDGV90rVza2LgQBR7LIixBZh+E8BHRMgHCGSeEX8QuTSQGW5uv8Ce3Jw/VCD78MgRM0CF/SIXWshFK/nPUuTj9ZTENUxOBvaUdZ7UAIFueA5GDIFxUoCDQwDO8mCVVWOaJzuzgGOo1LkmtiyorSS3X4vGBHp1+1s1eNe42zS73m2Ph8BZELEoOhYCHwMPex1nBOGQDpcEBmMuzQigmfP17HDBeUlfxbSTgVJ766c9BU/yyn2FVx2yBLiD0oS8chB684kKGIremDhq3Oi20W1ZdMhfWLDpCVGrAqQfSo3dctBOSzvjYK4No+yT3k58z9Naw1sZN9gBz/A3yMT/0gPeviLRNZFMwoZ9EMlO8uh4Ty0WJ4B9aoG9nlo6z7vMHJuyYHb0gEGigD3OPsJG7ipTw8jYYKDng0Ng7zWdJdiIj2a/ITM2Qnu/9Zsl2Nnyd15clo0VAQ+f2DwNBHCfCNQMuJ5Kk3mDEULvMv9lXnZZit7Zf8HzUux+b7vKtXx4jE1FHu4ZY2hhfEX3XR4aOD5Bu7ZwRTde+10zmPnPS6v/v/JyijLepeHMcHUk7NnV2bfLPwl2o3oHEGqVhSeA+K+U8HatL0xy/WHF5uw8QpJR0MbzDEVmOvjetLErJqO/cDOziGDonyZAu25yZRduvjt0rLSrGS+5z/FduA3lSXGI2psRwws9KQ5aikJgKHrvH0/aucZPBuDxFz8vDptm8ZN4/Z62kJ3ZXFnxk5CBPTays5vrKn4GR2Jmr8VPZKcc4lG3Y1rs1AUtFPxgiZpMJvrJQffjxQYbv+HyjhSmgd8NOLp5+A+P0qEd/k8GffoP</diagram></mxfile> <mxfile host="Electron" modified="2023-02-05T21:56:36.730Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="qnZzmQGoDEGPjH1afGyG" version="20.3.0" type="device"><diagram id="1p0Bprw3xxz6Ckpdy3R8" name="Seite-1">3VnLdpswEP0aL9MDiOcytpM06enjNIsk3fQoIBs1MnKF/MrXVxhhg2Rsx6XEZQUaDSMx92oe0AODyfKGwWn8mUaI9CwjWvbAsGdZpuE54pJJVrnEte1cMGY4kkpbwT1+RcWTUjrDEUoripxSwvG0KgxpkqCQV2SQMbqoqo0oqa46hWOkCe5DSHTpA454nEt9y9vKPyI8jouVTTfIZyawUJZvksYwoouSCFz1wIBRyvO7yXKASOa8wi/5c9c1s5uNMZTwYx749Sn6encXvHp9b3jp3a5eaZBcWLmVOSQz+cJys3xVeAAl0WXmSDEKCUxTHPZAP+YTIgSmuGV0lkQoW8QQI31XcqMoqjha7vEG0QnibCUUFlv3OtJlccmzhYwhAjmeV+GBEuXxxtxmhW8Ui51YhmQkKOCQfLR9o2oipTMWIvlU2Z2KIc89YIhDNkZcMyRuSq+9Fa3RegNyoDXk8hfZsxW7mwirhkyjXYRtDeEnDWKOlrwKasoZfUEDSigTkoQmQrM/woQoIkjwOMmYIeBGQt6fI8axCHyXcmKCoyhbpr+IMUf3Uxhmay5EmD+eOplNtNxLCjlrBVVn+zJvlDjj7uAMMOrpUcHjrc53NOc/dtf5nl1zZN7L+27Twa2MQc8CkYP8yNYAEzO+9Qxc9z9IZI6Sf4B7aiJTwtxmgy2FOa+1RNY15Fw1QQXtIhdoyIUz9nNK0+5GStdQXO6+c6Qs+qQSCHCJU7PDECiVgvXuEJgaBPsimPRqBNN47RZzFypFr2lrHhSOY6vHbPDBcorxk3x4PRguy6rDVU0KhMgfhbtSoBv66Hn0Vx1BcFYB1/UVxpzaEVhqz9dywDXf1vRJptUmShGt5xsK1vLKOMCr01lSxK5zoYl7oBA6uqIyFUNHNo4CN7gqqU0zhXTPhtVICCpfgMRNbrFZDuptaWMcTIVjuF7prcXXmBQWahl3JkRylHgDVPxPLfA2XySaJpJK2KANIulNHuxu1aJxwtSrFqvVqqXxvqvBAuNcDnJTnZoNlANmtlw4+PpZE12CjnhnzhtQc6Oln7d2uwS9W/6Bs59lXUXAsWsOTwkB+x8h8BsOvjwi+5lcvZDvw9v5zOk/XLTapp36wVGJfDsweLfy+NDXpqODoXo0G/tzJobb/6m5+vavNLj6Aw==</diagram></mxfile>

@ -297,8 +297,8 @@ void cb_posctl_entryanglelen (GtkWidget *widget, gpointer data) {
}; };
#define AXIS_DIFF_MIN -10.0 #define AXIS_DIFF_MIN -20.0
#define AXIS_DIFF_MAX 10.0 #define AXIS_DIFF_MAX 20.0
void cb_posctl_axis_draw(GtkWidget *area, cairo_t *cr, int w, int h, gpointer data) { void cb_posctl_axis_draw(GtkWidget *area, cairo_t *cr, int w, int h, gpointer data) {
GtkWidget *da1 = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_da_axis1")); GtkWidget *da1 = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_da_axis1"));
@ -406,13 +406,12 @@ void posctl_gui_update() {
char txt[255]; char txt[255];
double kp, ki, kd, mi, ma; double kp, ki, kd, mi, ma;
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
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"));
GtkWidget *btnclib = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_calib")); GtkWidget *btnclib = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_calib"));
GtkWidget *btnstop = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_stop")); GtkWidget *btnstop = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_stop"));
GtkWidget *btncontrol = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_control")); GtkWidget *btncontrol = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_control"));
GtkWidget *btnsimreset = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_resetsim"));
GtkWidget *e_cal_rotangle = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_rotangle")); GtkWidget *e_cal_rotangle = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_rotangle"));
GtkWidget *e_cal_rotlen = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_rotlen")); GtkWidget *e_cal_rotlen = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_rotlen"));
@ -422,6 +421,8 @@ void posctl_gui_update() {
GtkWidget *e_cal_a2angle = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2angle")); GtkWidget *e_cal_a2angle = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2angle"));
GtkWidget *e_cal_a2len = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2len")); GtkWidget *e_cal_a2len = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a2len"));
GtkWidget *lb_earthaxis = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_lb_earthaxis"));
GtkWidget *lb_axisaxis = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_lb_axisaxis"));
GtkWidget *e_posdevice = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_device")); 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_a1min = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a1_min"));
@ -431,6 +432,7 @@ void posctl_gui_update() {
GtkWidget *btn_a2center = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_btn_a2_center")); 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 *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_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_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_kp = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "posctl_entry_a1_kp"));
@ -493,8 +495,12 @@ void posctl_gui_update() {
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.calib_axis2.l); strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.calib_axis2.l);
gtk_entry_set_text (GTK_ENTRY(e_cal_a2len), txt); gtk_entry_set_text (GTK_ENTRY(e_cal_a2len), txt);
gtk_entry_set_text (GTK_ENTRY(e_posdevice), posctl.GetDevice().c_str()); strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.calib_rot.a - posctl.calib_axis1.a);
gtk_label_set_text (GTK_LABEL(lb_earthaxis), txt);
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.calib_axis1.a - posctl.calib_axis2.a);
gtk_label_set_text (GTK_LABEL(lb_axisaxis), txt);
gtk_entry_set_text (GTK_ENTRY(e_posdevice), posctl.GetDevice().c_str());
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.axis_op[0]); strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.axis_op[0]);
gtk_label_set_text(GTK_LABEL(a1_out), txt); gtk_label_set_text(GTK_LABEL(a1_out), txt);
strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.axis_op[1]); strfromd (txt, sizeof(txt-1), (const char *)"%f", posctl.axis_op[1]);
@ -529,6 +535,10 @@ void posctl_gui_update() {
strfromd (txt, sizeof(txt-1), (const char *)"%f", kd); strfromd (txt, sizeof(txt-1), (const char *)"%f", kd);
gtk_entry_set_text_nofocus (a2_kd, txt); gtk_entry_set_text_nofocus (a2_kd, txt);
const gchar *txtptr = gtk_entry_get_text(GTK_ENTRY(e_posdevice));
if (strncmp(txtptr, "SIMULATION", 11) == 0) gtk_widget_show (btnsimreset);
else gtk_widget_hide (btnsimreset);
posctl.UnLockMutex(); posctl.UnLockMutex();
} }
@ -752,27 +762,18 @@ void PosCtl::Loop (int posx, int posy) {
// dist_axis2 --> will control pis_axis1 // dist_axis2 --> will control pis_axis1
else if (mode == POSCTL_MODE_CONTROL) { else if (mode == POSCTL_MODE_CONTROL) {
position_f_2d p; position_f_2d p;
double d;
LockMutex(); LockMutex();
// calculate // calculate
// dist_axis < 0.0 pid should increase the output. // dist_axis < 0.0 pid should increase the output.
// > 0.0 pid should decrease the output // > 0.0 pid should decrease the output
p.x = 0.0; p.y = 0.0;
d = calib_axis1_v.perpendicular(calib_axis2_v, p);
p.x = posx; p.y = posy; p.x = posx; p.y = posy;
axis_pv[0] = calib_axis2_v.perpendicular(p, target_pos); axis_pv[0] = calib_axis2_v.perpendicular(p, target_pos);
axis_pv[1] = calib_axis1_v.perpendicular(p, target_pos); axis_pv[1] = calib_axis1_v.perpendicular(p, target_pos);
axis_op[0] = pid_axis[0].Update(0.0, axis_pv[0]); axis_op[0] = pid_axis[0].Update(0.0, axis_pv[0]);
axis_op[1] = pid_axis[1].Update(0.0, axis_pv[1]); axis_op[1] = pid_axis[1].Update(0.0, axis_pv[1]);
printf ("%s:%d %s", __FILE__, __LINE__, __FUNCTION__);
printf (" d: %+6.3f ", d);
printf (" Axis1 [dist:%+6.3f out1:%+6.3f] ", axis_pv[0], axis_op[0]);
printf (" Axis2 [dist:%+6.3f out2:%+6.3f]\n", axis_pv[1], axis_op[1]);
OutputWriteValue(0, axis_op[0]); OutputWriteValue(0, axis_op[0]);
OutputWriteValue(1, axis_op[1]); OutputWriteValue(1, axis_op[1]);

@ -650,6 +650,16 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-execute</property> <property name="stock">gtk-execute</property>
</object> </object>
<object class="GtkImage" id="image_question">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="stock">gtk-dialog-question</property>
</object>
<object class="GtkImage" id="image_refresh">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="stock">gtk-refresh</property>
</object>
<object class="GtkWindow" id="window-posctl"> <object class="GtkWindow" id="window-posctl">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="border-width">4</property> <property name="border-width">4</property>
@ -791,7 +801,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<!-- n-columns=3 n-rows=4 --> <!-- n-columns=4 n-rows=4 -->
<object class="GtkGrid"> <object class="GtkGrid">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -946,6 +956,32 @@
<property name="top-attach">3</property> <property name="top-attach">3</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel" id="posctl_lb_axisaxis">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">NAN °</property>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">2</property>
<property name="height">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="posctl_lb_earthaxis">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">NAN °</property>
</object>
<packing>
<property name="left-attach">3</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child> <child>
<placeholder/> <placeholder/>
</child> </child>
@ -985,15 +1021,43 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="posctl_btn_control"> <object class="GtkBox">
<property name="label" translatable="yes">Start Control</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">True</property> <child>
<property name="image">image_control</property> <object class="GtkButton" id="posctl_btn_resetsim">
<property name="always-show-image">True</property> <property name="label" translatable="yes">Reset Simulation</property>
<signal name="activate" handler="cb_posctl_btncontrol" swapped="no"/> <property name="can-focus">True</property>
<signal name="pressed" handler="cb_posctl_btncontrol" swapped="no"/> <property name="receives-default">True</property>
<property name="image">image_question</property>
<property name="always-show-image">True</property>
<signal name="activate" handler="cb_posctl_btnsimreset" swapped="no"/>
<signal name="pressed" handler="cb_posctl_btnsimreset" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="posctl_btn_control">
<property name="label" translatable="yes">Start Control</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image_control</property>
<property name="always-show-image">True</property>
<signal name="activate" handler="cb_posctl_btncontrol" swapped="no"/>
<signal name="pressed" handler="cb_posctl_btncontrol" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -1605,7 +1669,7 @@
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">X</property> <property name="label" translatable="yes">Axis1:</property>
</object> </object>
<packing> <packing>
<property name="left-attach">0</property> <property name="left-attach">0</property>
@ -1616,7 +1680,7 @@
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Y</property> <property name="label" translatable="yes">Axis2:</property>
</object> </object>
<packing> <packing>
<property name="left-attach">0</property> <property name="left-attach">0</property>
@ -1744,11 +1808,6 @@
</object> </object>
</child> </child>
</object> </object>
<object class="GtkImage" id="image_refresh">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="stock">gtk-refresh</property>
</object>
<object class="GtkWindow" id="window-histogram"> <object class="GtkWindow" id="window-histogram">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="title" translatable="yes">Histogram</property> <property name="title" translatable="yes">Histogram</property>

@ -18,6 +18,11 @@
Simulation simulation; Simulation simulation;
gpointer simulation_threadprocess_wrapper (gpointer data); gpointer simulation_threadprocess_wrapper (gpointer data);
void cb_posctl_btnsimreset (GtkWidget *widget, gpointer data) {
simulation.Reset();
}
VideoDev_Simulation::VideoDev_Simulation() { VideoDev_Simulation::VideoDev_Simulation() {
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__); printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
conf_width = 1920; conf_width = 1920;
@ -180,14 +185,21 @@ gpointer simulation_threadprocess_wrapper (gpointer data) {
} }
Simulation::Simulation() { Simulation::Simulation() {
int i;
w = 1920; w = 1920;
h = 1080; h = 1080;
posX = w/2; posX = w/2;
posY = h/2; posY = h/2;
running = 0; running = 0;
Reset();
};
void Simulation::Reset() {
int i;
LockMutex();
time_t t = time(NULL); time_t t = time(NULL);
srandom (t); srandom (t);
@ -195,7 +207,6 @@ Simulation::Simulation() {
// object movement // object movement
dAngle = 360.0 * (double)random() / (double) RAND_MAX; dAngle = 360.0 * (double)random() / (double) RAND_MAX;
dLen = 1.0 + 5.0 * (double)random() / (double) RAND_MAX; dLen = 1.0 + 5.0 * (double)random() / (double) RAND_MAX;
printf ("%s:%d %s dAngle:%f dLen:%f\n", __FILE__, __LINE__, __FUNCTION__, dAngle, dLen); printf ("%s:%d %s dAngle:%f dLen:%f\n", __FILE__, __LINE__, __FUNCTION__, dAngle, dLen);
// //
@ -214,8 +225,8 @@ Simulation::Simulation() {
printf ("%s:%d %s Axis1: %f° Len:%f Axis2: %f° Len:%f\n", __FILE__, __LINE__, __FUNCTION__, printf ("%s:%d %s Axis1: %f° Len:%f Axis2: %f° Len:%f\n", __FILE__, __LINE__, __FUNCTION__,
axis[0].defAngle,axis[0].defLen, axis[1].defAngle,axis[1].defLen); axis[0].defAngle,axis[0].defLen, axis[1].defAngle,axis[1].defLen);
UnLockMutex();
}; }
Simulation::~Simulation() { Simulation::~Simulation() {
LockMutex (); LockMutex ();

@ -55,7 +55,7 @@ public:
void Start(); void Start();
void Stop(); void Stop();
void Reset();
void AxisSetValue(int a, double v); void AxisSetValue(int a, double v);
void AxisStop(); void AxisStop();

Loading…
Cancel
Save