Fehler mit Variable NameError: name is not defined

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
InGx
User
Beiträge: 3
Registriert: Sonntag 9. Mai 2021, 09:54

Donnerstag 13. Mai 2021, 11:39

Hallo zusammen, ich habe folgendes Problem: beim Ausführen des Programms schmeisst er immer folgenden Fehler: NameError: name 'pulse_live' is not defined.
Sieht jemand woran das liegt? Über eine Antwort würde ich mich sehr freuen. Vielen Dank :)

import subprocess

pulse = 0.0
#pulse_live = 0.0
pulseli = []
#run script for heartrate sensor
def run_heartrate():
subprocess.call(['sh', '/home/pi/repos/HMI/MAX30102sh'])

def get_bpm(pulse):
global pulse_live
pulse_live = pulse
pulseli.append(pulse)

file = open("/home/pi/repos/HMI/pulsedata2.txt","w")
for x in pulseli:
#pulse_live = x
file.write(str(x)+"\n")
file.close()

def getPulse():
return pulse_live

--------------
import threading
from tkinter import *
import adapter as adapter

def update_bpm():
while not thread.stopped:
#print(adapter.getPulse)
lbHeartRateValue1.config(text=adapter.getPulse())

#Label for live pulse
lbHeartRateValue1 = Label(SensorsFrame, text="", bg='#FD6A02', pady=20, padx=60)
lbHeartRateValue1.grid(row=1, column=0, padx= 10, pady=5)
thread = threading.Thread(target=update_bpm)
thread.stopped = False
thread.start()
Sirius3
User
Beiträge: 14583
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 13. Mai 2021, 11:50

Ja, 'pulse_live' ist nicht definiert, das liegt daran, dass pulse_live nicht definiert ist.
Aus dem Code wird mir nicht klar, was der eigentlich machen soll. Was willst Du machen?

Anmerkungen zum Code:
benutze keine globalen Variablen. Dateien öffnet man mit Hilfe eines with-Statements.
Wenn Du immer nur eine Zahl an eine Datei anhängen willst, dann öffne die Datei mit mode='a' und schreibe sie nicht jedesmal komplett neu.

Benutze keine *-Importe, weil damit unmöglich wird, nachzuvollziehen, woher welcher Name stammt. `as` bei import ist zum Umbenennen da, adapter wird aber gar nicht umbenannt.
Threads und GUIs vertragen sich nicht, GUIs dürfen nur aus dem Hauptthread heraus geändert werden. Regelmäßige Updates macht man mit after.
InGx
User
Beiträge: 3
Registriert: Sonntag 9. Mai 2021, 09:54

Freitag 14. Mai 2021, 13:23

Danke für die Antwort und für die Tipps :) Ich verstehe irgendwie nicht wie ich die Variable genau definieren soll bzw. an welcher Stelle genau? Ich hab das ganze ja auch schon ohne global probiert und oben mit pulse_live = 0.0 definiert? Oder ist da was falsch bzw. an falscher Stelle? :?
Sirius3
User
Beiträge: 14583
Registriert: Sonntag 21. Oktober 2012, 17:20

Samstag 15. Mai 2021, 09:35

Der Code, wie er da steht, macht für mich keinen Sinn. Daher kann ich auch nicht sagen, wie es denn richtig sein könnte.
Woher kommt denn diese Pulsinformation?
Antworten