2 oder mehr Aufgaben gleichzeitig

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.
Benutzeravatar
__blackjack__
User
Beiträge: 3520
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 15. Mai 2019, 16:30

@Streifenhase1: Der gezeigte Code ist unsinnig oder nicht lauffähig, denn entweder ist `schnitt1` *immer* grösser oder *immer* kleiner 0, oder in Python 3 bekommst Du eine Ausnahme weil man `schnitt` (Queue oder was anderes mit `get()`-Methode) nicht auf diese Weise mit 0 vergleichen kann.

Wo läuft das denn überhaupt? Das kann/darf ja nicht in einem eigenen Thread laufen, denn dann dürfte der Code mit dem Ändern der GUI da nicht stehen.

Was kommen denn da überhaupt für Werte an? Was bedeuten die? Wie sieht das Muster in dem Datenstrom aus?
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
Streifenhase1
User
Beiträge: 75
Registriert: Dienstag 22. Mai 2018, 07:15

Mittwoch 15. Mai 2019, 16:57

Also in einem Thread wir eine SPS in einer while schleife ausgelesen. Die Werte werden in Queue geschrieben.

Code: Alles auswählen

self.schnitt1.put(schnitt)
Müssen zwei Threads sein weil sonst immer etwas hängt da Über die SPS noch weitere werte angezeigt werden.

der gezeigte code wird als ein eigener Thread gestartet.
Die SPS gibt entweder "0" aus oder einen wert der aber "255" oder "455" oder auch ein anderer werte sein kann.

wenn ich es so durchlaufen lasse sehe ich die werte die die SPS ausgibt.

Code: Alles auswählen

def picture_update(self):
  
    while 1:
        self.schnitt1.get()
        schnitt = self.schnitt1
        print (schnitt)
        
	
Wenn nun die SPS "0" ausgibt soll nichts gemacht werden und wenn die "SPS" einen wert der größer als "0" ausgibt soll ein Verzeichniss nach der Aktuellsten Datei durchsucht werden und diese dann geladen werden.


Wie gesagt wenn die SPS von 0 auf ein anderen wert springt wird ein Bild geladen,

wenn die SPS aber 0 ausgibt wird trotdem immer wieder das Bild geladen, so wie als ober die "If" Abfrage nicht mehr erfolgt
Benutzeravatar
__blackjack__
User
Beiträge: 3520
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 15. Mai 2019, 17:06

Wenn grundsätzlich bei 0 nichts gemacht werden soll, dann braucht man die 0 ja auch nicht in die Queue schreiben, sondern nur die Werte bei denen etwas gemacht werden soll.

Wie wird denn `picture_update()` ausgeführt? Wenn das in einem Thread läuft, dann darf da die GUI nicht verändert werden, machst Du es doch kann sonst was passieren. Wenn es nicht in einem Thread läuft, dann blockiert die ``while``-Schleife die GUI. Also entweder ist der Code zum GUI-Ändern dort falsch, oder die Endlosschleife.

Wird denn tatsächlich immer das Bild neu geladen? Oder einfach nur auch weiterhin angezeigt auch wenn die SPS wieder 0 liefert? Und wenn das Bild laden lange/länger dauert als SPS-Werte geliefert werden, ist Dir klar, dass sich dann Werte in der Queue aufstauen die danach dann weiter abgearbeitet werden und letztlich dann zumindest zeitweise nichts mehr mit dem *aktuellen* Wert von der SPS zu tun haben‽
A train station is where trains stop.
A bus station is where busses stop.
A Work Station is where …
Antworten