Python:同时读取和命令不同设备的最佳方式是什么?
我使用树莓Pi和BrickKPI来控制乐高电机。我想从游戏板上获取输入,比如logitech F310,并根据操纵杆输入运行电机。我发现从gamepad获取输入需要阻塞,比如get_gamepad()中事件的Python:同时读取和命令不同设备的最佳方式是什么?,python,multithreading,Python,Multithreading,我使用树莓Pi和BrickKPI来控制乐高电机。我想从游戏板上获取输入,比如logitech F310,并根据操纵杆输入运行电机。我发现从gamepad获取输入需要阻塞,比如get_gamepad()中事件的:,它会不断检查输入,除非获得输入,否则不会继续。此外,我的电机需要命令BrickPiUpdateValues()随时运行。所以我需要同时做两件事,但是游戏板阻止了马达的更新 在这个为我工作的简短程序中,我使用了线程,但是有没有更好的方法来完成这项任务,或者更好的方法来改进我的代码?此外,C
:
,它会不断检查输入,除非获得输入,否则不会继续。此外,我的电机需要命令BrickPiUpdateValues()
随时运行。所以我需要同时做两件事,但是游戏板阻止了马达的更新
在这个为我工作的简短程序中,我使用了线程,但是有没有更好的方法来完成这项任务,或者更好的方法来改进我的代码?此外,Ctrl-C不会退出gamepad线程,即使我尝试使用try
和来允许键盘中断退出线程的好方法是什么?join
没有很好地工作,因为它等待线程完成
from inputs import get_gamepad
from BrickPi import *
import threading
BrickPiSetup()
BrickPi.MotorEnable[PORT_A] = 1 #enable motor A
quitting = False #make the variable
def gamepad(): #the thread to read the gamepad
while True:
for event in get_gamepad(): #waits for input
if event.code == "ABS_Y":
BrickPi.MotorSpeed[PORT_A] = event.state / 128 #use joystick input to decide speed
elif event.code == "BTN_MODE": #quit thread, program will quit as well
global quitting
quitting = True
return
gamepad = threading.Thread(target = gamepad)
gamepad.start() #start reading the gamepad
while True:
BrickPiUpdateValues() #actually run the motor
if quitting == True: #full quit, triggered by mode button
sys.exit()