Как создать простой GTK показывает значение считывания датчика DS18B20 rasberry pi
привет, ребята, я пользователь программирования на языке Си. у меня есть проект с использованием raspberry Pi. у меня есть датчик температуры ds18b20 и его код, я могу показать его значение считывания в uxterm или терминале. недавно я сделал простой gtk (gui), который не имеет ни одной кнопки или какой-либо панели инструментов. я могу только сделать метку, которая не подключается к значению считывания датчика. как мне объединить этот код, чтобы создать gtk (gui), способный отображать значение считывания датчика температуры и способный постоянно обновлять его показания в любую секунду при изменении температуры? проект-это только программирование на языке Си, а не на другом языке. ниже приведены следующие коды
/*dsb18b20 sensor c-language*/ #include <wiringPi.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #include <stdlib.h> #include <stdio.h> #define BUFSIZE 128 typedef unsigned char uchar; typedef unsigned int uint; float tempRead(void) { float temp; int i, j; int fd; int ret; char buf[BUFSIZE]; char tempBuf[5]; fd = open("/sys/bus/w1/devices/28-0314979400b5/w1_slave", O_RDONLY); if(-1 == fd){ perror("open device file error"); return 1; } while(1){ ret = read(fd, buf, BUFSIZE); if(0 == ret){ break; } if(-1 == ret){ if(errno == EINTR){ continue; } perror("read()"); close(fd); return 1; } } for(i=0;i<sizeof(buf);i++){ if(buf[i] == 't'){ for(j=0;j<sizeof(tempBuf);j++){ tempBuf[j] = buf[i+2+j]; } } } temp = (float)atoi(tempBuf) / 1000; close(fd); return temp; } int main(void) { if(wiringPiSetup() == -1){ printf("setup wiringPi failed !"); return 1; } float temp; while(1){ temp = tempRead(); printf("Current temperature : %0.3f\n", temp); } return 0; }
/*simple gtk c-language*/ #include <gtk/gtk.h> void main(int argc, char *argv[]) { gtk_init (&argc, &argv); GtkWidget *win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(win), 250, 150); GtkWidget *lbl = gtk_label_new ("100 C"); gtk_container_add (GTK_CONTAINER (win), lbl); gtk_widget_show_all (win); gtk_main(); }
я пытаюсь заменить этикетку "100 C" живым показанием датчика. моя ГТК состоянии показывает показания датчиков. кто-нибудь может мне помочь?
Что я уже пробовал:
я все еще начинаю изучать c-Программирование, но понятия не имею, как совместить эти 2 кода.