ESP32 MicroPython教程:创建线程-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4201|回复: 0

ESP32 MicroPython教程:创建线程

[复制链接]
发表于 2019-5-28 12:00 | 显示全部楼层 |阅读模式
本帖最后由 dfrobot 于 2019-5-29 10:37 编辑


本ESP32 MciroPython教程的目标是解释如何在运行于 ESP32 上的MciroPython上启动线程。测试是使用集成在Firebeetle ESP32开发板中的ESP-WROOM-32设备进行的。MciroPython软件使用的uPyCraft
简介
本文主要说明如何在ESP32上运行的MciroPython中创建一个线程。该例程非常简单,里面只有一个被线程调用的函数,这个函数会周期性地打印“hello world”消息。
代码
首先需要导入thread模块,以便使用创建线程有关的函数。请注意,模块名为_thread(一定要输入下划线)。此外,还需要导入time模块,以便通过调用sleep函数在函数中引入延时。
[mw_shl_code=applescript,true]import _thread

import time[/mw_shl_code]
然后,定义将要在新建线程中执行的函数。本例所使用的函数只是简单地在一个无限循环中反复打印“hello world”消息,而且每次迭代之间有一小段延时。
延时功能可通过前文所提time模块的sleep函数实现,该函数的输入参数是需要延时的秒数。我们在本例中指定了2秒的延时,当然您也可以指定其他数值。
[mw_shl_code=applescript,true]def testThread():

  while True:

    print("Hello from thread")

    time.sleep(2)[/mw_shl_code]
有一点非常重要,那就是一旦函数返回,线程就会退出[1]。尽管如此,在本例中绝不会出现这种情况,因为我们的线程运行在一个无限的循环里。
最后,调用_thread模块的start_new_thread函数以启动线程,调用该函数时使用的第一个参数是之前定义的函数,第二个参数是对应于线程函数参数的元组。
因为我们的函数无需任何参数,所以我们将使用一个空元组。空元组可通过空括号进行声明[2]。
[mw_shl_code=applescript,true]_thread.start_new_thread(testThread, ())[/mw_shl_code]
完整的源代码如下所示。
[mw_shl_code=applescript,true]import _thread

import time



def testThread():

  while True:

    print("Hello from thread")

    time.sleep(2)



_thread.start_new_thread(testThread, ())[/mw_shl_code]
测试代码
只需将上面的脚本上传到开发板并运行,即可对代码进行测试。输出结果如图1所示,其中显示了我们的线程输出。它会按照代码中定义的数值周期性地输出消息。
图1 - 脚本代码输出结果。

注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。
他写了200多篇有关ESP32、ESP8266的有用的教程和项目。

查看更多ESP32/ESP8266教程和项目,请点击 : ESP32教程汇总贴
英文版教程 : ESP32 tutorial


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 02:29 , Processed in 0.119428 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表