die Situation ist etwas verzwickt und ich bekomme den Knoten nicht gelöst, vielleicht hat ja jemand einen Rat.
Vor einiger Zeit habe ich einen Emulator geschrieben, der auf dem PC die Pins eines Raspberry Pi emuliert, sodass RasPi Code auf dem PC getestet werden kann (https://github.com/blbltheworm/yarpie/). Da es in der Zwischenzeit einige andere Ansätze zu dem Thema gibt, habe ich es nicht weiterverfolgt. Es gibt jedoch noch einen Bug der mich fuchst und da mittlerweile noch einmal danach gefragt wurde, würde ich ihn gerne Lösen. Das Tool läuft unter Linux einwandfrei, aber unter Windows friert das pygames Fenster ein, wenn man eine MainLoop programmiert.
Zum Aufbau des Emulator:
Beim Importieren des Pakets wird pygames gestartet und ein Fenster mit der grafischen Repräsentation des Emulators erstellt. Das ganze läuft als Thread
Code: Alles auswählen
class emugui(threading.Thread)
Code: Alles auswählen
def run(self):
"""
Mainloop of the emulated GPIO. Is called when the emulator class is initialized.
"""
self._running = True
# create clock to reduce framerate
clock = pygame.time.Clock()
while self._running:
clock.tick(30) #reduce framerate to 30 fps
# get all events and check them
events = pygame.event.get()
for event in events:
print(event.type)
if event.type == pygame.QUIT:
self._running = False
#Weiterer Code zum Event-Handling
Code: Alles auswählen
import time
while(1):
#Code zur Interaktion mit der RasPi-Hardware
time.sleep(0.1)
Hat jemand eine Idee woran das liegt und an welcher Stelle hier der Eventaustausch zwischen pygames und Win10 verloren geht? Ich bin für jede Idee dankbar. Wichtig ist nur, dass in der Schleife des Hauptprogramms kein pygames Code auftaucht, denn der Emulator ist so geschrieben, dass er Code verarbeiten kann, der für den Raspberry geschrieben ist.