Seite 1 von 1

Fehler mit Variable NameError: name is not defined

Verfasst: Donnerstag 13. Mai 2021, 11:39
von InGx
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()

Re: Fehler mit Variable NameError: name 'pulse_live' is not defined

Verfasst: Donnerstag 13. Mai 2021, 11:50
von Sirius3
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.

Re: Fehler mit Variable NameError: name is not defined

Verfasst: Freitag 14. Mai 2021, 13:23
von InGx
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? :?

Re: Fehler mit Variable NameError: name is not defined

Verfasst: Samstag 15. Mai 2021, 09:35
von Sirius3
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?