我正试图为乐高头脑风暴EV3砖块编写一个程序,当传感器记录一个特定的输入时,它需要采取的操作。据我所知,在EV3 micropython / pybricks中,唯一能做到这一点的方法就是繁忙地等待。这限制了传感器检查时处理其他信息的能力,因为砖块似乎不支持多线程。
然而,EV3课堂块编程似乎支持使用事件。
这也可以用烧结砖中的事件来完成吗?
发布于 2021-12-22 08:10:57
您可以使用threading模块在module中使用多线程。我用它来创建触摸感应器的事件,我没有测试它,这是一个旧的代码,在我写完它之后,我意识到我不需要它。但这是密码:
Thread(target=self.listenForButtonClick).start()
def onButtonClick(self, func):
"""
Add a function to be called when a button is clicked on the EV3 Brick.
:param func: the function to be called.
"""
self.buttonClick.append(func)
def listenForButtonClick(self):
"""
Listen for button clicks on the EV3 Brick.
"""
while True:
if any(self.buttons.pressed()):
for func in self.buttonClick:
func(self.buttons.pressed())
wait(50)示例用法:
def click(args):
print(args)
# Do Stuff
onButtonClick(click)https://stackoverflow.com/questions/70218033
复制相似问题