Micropython——关于_thread(多线程)开发的二次应用

摘要:

上次介绍了_thread(多线程)的基础讲解,这次将结合UART(串口)开进行开发应用讲解。串口在日常的设计中是一个非常常见的东西,所以熟练掌握是基本知识。下面,就来介绍一下关于串口与_thread 结合的一个小程序。下面是所需要准备的东西。

硬件设计:

  • Rasspberry Pi Pico开发板(应用Micropython开发)
  • USB转TTL开发板
  • 软连线

 上面显示了其连线示意图。

演示代码:

思路:当程序运行时,在串口发送字符,其显示温度,若不发送字符时,其显示时间参数,时间参数显示在程序行窗口。

import _thread
import machine
import utime
from machine import UART,Pin,ADC

temp = ADC(4)
uart = UART(0,baudrate = 115200,bits = 8,parity = None,stop = 1,tx = Pin(0),rx = Pin(1))
led = Pin(25,Pin.OUT)
gLock = None

//温度显示
def temperate():
    
    read_temp_voltage = temp.read_u16()*3.3/65535
    temperature = 27-(read_temp_voltage-0.706)/0.001721
    uart.write('Temperature {}\n'.format(temperature))

//显示时间
def data():
    print(utime.localtime())

def main():
    print('---------Start Progarm-----------\n')
    utime.sleep(1)
    print('-----请输入任意字符,以显示温度----\n')
    while True:
        gLock = _thread.allocate_lock()
        gLock.acquire()
        if uart.any() :
             print('Echo String:{}'.format(uart.readline().decode()))
             _thread.start_new_thread(temperate,())
             utime.sleep(2)     
             led.value(1)
        else:
             print('------当前时间为如下所示-------')
             _thread.start_new_thread(data,())
             utime.sleep(2)
        gLock.release()
         
if __name__ == '__main__':
    main()

示例结果:

 我们在串口软件中输入任意字符,都将会引发进程,从而调用温度显示模块,从而将温度显示在串口界面。

 当我们串口不发送字符时,我们会得到以下结果,其只进行线程2的调用,即只显示时间。

 


技术交流
欢迎转载、收藏、有所收获点赞支持一下!

 

posted @ 2022-10-10 09:00  Xa_L  阅读(181)  评论(0编辑  收藏  举报  来源