目录结构和系统流程

备注

欢迎!当您查看此章节的时候,您已经步入了开发的范畴了!阅读后面的章节有利于您更好的理解桃丽系统的工作原理。

警告

由于系统自 v2.1.0 之后,目录结果有所调整,将原有的 home.py 修改并移动到了 TaoLiSystem/page/home/default/__init__.py 。并将 homeFun.py 同时进行相对应的更改。 main.py 也有更改,将引入 loader.py 将系统编程面向对象。

桃丽系统运行时会调用多个自带的代码文件,确保系统正常运行与工作,下面将阐述其目录结构。

目录结构

项目架构

仓库根目录
│
├─TaoLiSystem
│
└─resource  # 开发资源
        │      @run_build.bat   #  一键写入脚本
        │      @run_setting.bat  #  一键设置脚本
        │      build.py  #  写入脚本源代码
        │      setting.py  #  设置脚本源代码
        │      setting_instructions.py  #  设置脚本源代码中的设置项简介
        │      mpy-cross-vN.exe  #  编译程序
        │      pyboard.py  # 脚本要使用的 pyboard 支持库
        │      pyboard_utils.py  # 拓展的 pyboard 支持库
        │      requirements_check.py  # 脚本进行依赖检查的模块
        │
        ├─IMAGES  # 仓库的图片存放文件夹
        ├─plugins  # 可选用的插件,需要请拷到 TaoLiSystem 的 plugins 文件夹下
        ├─TaoLiSystem-doc  # 开发文档源文件
        └─binpython  # binpython 开源项目编译的文件,用于无 Python 运行脚本

系统架构

掌控板根目录
│  boot.py  # 启动文件,内有 BootLoader 模式。
│  main.py  # 入口文件,将会调用 loader.py 进行加载。
│
└─TaoLiSystem  # 桃丽系统的代码文件夹
        │  COPYRIGHT  # 版权文件,用于系统关于
        │
        ├─core  # 系统核心文件夹
        │      config.py  # 系统配置文件读取工具、全局变量存放位置
        │      sysgui.py  # 系统 GUI 绘制,所有常见 GUI 界面都在这里
        │      utils.py  # 系统零碎的代码集合
        │      loader.py  # 用于分配显示的页面与处理系统逻辑
        │
        ├─data  # 数据存放文件夹
        │      config.ini  # 系统配置文件
        │
        ├─modules  # 系统外接的模块文件夹存放位置
        ├─page  # 系统的主要页面
        │  └─home  # 主页面
        │      ├─default
        │      │    __init__.py  # 默认主页,原来的 home.py
        │      │    function.py  # 原来的 homeFun.py
        │      │
        │      └─easy
        │           __init__.py  # 简单示例页面
        │
        │  plugin.py  # 插件页面
        │  setting.py  # 设置页面
        │  settingFun.py  # 详细设置项
        │
        ├─plugins  # 文件文件夹
        │  └─HelloWorld  # 示例插件文件夹
        │         ico.bin  # 插件图标、图片存放文件
        │         __init__.json  # 插件信息文件
        │         __init__.py  # 插件启动代码
        │
        └─static  # 资源文件存放位置

系统流程

系统流程主要如下:

  • 掌控板启动时,调用 boot.py 文件,随后调用主代码文件 main.py

  • main.py 将会调用 TaoLiSystem/core/loader.py 进行加载系统,对于 loader.py 的逻辑请查看 main.py 的代码。

  • 加载系统时,会先使用 gc.collect() 命令释放多余内存,随后进入启动项判断(是否连接WIFI、是否同步时间等)。

  • 最后进入系统的主循环,默认加载页面 TaoLiSystem/page/home.py 文件显示主页面。

  • 通过 按键中断 来获取用户是否按下 A 键或 B 键,随后切换页面显示。

备注

值得注意的是,默认加载的页面并未写死,是可以修改的。后面将逐步介绍。

main.py 的代码如下:

备注

main_loop() 函数为系统界面绘制正式开始。

# 系统入口

# =======================调试命令=======================
from mpython import *
if button_a.value() == 0:  # 按下 A 键就退出。防止卡电脑调试。
        raise BaseException("Stop by user.")

# =======================传递参数=======================
from TaoLiSystem.core import utils
def importModule(name):  # 导入模块函数,只有在 main.py 中才能让 exec 不出问题
        _ = []
        exec("import " + name + " as pikachu;_.append(pikachu)", {"_": _})
        return _[0]

utils.importModule = importModule

# =======================系统初始化=======================
from TaoLiSystem.core import loader
loader.before_init()  # 初始化之前执行
loader.init()
loader.after_init()  # 初始化之后执行
loader.clean()  # 删去初始化的所有内容
loader.main_loop()  # 进入系统主循环