ESP32 MicroPython教程-向线程函数传递参数与创建线程

向线程函数传递参数

代码

导入_thread模块

import _thread

声明thread函数

将指定其接收两个输入参数,第一个参数是线程函数描述,第二个参数是一个计数器

def threadFunction(description, count):
## Thread function code

循环

循环的迭代次数等于线程函数的第二个参数(计数器值)。

def threadFunction(description, count):
  
  print(description)
  
  i = 0
  
  while i < count:
    print("Iteration: " + str(i) )
    i=i+1

启动线程

thread模块的start_new_thread函数,以启动线程。第一个参数接收的是我们之前定义的线程函数,第二个参数则是一个包含函数参数的元组
即元组的第一个元素是一个描述字符串,第二个元素则是一个计数器。

_thread.start_new_thread(threadFunction, ("Thread test function", 5))

如将计数器设为5,表示循环共有5次迭代。

import _thread
  
def threadFunction(description, count):
  
  print(description)
  
  i = 0
  
  while i < count:
  
    print("Iteration: " + str(i) )
    i=i+1
  
_thread.start_new_thread(threadFunction, ("Thread test function", 5))

线程描述字符串以及循环每次迭代的输出。
正如预料,线程函数执行了5次循环迭代,每次迭代打印一条消息。
在这里插入图片描述

创建线程

代码

周期性地打印“hello world”消息。

导入模块

导入thread模块,以便使用创建线程有关的函数
注意,模块名为_thread(一定要输入下划线)。
还需要导入time模块,以便通过调用sleep函数在函数中引入延时

import _thread
 
import time

定义新建线程中执行的函数

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

启动线程

_thread.start_new_thread(testThread, ())

第一个参数是之前定义的函数,第二个参数是对应于线程函数参数的元组。
空元组可通过空括号进行声明[2]

import _thread#创建线程有关的函数
 
import time#延时
 
  
 
def testThread():#定义新建线程中执行的函数
 
  while True:
 
    print("Hello from thread")
 
    time.sleep(2)#延时两秒
 
  
 
_thread.start_new_thread(testThread, ())#启动线程
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2022 / 01/ 30: 新版esptool 刷micropython固件指令不是 esptool.py cmd... 而是 esptool cmd... 即可;另外rshell 在 >= python 3.10 的时候出错解决方法可以查看:  已于2022年发布的: 第二章:修复rshell在python3.10出错 免费内容: https://edu.csdn.net/course/detail/29666 micropython语法和python3一样,编写起来非常方便。如果你快速入门单片机玩物联网而且像轻松实现各种功能,那绝力推荐使用micropython。方便易懂易学。 同时如果你懂C语音,也可以用C写好函数并编译进micropython固件里然后进入micropython调用(非必须)。 能通过WIFI联网(2.1章),也能通过sim卡使用2G/3G/4G/5G联网(4.5章)。 为实现语音控制,本教程会教大家使用tensorflow利用神经网络训练自己的语音模型并应用。为实现通过网页控制,本教程会教大家linux(debian10 nginx->uwsgi->python3->postgresql)网站前后台入门。为记录单片机传输过来的数据, 本教程会教大家入门数据库。  本教程会通过通俗易懂的比喻来讲解各种原理与思路,并手把手编写程序来实现各项功能。 本教程micropython版本是 2019年6月发布的1.11; 更多内容请看视频列表。  学习这门课程之前你需要至少掌握: 1: python3基础(变量, 循环, 函数, 常用库, 常用方法)。 本视频使用到的零件与淘宝上大致价格:     1: 超声波传感器(3)     2: MAX9814麦克风放大模块(8)     3: DHT22(15)     4: LED(0.1)     5: 8路5V低电平触发继电器(12)     6: HX1838红外接收模块(2)     7:红外发射管(0.1),HX1838红外接收板(1)     other: 电表, 排线, 面包板(2)*2,ESP32(28)  
MicroPython-ESP32 是一个专门为 ESP32 设计的 MicroPython 库,它提供了许多 ESP32 的驱动程序和功能模块,可以方便地在 ESP32 上开发 MicroPython 项目。 MicroPython-ESP32 库包含了以下功能模块: - machine:提供了访问 GPIO、ADC、PWM、I2C、SPI、UART 等硬件资源的方法。 - network:提供了访问 WiFi、Ethernet 等网络资源的方法。 - time:提供了时间相关的方法,如获取当前时间、延时等。 - uos:提供了文件系统相关的方法,如创建文件、删除文件等。 - ujson:提供了 JSON 编码和解码的方法。 - urequests:提供了访问 HTTP 网络资源的方法。 - usocket:提供了访问 Socket 网络资源的方法。 - ustruct:提供了字节序列和 C 结构体之间转换的方法。 - utime:提供了时间相关的方法,如获取当前时间、延时等。 使用 MicroPython-ESP32 库很简单,只需要将库文件拷贝到 ESP32 上,并在 MicroPython 代码中引入需要的模块即可。例如,以下代码演示了如何使用 MicroPython-ESP32 库中的 machine 模块控制 ESP32 的 GPIO: ```python import machine # 配置GPIO 2为输出模式 p2 = machine.Pin(2, machine.Pin.OUT) # 将GPIO 2输出高电平 p2.value(1) # 将GPIO 2输出低电平 p2.value(0) ``` 需要注意的是,MicroPython-ESP32 库的使用需要先安装 MicroPython 固件。可以从 MicroPython 官方网站下载 ESP32 的 MicroPython 固件,并使用 esptool.py 工具将固件烧录到 ESP32 上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值