1

使用 Python 我想同时运行两个循环。第一个是常规的 while 循环。第二个是基于来自蓝牙连接的 PS4 控制器的文件事件的 while 循环。

这两个循环需要知道其他循环在做什么。

以下是相关代码,其中包含一些缺少代码的注释:

# 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 上找到

4

1 回答 1

1

我最终将 PS4 事件循环放在一个线程中,将主脚本放在一个诡计循环中(未线程化)。然后我有一个全局变量来存储所有 PS4 按钮状态,这似乎工作正常。

于 2020-08-01T16:46:05.357 回答