Variable splitten

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.
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

@noisefloor
Ist immer noch nicht richtig.
Also bis jetzt funktioniert das sehr gut. Warum sollte ich also daran etwas ändern?
8)
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@AngryJones: niemand hier glaubt Dir, dass es sehr gut funktioniert, weil alles was Du bisher gezeigt hast, nicht funktionierender Code war. Also entweder vera*** Du uns hier, zeigst absichtlich Quatsch, lebst in einem Paralleluniversum, wo es eine andere Art Python gibt oder hast eine sehr seltsame Ansicht von "funktioniert", weil Du das Programm noch nie ausgeführt hast.
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

Folgendes Programm funktioniert perfekt:

Code: Alles auswählen

# -*- coding: utf-8 -*-

import serial                 
import time
import atexit

 
serial = serial.Serial('COM3', 9600)
serial.open
time.sleep(1)  
try:


    def Split_Variablen():
        uv = 0
        ur1 = 0
        ur2 = 0
        while True:
            try:
                response = serial.readline()
                #print (response)            
                if response == b'US1\r\n':
                    response = serial.readline()
                    uv =int(response.split(b"=")[-1])
                elif response == b'US2\r\n':
                    response = serial.readline()
                    ur1 =int(response.split(b"=")[-1])
                elif response == b'US3\r\n':
                    response = serial.readline()
                    ur2 =int(response.split(b"=")[-1])
                print("UV=" ,uv)
                print("UR1=" ,ur1)
                print("UR2=" ,ur2)
     
            except ValueError:
                print("Error")

    Split_Variablen()

except KeyboardInterrupt:
         s.close()
         turnOffMotors
Hier ein Bild:
Bild
8)
Benutzeravatar
__blackjack__
User
Beiträge: 13110
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@AngryJones: Und es enthält trotzdem Fehler die bereits angesprochen wurden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@AngryJones: ... bis man Strg-C drückt und einen NameError bekommt.
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

Achso, ihr meint das mit s.close.
Ja gut, finde ich zwar nicht so schlimm diesen Error als letzte Aktion von dem Programm zu
erhalten, aber habe ich jetzt geändert. Ist mir sonst auch nicht so aufgefallen, weil ich das Programm immer
direkt "kille".
8)
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

`turnOffMotors` lässt dein gezeigtes Programm auch crashen. `serial.open` ist auch falsch, lässt dein Programm aber immerhin nicht crashen.

Gruß, noisefloor
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

@noisefloor Danke für deine Antwort. Hab ich bereits behoben. Ich bekomme auch keinen Error mehr. Auch nicht bei Ctrl + C.

Code: Alles auswählen

import serial                 
import time
import atexit

 
serial = serial.Serial('COM3', 9600)
serial.open
time.sleep(1)  
try:


    def Split_Variablen():
        uv = 0
        ur1 = 0
        ur2 = 0
        while True:
            try:
                response = serial.readline()
                #print (response)            
                if response == b'US1\r\n':
                    response = serial.readline()
                    uv =int(response.split(b"=")[-1])
                elif response == b'US2\r\n':
                    response = serial.readline()
                    ur1 =int(response.split(b"=")[-1])
                elif response == b'US3\r\n':
                    response = serial.readline()
                    ur2 =int(response.split(b"=")[-1])
                print("UV=" ,uv)
                print("UR1=" ,ur1)
                print("UR2=" ,ur2)
     
            except ValueError:
                print("Error")

    Split_Variablen()

except KeyboardInterrupt:
         serial.close()
Das Ganze hab ich nun auch in das eigentliche Programm eingebaut.
Mir ist klar das dort noch ein paar Elemente fehlen können.
Hier ein kleiner Zwischenstand (Das Programm nutzt einen Arduino, einen Rapberry PI und ein Motor Hat.) :

Code: Alles auswählen

# -*- coding: utf-8 -*-

import serial                    #OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//
import time
import RPi.GPIO as GPIO
import atexit
from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor


# create a default object, no changes to I2C address or frequency
mh = Adafruit_MotorHAT(addr=0x60)


# recommended for auto-disabling motors on shutdown!
def turnOffMotors():
    mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE)
    mh.getMotor(2).run(Adafruit_MotorHAT.RELEASE)

atexit.register(turnOffMotors)


#DC motor test
#Links
Motor_Rechts = mh.getMotor(1)
#Rechts
Motor_Links = mh.getMotor(2)

Abbiegezeit = 1


Motor_Rechts.setSpeed(100)
Motor_Links.setSpeed(100)

 
serial = serial.Serial('/dev/ttyACM0', 9600)    #Für Arduino
#serial = serial.Serial('COM3', 9600)            #Für PC
serial.open
time.sleep(1)


def Vorwarts(motor):                                            #Definiere Funktionen der Motoren
    motor.run(Adafruit_MotorHAT.FORWARD)

def Ruckwarts(motor):
    motor.run(Adafruit_MotorHAT.BACKWARD)

def Stop(motor):
    motor.run(Adafruit_MotorHAT.RELEASE)


uv = 0
ur1 = 0
ur2 = 0


while True:
    try:

    #Split Variablen

        try:
            response = serial.readline()
            #print (response)            
            if response == b'US1\r\n':
                response = serial.readline()
                uv =int(response.split(b"=")[-1])
            elif response == b'US2\r\n':
                response = serial.readline()
                ur1 =int(response.split(b"=")[-1])
            elif response == b'US3\r\n':
                response = serial.readline()
                ur2 =int(response.split(b"=")[-1])

            print("UV=" ,uv)
            print("UR1=" ,ur1)
            print("UR2=" ,ur2)

            Sensor_Vorne = uv
            Sensor_Rechts = ur1
            Sensor_Rechts_2 = ur2


        except ValueError:
            print("ValueError")


    #Rechte Hand

        if Sensor_Rechts_2 < 20 and Sensor_Vorne < 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(2)
            Stop(Motor_Rechts)
            Stop(Motor_Links)
            Ruckwarts(Motor_Rechts)
            Ruckwarts(Motor_Links)
            time.sleep(1)
            Vorwarts(Motor_Rechts)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(1.5)

        elif Sensor_Rechts_2 > 20 and Sensor_Vorne > 20:
            Ruckwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Motor_Links .Vorwaerts
            time.sleep(1.5)
                
        elif Sensor_Rechts_2 > 20 and Sensor_Vorne < 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(2)
            Stop(Motor_Rechts)
            Stop(Motor_Links)
            Ruckwarts(Motor_Rechts)
            Ruckwarts(Motor_Links)
            time.sleep(1)
            Ruckwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(1.5)

        elif Sensor_Rechts_2 < 20 and Sensor_Vorne > 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links) 
                

    #Motor Geschwindigkeit


        if Sensor_Rechts_1 > Sensor_Rechts_2:
            Motor_Links. setSpeed(150)
            Motor_Rechts. setSpeed(100)

        elif Sensor_Rechts_1 < Sensor_Rechts_2:
            Motor_Links. setSpeed(100)
            Motor_Rechts. setSpeed(150)

        elif Sensor_Rechts_1 == Sensor_Rechts_2:
            Motor_Rechts. setSpeed(100)
            Motor_Links. setSpeed(100)




    except KeyboardInterrupt:
        turnOffMotors()
        serial.close()
        print("Programm wurde gestoppt!!")
8)
Benutzeravatar
__blackjack__
User
Beiträge: 13110
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und wieder ein Programm das nicht funktioniert weil es mit einem `NameError` abbricht, was Du also wieder nicht ausprobiert hast…
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

@blackjack Also das erste funktioniert auf jeden Fall. Das zweite habe ich heute ausprobiert und die Fehler behoben.
Das 2. Programm funktioniert jetzt zwar, jedoch nicht so wie es sollte. Der Arduino scheint im voraus Werte in die Serial.readline zu schreiben, wodurch eine Verzögerung entsteht.
Z.B realisiert das Programm es erst 5 sek. später, wenn ich meine Hand vor den US- Sensor halte.
Hab jetzt nicht korrekte Version hier rein kopiert, weil diese auf dem Raspberry Pi liegt.
Allerdings habe ich glaube ich alle Fehler die aufgetreten sind auch hier ausgebessert.
Falls trotzdem noch ein Error auftreten sollte kopiere mir bitte mal den ganzen Fehlercode.

Wie gesagt war im oberen Beitrag die obere Version die getestete und die untere die ungetestete.

Code: Alles auswählen

# -*- coding: utf-8 -*-

import serial                    #OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//
import time
import RPi.GPIO as GPIO
import atexit
from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor


# create a default object, no changes to I2C address or frequency
mh = Adafruit_MotorHAT(addr=0x60)


# recommended for auto-disabling motors on shutdown!
def turnOffMotors():
    mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE)
    mh.getMotor(2).run(Adafruit_MotorHAT.RELEASE)

atexit.register(turnOffMotors)


#DC motor test
#Links
Motor_Rechts = mh.getMotor(1)
#Rechts
Motor_Links = mh.getMotor(2)

Abbiegezeit = 1


Motor_Rechts.setSpeed(100)
Motor_Links.setSpeed(100)

 
serial = serial.Serial('/dev/ttyACM0', 9600)    #Für Arduino
#serial = serial.Serial('COM3', 9600)            #Für PC
serial.open
time.sleep(1)


def Vorwarts(motor):                                            #Definiere Funktionen der Motoren
    motor.run(Adafruit_MotorHAT.FORWARD)

def Ruckwarts(motor):
    motor.run(Adafruit_MotorHAT.BACKWARD)

def Stop(motor):
    motor.run(Adafruit_MotorHAT.RELEASE)


uv = 0
ur1 = 0
ur2 = 0


while True:
    try:

    #Split Variablen

        try:
            response = serial.readline()
            #print (response)            
            if response == b'US1\r\n':
                response = serial.readline()
                uv =int(response.split(b"=")[-1])
            elif response == b'US2\r\n':
                response = serial.readline()
                ur1 =int(response.split(b"=")[-1])
            elif response == b'US3\r\n':
                response = serial.readline()
                ur2 =int(response.split(b"=")[-1])

            print("UV=" ,uv)
            print("UR1=" ,ur1)
            print("UR2=" ,ur2)

            Sensor_Vorne = uv
            Sensor_Rechts_1 = ur1
            Sensor_Rechts_2 = ur2


        except ValueError:
            print("ValueError")


    #Rechte Hand

        if Sensor_Rechts_2 < 20 and Sensor_Vorne < 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(2)
            Stop(Motor_Rechts)
            Stop(Motor_Links)
            Ruckwarts(Motor_Rechts)
            Ruckwarts(Motor_Links)
            time.sleep(1)
            Vorwarts(Motor_Rechts)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(1.5)

        elif Sensor_Rechts_2 > 20 and Sensor_Vorne > 20:
            Ruckwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(1.5)
                
        elif Sensor_Rechts_2 > 20 and Sensor_Vorne < 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(2)
            Stop(Motor_Rechts)
            Stop(Motor_Links)
            Ruckwarts(Motor_Rechts)
            Ruckwarts(Motor_Links)
            time.sleep(1)
            Ruckwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(1.5)

        elif Sensor_Rechts_2 < 20 and Sensor_Vorne > 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links) 
                

    #Motor Geschwindigkeit


        if Sensor_Rechts_1 > Sensor_Rechts_2:
            Motor_Links. setSpeed(150)
            Motor_Rechts. setSpeed(100)

        elif Sensor_Rechts_1 < Sensor_Rechts_2:
            Motor_Links. setSpeed(100)
            Motor_Rechts. setSpeed(150)

        elif Sensor_Rechts_1 == Sensor_Rechts_2:
            Motor_Rechts. setSpeed(100)
            Motor_Links. setSpeed(100)




    except KeyboardInterrupt:
        turnOffMotors()
        serial.close()
        print("Programm wurde gestoppt!!")
8)
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

Hier nochmal das Programm vom Raspberry PI. Das funktioniert zu 100% (hab ich auch getestet).
Ich habe jetzt das nötige Equipment zuhause.

Code: Alles auswählen

# -*- coding: utf-8 -*-

import serial                    #OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//OLAF OS//
import time
import RPi.GPIO as GPIO
import atexit
from Adafruit_MotorHAT import Adafruit_MotorHAT, Adafruit_DCMotor


# create a default object, no changes to I2C address or frequency
mh = Adafruit_MotorHAT(addr=0x60)


# recommended for auto-disabling motors on shutdown!
def turnOffMotors():
    mh.getMotor(1).run(Adafruit_MotorHAT.RELEASE)
    mh.getMotor(2).run(Adafruit_MotorHAT.RELEASE)

atexit.register(turnOffMotors)


#DC motor test
#Links
Motor_Rechts = mh.getMotor(1)
#Rechts
Motor_Links = mh.getMotor(2)

Abbiegezeit = 1


Motor_Rechts.setSpeed(100)
Motor_Links.setSpeed(100)

 
serial = serial.Serial('/dev/ttyACM0', 9600)    #Für Arduino
#serial = serial.Serial('COM3', 9600)            #Für PC
serial.open
time.sleep(1)


def Vorwarts(motor):                                            #Definiere Funktionen der Motoren
    motor.run(Adafruit_MotorHAT.FORWARD)

def Ruckwarts(motor):
    motor.run(Adafruit_MotorHAT.BACKWARD)

def Stop(motor):
    motor.run(Adafruit_MotorHAT.RELEASE)


uv = 25
ur1 = 0
ur2 = 15


while True:
    try:

    #Split Variablen

        try:
            response = serial.readline()
            #print (response)            
            if response == b'US1\r\n':
                response = serial.readline()
                uv =int(response.split(b"=")[-1])
            elif response == b'US2\r\n':
                response = serial.readline()
                ur1 =int(response.split(b"=")[-1])
            elif response == b'US3\r\n':
                response = serial.readline()
                ur2 =int(response.split(b"=")[-1])

            print("UV=" ,uv)
            print("UR1=" ,ur1)
            print("UR2=" ,ur2)

            Sensor_Vorne = uv
            Sensor_Rechts_1 = ur1
            Sensor_Rechts_2 = ur2


        except ValueError:
            print("ValueError")


    #Rechte Hand

        if Sensor_Rechts_2 < 20 and Sensor_Vorne < 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(2)
            Stop(Motor_Rechts)
            Stop(Motor_Links)
            Ruckwarts(Motor_Rechts)
            Ruckwarts(Motor_Links)
            time.sleep(1)
            Vorwarts(Motor_Rechts)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(1.5)

        elif Sensor_Rechts_2 > 20 and Sensor_Vorne > 20:
            Ruckwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(1.5)
                
        elif Sensor_Rechts_2 > 20 and Sensor_Vorne < 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(2)
            Stop(Motor_Rechts)
            Stop(Motor_Links)
            Ruckwarts(Motor_Rechts)
            Ruckwarts(Motor_Links)
            time.sleep(1)
            Ruckwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(Abbiegezeit)
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links)
            time.sleep(1.5)

        elif Sensor_Rechts_2 < 20 and Sensor_Vorne > 20:
            Vorwarts(Motor_Rechts)
            Vorwarts(Motor_Links) 
                

    #Motor Geschwindigkeit


        if Sensor_Rechts_1 > Sensor_Rechts_2:
            Motor_Links. setSpeed(150)
            Motor_Rechts. setSpeed(100)

        elif Sensor_Rechts_1 < Sensor_Rechts_2:
            Motor_Links. setSpeed(100)
            Motor_Rechts. setSpeed(150)

        elif Sensor_Rechts_1 == Sensor_Rechts_2:
            Motor_Rechts. setSpeed(100)
            Motor_Links. setSpeed(100)




    except KeyboardInterrupt:
        turnOffMotors()
        serial.close()
        print("Programm wurde gestoppt!!")
8)
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

Die Werte die ich angezeigt bekomme sind nicht mehr synchronisiert, sobald ich eine time.sleep hinzufüge.
Die sind für mein Programm allerdings notwendig. Hat jemand Ideen wie ich die Werte in Python zeitnah angezeigt bekomme?
(Threading ist ja anscheinend nicht so gut.)
8)
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

AngryJones hat geschrieben: Freitag 30. November 2018, 14:59Das funktioniert zu 100% (hab ich auch getestet).
Man muß nur den Code lesen, um zu sehen, dass Du nicht gründlich genug getestet hast. Außerdem hat es immer noch sinnlose Zeilen drin, die schon seit dem ersten Post hier bemängelt wurden. Du machst nicht den Eindruck, dass Du hier etwas lernen willst.

Wen mehrere Ereignisse gleichzeitig abgearbeitet werden sollen, braucht man eine Ereignisschleife, die nicht irgendwo durch sleep oder read blockiert werden darf.
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

Man muß nur den Code lesen, um zu sehen, dass Du nicht gründlich genug getestet hast.
Ich wüsste jetzt nicht was an dem Code grundsätzlich falsch sein sollte. Das einzige Problem ist immer noch, dass
der Arduino die Werte puffert. Ich hab es schon mit flushInput() versucht, allerdings werden dann keine neuen Werte mehr angezeigt.
Auch nicht mit einer time.sleep hinter flushInput(). Gibt es irgendwie eine Möglichkeit die letzte readline aufzurufen?
8)
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na das IST das grundsätzlich falsche an deinem Code. Der kann eben nicht damit umgehen, daten zu verarbeiten während er eine zeitabhängige Steuerung hinbekommen muss. Um das zu ändern ist grundsätzliches Umdenken notwendig.
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

Wäre es dann nicht am einfachsten einen Thread für die Werte zu erstellen und einen für den Rest? Der Thread für die Werte sollte dann ja kann Problem für das Motor Hat sein, oder?
Er sendet ja gar keine Befehle an die Motoren.
8)
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Worte “einfach” und “Thread” in einem Satz zu gebrauchen ist immer ein Fehler. Threads sind nicht einfach.

Und in diesem Fall ist der Beleg dafür ja einfach zu erbringen: egal ob du die Werte der seriellen Schnittstelle nun in einem Thread einliest oder erst wenn die Hauptschleife wieder erreicht wird - ein keinem der beiden Fälle erfolgt die BEARBEITUNG währen der verschlafenen Zeit.

Da du ja keine guten Namen für deine Variablen wählst, und keine Funktionen mit guten Namen hast, kann man ja nur raten, was da passieren soll. Aber ich vermute mal, die Sensoren sollen zb einen Stopp auslösen, wenn sie eine kollision wahrnehmen. Das passiert aber niemals rechtzeitig, wenn du zwischendurch schläfst.

Was du brauchst ist eine Schleife die schnell und nur mit geringer Verzögerung die Sensordaten einliest. Und zb einen Zustandsautomaten, der bestimmt, was gerade für ein Befehl abgearbeitet werden soll, aber jederzeit den Eingriff erlaubt das zu ändern.
AngryJones
User
Beiträge: 25
Registriert: Freitag 23. November 2018, 19:56

Könnte man nicht theoretisch vom Raspberry einen Wert an den Arduino senden (z.b serial.write("Bereit")). Wenn dieser vom Arduino erkannt wird sendet er einmal den aktuellen US-Wert an den Raspberry und wartet dann bis der Rasberry wieder bereit ist und z.b die Aktion Rechts abbiegen, welche 2 sek. dauert, beendet hat. Nachdem der Raspberry die Aktion beendet hat sendet er dann wieder "Bereit" an den Arduino, wodurch dieser wieder den aktuellen Wert einmal sendet.
8)
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Klar. Kann man so machen. Ist dann halt komplizierter und immer noch nicht besser. Aber gehen tuts.
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hier mal ein Modul, mit dem du “zeitgleiches” arbeiten erreichen kannst: https://docs.python.org/3/library/sched.html
Antworten