首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您是否可以使用EV3 micropython中的事件或中断?

您是否可以使用EV3 micropython中的事件或中断?
EN

Stack Overflow用户
提问于 2021-12-03 16:57:11
回答 1查看 182关注 1票数 0

我正试图为乐高头脑风暴EV3砖块编写一个程序,当传感器记录一个特定的输入时,它需要采取的操作。据我所知,在EV3 micropython / pybricks中,唯一能做到这一点的方法就是繁忙地等待。这限制了传感器检查时处理其他信息的能力,因为砖块似乎不支持多线程。

然而,EV3课堂块编程似乎支持使用事件。

这也可以用烧结砖中的事件来完成吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-22 08:10:57

您可以使用threading模块在module中使用多线程。我用它来创建触摸感应器的事件,我没有测试它,这是一个旧的代码,在我写完它之后,我意识到我不需要它。但这是密码:

代码语言:javascript
复制
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)

示例用法:

代码语言:javascript
复制
def click(args):
    print(args)
    # Do Stuff

onButtonClick(click)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70218033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档