von
transcend (Gast)
2012-02-04 19:30
Liebe Forumuser;
Ich habe die Aufgabe von einem Stream, welcher mir kontinuirlich Daten
liefert diese mittels GTK am Bildschirm zu zeigen.
Wie kann ich das mit Labels realisieren?
Also ich will in einem Label, Werte reinschreiben die sich laufen
ändern.
Das gane soll nach generierung des Fensters angezeigt werden.
Geht den das überhaupt?
Hier mein Code, der nur einen String-Wert anzeigt:
1 #include <gtk/gtk.h>
2 #include "rs232.h"
3 #include "receive_rs232.h"
4 5 6 void beenden ( GtkWidget * window ) // Funktion zum Beenden der Anwendung
7 {
8 gtk_main_quit ();
9 }
10 11 int main ( int argc , char ** argv )
12 {
13 char string [ 50 ];
14 int i = 0 ;
15 GtkWidget * window , * hbox , * button , * text ;
16 17 gtk_init ( & argc , & argv );
18 window = gtk_window_new ( GTK_WINDOW_TOPLEVEL );
19 gtk_window_set_title ( GTK_WINDOW ( window ), "Knöpfe" ); // windowtitel definieren
20 g_signal_connect ( G_OBJECT ( window ), "delete_event" , G_CALLBACK ( gtk_main_quit ), NULL );
21 22 gtk_window_set_default_size ( GTK_WINDOW ( window ), 250 , 50 ); // windowgröße definieren
23 gtk_widget_set_size_request ( window , 250 , 50 ); // windowgröße kann nicht kleiner die Angegebenen werte Skaliert werden
24 gtk_window_set_title ( GTK_WINDOW ( window ), "Hey" );
25 gtk_container_set_border_width ( GTK_CONTAINER ( window ), 5 );
26 27 hbox = gtk_hbox_new ( FALSE , 10 );
28 button = gtk_button_new_with_label ( "Button0" );
29 30 sprintf ( string , "%d" , i );
31 text = gtk_label_new ( string ); //Ich will in text die kontinuierlichen Werte reinschreiben und simultan im window anzeigen
32 gtk_box_pack_start_defaults ( GTK_BOX ( hbox ), text );
33 gtk_box_pack_start_defaults ( GTK_BOX ( hbox ), button );
34 35 g_signal_connect ( GTK_BUTTON ( button ), "clicked" , G_CALLBACK ( beenden ), "Programm durch Knopf beendet" );
36 37 38 gtk_container_add ( GTK_CONTAINER ( window ), hbox );
39 gtk_widget_show_all ( window ); // Alles anzeigen
40 gtk_main ();
41 return 0 ;
42 }
Danke schon im Voraus für eure Hilfe.
2012-02-08 10:33 :
Verschoben durch Moderator
von
transcend (Gast)
2012-02-08 10:27
Andy D. schrieb:
> http://www.programmersheaven.com/mb/Linux/366036/3 ...
Vielen Dank für Deine Antwort, einen schönen Tag noch...
lg
von
Marvol (Gast)
2012-02-08 21:14
Hallo,
ich habe dies mit einem Thread realisiert. Hier kannst Du dann auch die
Daten von der Schnittstelle abfragen...
1 #include <gtk/gtk.h>
2 #include "rs232.h"
3 #include "receive_rs232.h"
4 5 guint threadtimerid ;
6 7 static gboolean thread_getdata ( gpointer data )
8 {
9 static int i ;
10 char buffer [ 20 ]; // Unschön, da Speicher fest allokiert.
11 sprintf ( buffer , "%d" , i ++ );
12 gtk_label_set_text ( GTK_LABEL ( data ), buffer ) ;
13 return TRUE ;
14 }
15 16 void beenden ( GtkWidget * window ) // Funktion zum Beenden der Anwendung
17 {
18 gtk_main_quit ();
19 }
20 21 int main ( int argc , char ** argv )
22 {
23 char string [ 50 ];
24 int i = 0 ;
25 GtkWidget * window , * hbox , * button , * text ;
26 27 gtk_init ( & argc , & argv );
28 window = gtk_window_new ( GTK_WINDOW_TOPLEVEL );
29 gtk_window_set_title ( GTK_WINDOW ( window ), "Knöpfe" ); // windowtitel definieren
30 g_signal_connect ( G_OBJECT ( window ), "delete_event" , G_CALLBACK ( gtk_main_quit ), NULL );
31 32 gtk_window_set_default_size ( GTK_WINDOW ( window ), 250 , 50 ); // windowgröße definieren
33 gtk_widget_set_size_request ( window , 250 , 50 ); // windowgröße kann nicht kleiner die Angegebenen werte Skaliert werden
34 gtk_window_set_title ( GTK_WINDOW ( window ), "Hey" );
35 gtk_container_set_border_width ( GTK_CONTAINER ( window ), 5 );
36 37 hbox = gtk_hbox_new ( FALSE , 10 );
38 button = gtk_button_new_with_label ( "Button0" );
39 40 sprintf ( string , "%d" , i );
41 text = gtk_label_new ( string ); //Ich will in text die kontinuierlichen Werte reinschreiben und simultan im window anzeigen
42 gtk_box_pack_start_defaults ( GTK_BOX ( hbox ), text );
43 gtk_box_pack_start_defaults ( GTK_BOX ( hbox ), button );
44 45 g_signal_connect ( GTK_BUTTON ( button ), "clicked" , G_CALLBACK ( beenden ), "Programm durch Knopf beendet" );
46 47 gtk_container_add ( GTK_CONTAINER ( window ), hbox );
48 gtk_widget_show_all ( window ); // Alles anzeigen
49
50 threadtimerid = g_timeout_add ( 20 , thread_getdata , text );
51
52 gtk_main ();
53 return 0 ;
54 }
von
transcend (Gast)
2012-02-11 21:58
Marvol schrieb:
> Hallo,ich habe dies mit einem Thread realisiert. Hier kannst Du dann auch
dieDaten von der Schnittstelle abfragen
Auch Dir eine Dankeschön für Deine Hilfe...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.