Thread mit globaler Temperaturausgabe
Verfasst: Samstag 30. Mai 2020, 09:23
Hallo,
ich habe an meinen Raspberry Pi ein ds18b20 Temperaturfühler angeschlossen. Ich möchte einen Thread starten der mir parallel zum restlichen Programm die Temperatur als globale Variable zur Verfügung stellt. Die aktuelle Temperatur möchte ich dann in einer GUI (benutzte Tkinter) anzeigen. Wenn ich die Temperatur mit random.randint simuliere funktioniert das Programm auch wie gewollt. Sobald ich aber die reale Temperatur auslese (im angefügten Code kommentiert), erhalte ich eine Fehlermeldung, dass die Temperatur nicht bekannt, obwohl ich diese als global deklariert habe.
Über eure Hilfe wäre ich sehr dankbar.
MfG
ich habe an meinen Raspberry Pi ein ds18b20 Temperaturfühler angeschlossen. Ich möchte einen Thread starten der mir parallel zum restlichen Programm die Temperatur als globale Variable zur Verfügung stellt. Die aktuelle Temperatur möchte ich dann in einer GUI (benutzte Tkinter) anzeigen. Wenn ich die Temperatur mit random.randint simuliere funktioniert das Programm auch wie gewollt. Sobald ich aber die reale Temperatur auslese (im angefügten Code kommentiert), erhalte ich eine Fehlermeldung, dass die Temperatur nicht bekannt, obwohl ich diese als global deklariert habe.
Über eure Hilfe wäre ich sehr dankbar.
MfG
Code: Alles auswählen
import tkinter as tk
import time
import threading
import random
serialNum = "28-01192139d25e"
def display_Temp():
current_Temp = str(Temperatur)
Temp_label["text"] = current_Temp
my_window.after(5000, display_Temp)
def Temp_find():
while True:
global Temperatur
#location = '/sys/bus/w1/devices/28-01192139d25e/w1_slave'
#tfile = open(location)
#text = tfile.read()
#tfile.close()
#secondline = text.split("\n")[1]
#temperaturedata = secondline.split(" ")[9]
#Temperatur = float(temperaturedata[2:]) / float(1000)
Temperatur = random.randint(25,30)
print(Temperatur)
time.sleep(5)
t1 =threading.Thread(target = Temp_find)
t1.start()
my_window = tk.Tk()
my_window.title("Temperatur")
description_label = tk.Label(my_window, text = "Die aktuelle Temperatur beträgt: ", font=("Arial",20))
Temp_label = tk.Label(my_window, font=("Arial",20))
description_label.grid(row = 0, column = 0)
Temp_label.grid(row = 0 , column = 1)
display_Temp()
my_window.mainloop()