Используя Python, мне нужен цикл одновременно с циклом событий контроллера PS4

Используя Python, я хочу запускать два цикла одновременно. Первый - это обычный цикл while. Второй - это цикл while, основанный на файловых событиях от контроллера PS4, подключенного через Bluetooth.

Две петли должны знать, чем занимаются другие петли.

Вот соответствующий код с некоторыми комментариями к отсутствующему коду:

# Read PS4 controller events
infile_path = "/dev/input/event4"
in_file = open(infile_path, "rb")
FORMAT = 'llHHi'
EVENT_SIZE = struct.calcsize(FORMAT)
event = in_file.read(EVENT_SIZE)

# Event while loop reacting to PS4 events
while event:

  # React to a PS4 controller event
  # For example, start a motor when the X button is pressed
  # Or stop the motor when the X button is released

  # Read the next event
  event = in_file.read(EVENT_SIZE)

# Regular while loop
while True:
  
  # While Loop Code
  # I need code in here to be able to override the event loop
  # For example, stop the motor (even if the X button is pressed) if the motor senses resistance  

in_file.close()

Я не думаю, что это действительно важно, но я использую Pybricks, он построен на MicroPython и оптимизирован для робототехники. Я также использую ev3dev, это образ Debian, также оптимизированный для робототехники. Мой полный код доступен на моем GitHub.

1 ответ

В итоге я поместил цикл событий PS4 в поток, а основной скрипт - в цикл wile (не связанный с потоком). Затем у меня была одна глобальная переменная, хранящая все статусы кнопок PS4, и, похоже, она работала нормально.

Другие вопросы по тегам