ESP32 & MicroPython 编程:创建线程

这篇文章的目的是,解释如何在运行有 MicroPython 的 ESP32 上启动一个线程。这里使用的是 ESP32 FireBeetle 开发板,其集成有 DFRobot 的 ESP-WROOM-32 设备。

步骤1:介绍

这将是一个非常简单的初始示例,我们将定义一个由我们的线程执行的函数,并定时输出一个 “hello world” 消息。

我使用的 MicroPython IDE 是 uPyCraft。

步骤2:代码

我们从导入线程模块 thread 开始,它将提供启动线程 thread 所需的功能。请注意,该模块被称为 _thread (这里的下划线不是打错了)。我们还会导入 time 模块,因此我们可以使用 sleep 函数,以此在我们的程序中引入一些延迟。

import _thread
import time

接下来,我们将定义在线程中执行的函数。我们的功能是,简单地在无限循环中输出一个 “hello world” 消息,每次循环都会加一些延时。

我们将使用上面提到的 time 模块的 sleep 方面来引入延时,time 模块接收作为输入的延迟秒数。在这里,我使用了 2 秒的延迟,但您可以使用不同的值。

def testThread():
    while True:
        print("Hello from thread")
        time.sleep(2)

重要的是,需要考虑当函数返回时,线程将会退出。只是在当前的情况下,它永远都不会发生,因为我们的线程将在死循环上运行着。

最后,要启动我们的线程,我们只需调用 _thread 模块的 start_new_thread 函数,将第一个参数指定为我们先前定义的函数,并将其指定为对应于线程函数参数的第二个元组。

_thread.start_new_thread(testThread, ())

如下是完整的代码:

import _thread
import time

def testThread():
    while True:
        print("Hello from thread")
        time.sleep(2)

_thread.start_new_thread(testThread, ())

步骤3:测试代码

要测试代码,只需将上一个脚本上传到您的主板并运行它。 您应该得到类似于下面的输出结果,它显示了我们的线程的输出。它应该周期性的打印用代码中定义的消息。

>>> Hello from thread
Hello from thread
尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.