#include <gui.h>
Öffentliche Methoden | |
GUI_Window (int width, int height, char *title) | |
virtual | ~GUI_Window (void) |
Private, statische Methoden | |
static void | cb_file_quit (Fl_Widget *, void *) |
static void | cb_file_connect (Fl_Widget *, void *) |
static void | cb_help_info (Fl_Widget *, void *) |
static void | cb_cmd_anima (Fl_Widget *, void *) |
static void | cb_cmd_reanima (Fl_Widget *, void *) |
static void | cb_cmd_inanima (Fl_Widget *, void *) |
static void | cb_cmd_abort (Fl_Widget *, void *) |
static void | cb_cmd_send_code (Fl_Widget *, void *) |
static void | cb_diag_dump_map (Fl_Widget *, void *) |
static void | cb_debug_map (Fl_Widget *, void *) |
static void | cb_debug_obstacles (Fl_Widget *, void *) |
static void | cb_check_net_msg (void *) |
static void | cb_ping (void *) |
static void | cb_redraw_gl_window (void *) |
static void | cb_check_errors (void *) |
Private Attribute | |
GUI_GL_Window * | gl_win |
Fenster für das Modell. | |
Fl_Text_Display * | text_out |
Widget für die Textausgabe. | |
Fl_Text_Buffer * | text_out_buffer |
Puffer für die Textausgabe. | |
Fl_Text_Editor * | text_in |
Widget für die Texteingabe. | |
Fl_Text_Buffer * | text_in_buffer |
Puffer für die Texteingabe. | |
Fl_Menu_Bar * | menu |
Menü. | |
Fl_GIF_Image * | img_conn_on |
Bild, das eine aktive Netzwerkverbindung kennzeichnet. | |
Fl_GIF_Image * | img_conn_off |
Bild, das eine inaktive Netzwerkverbindung kennzeichnet. | |
Fl_Box * | conn_state |
Box, die den aktuellen Status der Netzwerkverbindung anzeigt. | |
Fl_Button * | btn_send |
Fl_Button * | btn_anima |
Fl_Button * | btn_halt |
Fl_Value_Output * | battery_voltage |
Fl_Value_Output * | robot_sigma_x |
Fl_Value_Output * | robot_sigma_y |
Fl_Value_Output * | robot_sigma_z |
Fl_Value_Output * | robot_sigma_angle |
module_net * | mod_net |
module_conf * | mod_conf |
module_parser * | mod_parser |
module_log * | mod_log |
module_map * | mod_map |
unsigned char | MSG_START_PHASE_1 |
unsigned char | MSG_START_PHASE_2 |
unsigned char | MSG_PREPARE |
unsigned char | MSG_CODE |
unsigned char | MSG_ABORT |
net_msg_hdr | old_hdr |
bool | waiting_for_params |
bool | waiting_for_execution |
vector< saved_net_msg > | buffered_messages |
GUI_Window::GUI_Window | ( | int | width, | |
int | height, | |||
char * | title | |||
) |
Konstruktor für das Hauptfenster des GUI. Hier werden alle Steuerelemente initialisiert sowie deren Callback-Funktionen gesetzt. Zudem fragt das GUI beim Module Master an, ob alle benötigten Module verfügbar sind.
width | Breite des Fensters | |
height | Höhe des Fenster | |
title | Titel des Fensters |
GUI_Window::~GUI_Window | ( | void | ) | [virtual] |
Destruktor, der den Speicher wieder freigibt. Dies ist ein Muss, ansonsten wird das GUI beispielsweise unter Windows nach mehreren Aufrufen nicht mehr funktionieren.
void GUI_Window::cb_check_errors | ( | void * | ptr | ) | [static, private] |
Liest eventuell angefallene Fehler, Warnungen und Informationsmeldungen vom Log-Modul aus und trägt diese in Widget des GUI ein.
ptr | Ein Zeiger auf das GUI, sodass auf alle Funktionen zugegriffen werden kann. |
void GUI_Window::cb_check_net_msg | ( | void * | ptr | ) | [static, private] |
Überprüft in gewissen Abständen, ob neue Nachrichten beim Netzwerkmodul eingetroffen sind.
ptr | Ein Zeiger auf das GUI. |
void GUI_Window::cb_cmd_abort | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
Bringt den Roboter dazu, alle Aktionen abzubrechen und das aufgespielte Programm neuzustarten. Diese Funktion sollte nur dann genutzt werden, wenn etwas in der Programmierung schiefgelaufen ist.
w | Das Widget, das den Callback verursacht hat | |
ptr | Ein Zeiger auf das GUI |
void GUI_Window::cb_cmd_anima | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
Sendet die Nachricht zum Einschalten des Roboters. Dabei wird automatisch ein neues Programm auf den Roboter übertragen und sogleich ausgeführt.
w | Das Widget, das den Callback verursacht hat | |
ptr | Ein Zeiger auf das GUI |
void GUI_Window::cb_cmd_inanima | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
Sendet die Nachricht zum Abschalten des Roboters.
w | Das Widget, das den Callback verursacht hat | |
ptr | Ein Zeiger auf das GUI |
void GUI_Window::cb_cmd_reanima | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
Reanimiert den Roboter. Damit wird das Hauptprogramm wieder ausgeführt, sodass der Roboter nach einem Fehler wieder verwendet werden kann.
w | Das Widget, das den Callback verursacht hat | |
ptr | Ein Zeiger auf das GUI |
void GUI_Window::cb_cmd_send_code | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
Liest den vom Benutzer eingegebenen Quelltext und ordnet ihm zuvor definierte Befehle zu. Diese werden an den Server-PC gesandt, der aus ihnen ein auf dem Roboter ausführbares Programm erstellt.
Der Quelltext ist der Text, den der Benutzer in das Fl_Text_Editor-Widget namens "text_in" geschrieben hat. geschrieben hat.
w | Das Widget, das den Callback verursacht hat. | |
ptr | Ein Zeiger auf das GUI. Wird benötigt wegen des Zugriffs auf Membervariablen. |
void GUI_Window::cb_debug_map | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
DEBUG: Führt einen Kartentest durch. Diese Funktion kann nur über das Menü aufgerufen werden, wenn DEBUG definiert ist.
Zum Testen der Karte werden Pfade zufälligen Typs an zufälligen Stellen eingefügt. Diese werden danach zur späteren Analyse in die Datei paths.dat geschrieben.
w | Das Widget, das den Callback verursacht hat. | |
ptr | Ein Zeiger auf das GUI |
void GUI_Window::cb_debug_obstacles | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
DEBUG: Führt einen Hindernistest durch. Diese Funktion kann nur über das Menü aufgerufen werden, wenn DEBUG definiert ist.
Zum Testen der Hindernisdarstellung werden Hindernisse an zufälligen Stellen mit zufälligen Winkeln eingefügt.
w | Das Widget, das den Callback verursacht hat. | |
ptr | Ein Zeiger auf das GUI |
void GUI_Window::cb_diag_dump_map | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
Speichert alle bisher gefahrenen Pfade des Roboters in einer Datei ab, sodass sich beispielsweise mittels Gnuplot ein genaues Profil der Roboterbewegungen darstellen lässt.
w | Widget, das den Callback ausgelöst hat. | |
ptr | Zeiger auf das GUI |
void GUI_Window::cb_file_connect | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
Callback-Funktion, die sich auf den Menüpunkt Datei->Verbindung herstellen bezieht. Sie zeigt ein Fenster an, das den Benutzer auffordert, eine Adresse der Art "ServerName:Port" einzugeben. Danach versucht das GUI, eine Verbindung über das Netzwerkmodul herzustellen.
w | Das Widget, das den Callback ausgelöst hat. Nicht verwendet. | |
ptr | Ein Zeiger auf das GUI. Nur so ist der Zugriff auf Membervariablen möglich. |
void GUI_Window::cb_file_quit | ( | Fl_Widget * | w, | |
void * | ptr | |||
) | [static, private] |
Callback-Funktion, die das Fenster schließt. Damit wird dann sofort das Programm beendet.
w | Das Widget, das den Callback ausgelöst hat. Nicht verwendet. | |
ptr | Ein Zeiger auf das GUI. Die Funktion ruft dann die callback-Funktion des Hauptfensters auf. |
void GUI_Window::cb_help_info | ( | Fl_Widget * | w, | |
void * | dummy | |||
) | [static, private] |
Callback-Funktion, die sich auf den Menüpunkt Hilfe->Über bezieht und ein kurzes Fenster mit Informationen zum Programm anzeigt. Mehr eine Spielerei und ein Test für das GUI.
w | Das Widget, das den Callback verursachte. | |
dummy | Nicht verwendet. |
void GUI_Window::cb_ping | ( | void * | ptr | ) | [static, private] |
Sendet eine Ping-Nachricht an den Server, um zu sehen, ob dieser noch aktiv ist. Falls nicht, so wird die Verbindung geschlossen.
ptr | Ein Zeiger auf das GUI. Nur so ist der Zugriff auf Membervariablen möglich. |
void GUI_Window::cb_redraw_gl_window | ( | void * | ptr | ) | [static, private] |
Zeichnet das OpenGL-Fenster neu. Somit können Animationen in annehmbaren Tempo abgespielt werden. Dieser Callback wird als Timeout aufgerufen, sodass in etwa 25 FPS möglich sind. Ebenso ruft dieser Callback die Update-Funktion der Karte auf, sodass eventuell inaktive Pfade gefunden werden.
ptr | Ein Zeiger auf das GUI-Fenster |
Fl_Value_Output* GUI_Window::battery_voltage [private] |
Fl_Button* GUI_Window::btn_anima [private] |
Fl_Button* GUI_Window::btn_halt [private] |
Fl_Button* GUI_Window::btn_send [private] |
vector<saved_net_msg> GUI_Window::buffered_messages [private] |
Enthält alle Nachrichten mit Parametern, die zu einer Konversation mit dem Roboter gehören.
Fl_Box* GUI_Window::conn_state [private] |
Box, die den aktuellen Status der Netzwerkverbindung anzeigt.
GUI_GL_Window* GUI_Window::gl_win [private] |
Fenster für das Modell.
Fl_GIF_Image* GUI_Window::img_conn_off [private] |
Bild, das eine inaktive Netzwerkverbindung kennzeichnet.
Fl_GIF_Image* GUI_Window::img_conn_on [private] |
Bild, das eine aktive Netzwerkverbindung kennzeichnet.
Fl_Menu_Bar* GUI_Window::menu [private] |
Menü.
module_conf* GUI_Window::mod_conf [private] |
module_log* GUI_Window::mod_log [private] |
module_map* GUI_Window::mod_map [private] |
module_net* GUI_Window::mod_net [private] |
module_parser* GUI_Window::mod_parser [private] |
unsigned char GUI_Window::MSG_ABORT [private] |
unsigned char GUI_Window::MSG_CODE [private] |
unsigned char GUI_Window::MSG_PREPARE [private] |
unsigned char GUI_Window::MSG_START_PHASE_1 [private] |
unsigned char GUI_Window::MSG_START_PHASE_2 [private] |
net_msg_hdr GUI_Window::old_hdr [private] |
Dieser Header speichert einen Header mit Parametern zwischen, sodass der Callback cb_check_net_msg diese zu einem späteren Zeitpunkt lesen kann.
Fl_Value_Output* GUI_Window::robot_sigma_angle [private] |
Fl_Value_Output* GUI_Window::robot_sigma_x [private] |
Fl_Value_Output* GUI_Window::robot_sigma_y [private] |
Fl_Value_Output* GUI_Window::robot_sigma_z [private] |
Fl_Text_Editor* GUI_Window::text_in [private] |
Widget für die Texteingabe.
Fl_Text_Buffer* GUI_Window::text_in_buffer [private] |
Puffer für die Texteingabe.
Fl_Text_Display* GUI_Window::text_out [private] |
Widget für die Textausgabe.
Fl_Text_Buffer* GUI_Window::text_out_buffer [private] |
Puffer für die Textausgabe.
bool GUI_Window::waiting_for_execution [private] |
Dieses Flag wird gesetzt, wenn das GUI noch auf die Ausführung der Befehle wartet, die an den Roboter gesendet wurden. Während dieser Wartezeit ist es nicht möglich, andere Befehle an den Roboter zu übertragen.
bool GUI_Window::waiting_for_params [private] |
Dieses Flag wird gesetzt, wenn der Callback cb_check_net_msg noch auf die vollständige Übertragung von Parametern wartet.