Seite 1 von 1

Microbit als Gamecontroller

Verfasst: Montag 6. Januar 2020, 11:58
von JanRock
Hallo zusammen,

ich möchte gerne den Microbit als Gamecontroller für ein Spiel nutzen, das ich mit Pygame Zero programmiert habe. Ich konnte den MicroBit mithilfe des Pyserials-Modul in das Programm einbauen. Beim Start hängt sich das Spiel manchmal auf, da nicht alle Daten vom Microbit übertragen wurden. So deute ich Fehlermeldung.
x, y = s.readline().decode("ascii").split()
ValueError: not enough value to unpack (expected 2, got 1)

Wie könnte ich prüfen, dass auch alle notwendigen Daten übertragen wurden?

Ich bedanke mich für euere Hilfe.

Viele Grüße
Jan

Re: Microbit als Gamecontroller

Verfasst: Montag 6. Januar 2020, 12:00
von __deets__
Bei serieller Kommunikation ist es nicht immer moeglich sicherzustellen, dass man vollstaendige Datagramme bekommt - du oeffnest den Port ja zu einem beliebigen Zeitpunkt mittem im Strom.

In einem so simplen Fall wie deinem wuerde ich einfach ein try/except ValueError drumrum packen, und so tun als ob nix gewesen waere. Gerade weil's ja nur am Anfang des Programms passiert.

Re: Microbit als Gamecontroller

Verfasst: Montag 6. Januar 2020, 12:22
von Sirius3
@__deets__: auch wenns klappt, heißt das ja nicht, dass die Daten vollständig sind. Daher würde ich einfach die erste Zeile generell verwerfen.

Re: Microbit als Gamecontroller

Verfasst: Montag 6. Januar 2020, 12:26
von __deets__
@Sirius3: je nach Abfrageintervall kann das auch zwischendurch passieren. Ich würde es also immer machen.

Re: Microbit als Gamecontroller

Verfasst: Montag 6. Januar 2020, 12:43
von Sirius3
@__deets__: Dann braucht man ein Start-of-Text neben einem End-of-Text bzw. Newline-Zeichen.

Re: Microbit als Gamecontroller

Verfasst: Montag 6. Januar 2020, 12:52
von __deets__
Nach nochmal drueber nachdenken: ja, ist wirklich besser einfach am Anfang einmal eine Zeile wegzuwerfen.

Re: Microbit als Gamecontroller

Verfasst: Dienstag 7. Januar 2020, 00:04
von JanRock
Hallo _deets_ und Sirius3,

danke für euere Hilfe. Ich habe die Variante try/ except ValueError genommen.
Das Spiel läuft jetzt ohne Probleme.

Viele Grüße
Jan

Re: Microbit als Gamecontroller

Verfasst: Dienstag 7. Januar 2020, 06:11
von Sirius3
@JanRock: und wenn Du meine Beiträge gelesen hast, dann ist genau das die Variante, die nicht funktioniert.