Raspberry pi gtk

  • Konbuyu başlatan eren-o
  • Başlangıç tarihi

eren-o

Üye
Katılım
24 Nis 2021
Mesajlar
28
Puanları
3
Yaş
20
Arkadaşlar mesafe ölçümü için gtk penceresinde çalıştır dediğimde bu hataları alıyorum nasıl düzeltebilirim?
 

Ekli dosyalar

  • Ekran görüntüsü 2021-05-04 141341.png
    Ekran görüntüsü 2021-05-04 141341.png
    364.8 KB · Görüntüleme: 9

FakirMaker

Katılımcı Üye
Katılım
5 May 2009
Mesajlar
468
Puanları
58
Kodu görmeden nasıl cevap yazabiliriz buna. 9. ve 13. satırda yazım yanlışı var diyor
 
Konu Sah

eren-o

Üye
Katılım
24 Nis 2021
Mesajlar
28
Puanları
3
Yaş
20
Kodu görmeden nasıl cevap yazabiliriz buna. 9. ve 13. satırda yazım yanlışı var diyor

Kodlarım bunlar gtk ile çalıştır dediğimde sadece 2 değerini gösteriyor nerede hata yaptım anlayamadım
Kod:
#include <gtk/gtk.h>
#include <string.h>
#include <wiringPi.h>
#include <stdlib.h>
#include <stdio.h>
GtkWidget *window;
GtkWidget *button_01;
GtkWidget *button_02;
GtkWidget *label0;
GtkWidget *label1;
GtkWidget *label2;
#define TRIG 22
#define ECHO 25
char r_string[30];
void setup()
{
        wiringPiSetupGpio();
        pinMode(TRIG, OUTPUT);
        pinMode(ECHO, INPUT);

        //TRIG pin must start LOW
        digitalWrite(TRIG, LOW);
        delay(30);
}

int getCM()
{
        //Send trig pulse
        digitalWrite(TRIG, HIGH);
        delayMicroseconds(20);
        digitalWrite(TRIG, LOW);

        //Wait for echo start
        while(digitalRead(ECHO) == LOW);

        //Wait for echo end
        long startTime = micros();
        while(digitalRead(ECHO) == HIGH);
        long travelTime = micros() - startTime;

        //Get distance in cm
        int distance = travelTime / 58;

        return distance;
}
static void print_hello (GtkWidget *widget, gpointer data)
{
for (int mac1=0;mac1<10;mac1++);
gtk_label_set_text(GTK_LABEL(label0),(const gchar*)r_string);
sprintf(r_string,"Distance: %dcm\n");
}
static void activate (GtkApplication *app, gpointer user_data)
{

window = gtk_application_window_new (app);;
button_01 = gtk_button_new_with_label("This is button 01");
g_signal_connect (button_01, "clicked", G_CALLBACK (print_hello), NULL);
button_02 = gtk_button_new_with_label("This is button 02");
g_signal_connect (button_02, "clicked", G_CALLBACK (print_hello), NULL);
label0 = gtk_label_new("hello 0");
label1 = gtk_label_new("hello 1");
label2 = gtk_label_new("hello 2");
GtkWidget *main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 25);

GtkCssProvider *cssProvider = gtk_css_provider_new();
gtk_css_provider_load_from_path(cssProvider, "theme.css", NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(cssProvider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_box_set_homogeneous (GTK_BOX (main_box), TRUE);
gtk_container_add (GTK_CONTAINER (window), main_box);
gtk_container_add (GTK_CONTAINER (main_box), button_01);
gtk_container_add (GTK_CONTAINER (main_box), label0);
gtk_container_add (GTK_CONTAINER (main_box), label1);
gtk_container_add (GTK_CONTAINER (main_box), label2);
gtk_container_add (GTK_CONTAINER (main_box), button_02);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all (window);
}

int main (int argc, char **argv)
{
GtkApplication *app;
int status;

app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);

while (1) {printf("MESAFE: %dcm\n", getCM()); delay(1000);}
return status;
}
 
Moderatör tarafında düzenlendi:

FakirMaker

Katılımcı Üye
Katılım
5 May 2009
Mesajlar
468
Puanları
58
printf fonksiyonu consol da çalışır sen pencere üzerinde değer görüntülemeye çalışıyorsun. printf yerine pencereye eklediğin label lardan birisinin içeriğini değiştirmen gerekir. Yani aşağıdakine benzer bir şey yazman gerekir. Tabi gtk labellar doğrudan int değerleri yazamayabilir. Belki önce değiştirmek gerekebilir.


C++:
while (1) {
    gtk_label_set_text(GTK_LABEL(label1),getCM());
}
 
Konu Sah

eren-o

Üye
Katılım
24 Nis 2021
Mesajlar
28
Puanları
3
Yaş
20
printf fonksiyonu consol da çalışır sen pencere üzerinde değer görüntülemeye çalışıyorsun. printf yerine pencereye eklediğin label lardan birisinin içeriğini değiştirmen gerekir. Yani aşağıdakine benzer bir şey yazman gerekir. Tabi gtk labellar doğrudan int değerleri yazamayabilir. Belki önce değiştirmek gerekebilir.


C++:
while (1) {
    gtk_label_set_text(GTK_LABEL(label1),getCM());
}
bunu kodlarda nereye yapıştırmam gerekiyor
 

Benzer Konular

Yeni mesajlar

Forum istatistikleri

Konular
116,830
Mesajlar
822,763
Kullanıcılar
425,839
Son üye
GrkmU

Yeni konular

Üst