Hallo zusammen,
ich habe mir mal zum rumspielen eines dieser günstigen USB SNES Gamepads gegönnt. Im Prinzip läuft schon alles, nur habe ich ein relativ doofes Problem.
Ich lese den Input des Gamepads von /dev/input/js0 in meinem Programm mittels
aus. Wenn ich nun das Programm beenden möchte, hört das Programm noch auf dem Stream und erst nach einem Tastendruck des Gamepads wird die Pipe mit
geschlossen.
Nun würde ich das gerne mit subprocess.Popen verwirklichen, soweit ich das verstanden habe, werden damit selbst solche Pipes ordnungsgemäß geschlossen.
Ich muss noch dazu sagen, dass ich im weiteren Verlauf des Programms
for bit in pipe.read(1):
byte.append('%02X' % ord(bit))
### byte wurde zuvor auf eine leere Liste initialisiert
verwende, um die Input Bytes der Buttons auszulesen. Es sollte daher idealerweise eine ähnliche Methode wie read() zur Verfügung stehen.
Ich habe schon folgendes versucht
import subprocess
pipe = subprocess.Popen(['/dev/input/js0'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = pipe.communicate()[0]
print('teeeeeeeest:\n\n' + pipe + '\n\n')
Das bringt folgende Fehlermeldung
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 505, in run
self.__target(*self.__args, **self.__kwargs)
File "lcd.py", line 170, in get_input
stdout, stderr = pipe.communicate()[0]
ValueError: need more than 0 values to unpack
Könnt ihr mir da auf die Sprünge helfen?