一个非常简单的异步程序框架

MicroPython相关代码、库、软件、工具
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

一个非常简单的异步程序框架

#1

帖子 shaoziyang »

SimpleAsynchronousProgramFramework 是一个非常简单、容易使用的异步程序框架,整个框架只有3个文件(如果不需要全局变量文件,2个文件也可以)。
  • main.py,主程序文件
  • sapf_cfg.py,参数配置文件
  • global_var.py,全局变量文件
只需要在文件 “sapf_cfg.py”中设置异步任务文件和任务函数名,就可以自动创建并运行异步任务,让程序结构变得更加简洁直观。

主要配置的参数只有两个:taskfile和taskname:

代码: 全选

# task file list
taskfile = ["task1", "task2"]

# task function name list
taskname = ["task1.task_blink", "task2.task_inc"]

esp32的demo
esp32.7z
(795 Bytes) 下载 47 次
 
 

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 一个非常简单的异步程序框架

#2

帖子 shaoziyang »

创建两个任务文件

task1.py

代码: 全选

import uasyncio as asyncio
import random

from global_var import gv

async def task_blink():

    while True:
        gv.LED(not gv.LED())
        await asyncio.sleep(random.random()+0.1)

task2.py

代码: 全选

import uasyncio as asyncio

from global_var import gv

async def task_inc():

    gv.cnt = 1
    
    while True:
        print(gv.cnt, gv.LED())
        gv.cnt += 1
        await asyncio.sleep(1)

 

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: 一个非常简单的异步程序框架

#3

帖子 shaoziyang »

全局变量文件 global_var.py

代码: 全选

# define global variables, add any variables you need here
# Use class as variable container instead of defining individual variables

from machine import Pin

class global_var:

    cnt = 1
    
    LED = Pin(2, Pin.OUT, value = 0)

gv = global_var()
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章