Ich bin eine Remote-Spielzeugauto mit Python Code .Als von jetzt dem Code zu steuern ist als untenPython Key drücken und Schlüsselentriegelung Listener
def getkey():
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~TERMIOS.ICANON & ~TERMIOS.ECHO
new[6][TERMIOS.VMIN] = 1
new[6][TERMIOS.VTIME] = 0
termios.tcsetattr(fd, TERMIOS.TCSANOW, new)
c = None
try:
c = os.read(fd, 1)
finally:
termios.tcsetattr(fd, TERMIOS.TCSAFLUSH, old)
return c
def car():
while True:
key = getkey()
if key == 's': #Down arrow
print "Down"
Backward()
elif key == 'w': #Up arrow
print "Up"
forward()
elif key == 'a':
print "left"
Left()
elif key == 'd':
print "Right"
Right()
elif key == 'q': #Quit
print "That's It"
break
def forward():
GPIO.output(11,True) #Move forward
Wenn i ‚w‘ nach vorne drücken() -Methode aufgerufen wird und die Auto bewegt sich vorwärts, aber wird nicht aufhören, bis ich das Programm beenden oder GPIO.output (11, Flase) von einer anderen Methode aufrufen.
Gibt es einen Schlüssel-Listener, der die Schlüsselfreigabe eines bestimmten Schlüssels erkennt?
Wenn beispielsweise ‚w‘ gedrückt diese Methode und wenn freigegeben Aufruf aufgerufen eine andere Methode
Sudo Code
if w_isPressed()
forward()
else if w_isReleased()
stop()
Sie können dies ohne tatsächlichen Tastaturzugriff nicht tun. Ihr Terminal sendet nur Tastendrücke, sodass Sie nicht erkennen können, wann ein Schlüssel freigegeben wurde. – Blender
Sie können es möglicherweise mit PyGame tun. – kindall