Rpi 3 B+ GPIO + GUI (Raspbian)
2019-01-10T08:59:01+01:00
2019-01-10T12:48:42+01:00
2022-08-18T22:50:35+02:00
*deleted_25520519
Sziasztok!

Hogyan lehet egy C GUI alkalmazásból GPIO-t olvasni és reagálni rá?
Vagyis elméletem szerint ha egy bemeneten H szintet kap akkor enneg generálnia kellene egy signalt amelyhez csatlakozva lefutna a függvényem? Vagy ehhez egy úgynevezett GPIO pin olvasó daemonra van szükségem?

Ez az egész homályos nekem még kicsit, itt egy példa:

#include <gtk/gtk.h>




GtkWidget *g_lbl_hello;


GtkWidget *g_lbl_count;




int main(int argc, char *argv[])


{


    GtkBuilder      *builder;


    GtkWidget       *window;




    gtk_init(&argc, &argv);




    builder = gtk_builder_new();


    gtk_builder_add_from_file (builder, "glade/window_main.glade", NULL);




    window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));


    gtk_builder_connect_signals(builder, NULL);




    // get pointers to the two labels


    g_lbl_hello = GTK_WIDGET(gtk_builder_get_object(builder, "lbl_hello"));


    g_lbl_count = GTK_WIDGET(gtk_builder_get_object(builder, "lbl_count"));




    g_object_unref(builder);




    gtk_widget_show(window);                


    gtk_main();




    return 0;


}




// called when button is clicked


void on_btn_hello_clicked()


{


    static unsigned int count = 0;


    char str_count[30] = {0};




    gtk_label_set_text(GTK_LABEL(g_lbl_hello), "Hello, world!");


    count++;


    sprintf(str_count, "%d", count);


    gtk_label_set_text(GTK_LABEL(g_lbl_count), str_count);


}




// called when window is closed


void on_window_main_destroy()


{


    gtk_main_quit();


}

A gtk_main()-nek muszáj meghívni különben nem fut a GUI. De emellett most másik szálat kellene futtatni? Vagy hogyan tudok az eseménykezelőbe üzeneteket küldeni amelyet elkap a programom és reagál rá?

a cél (csak példának illisztrálva hogy miért is kellene ez): egy GPIO bemeneti állapotára pl egy kört piros vagy zöld színre váltani.
Mutasd a teljes hozzászólást!
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd