Skip to content

[严重兼容性错误]关于掌控板3.0不支持oled库的报告 #35

@tyzr123

Description

@tyzr123

##此版本已不适用。请见掌控板3.0仓库中关于此问题新的issue

中文版本
标题: [严重兼容性错误] mPython 3.0 掌控板缺少 OLED 库支持,破坏了向后兼容性

问题描述
mPython 3.0 掌控板使用了与之前 mPython 2.x 版本完全不同的显示系统(基于 LVGL 的 lv_gui 库),而 mPython 2.x 使用的是用于 SSD1306 OLED 显示屏的 oled 库。这导致了完全的 API 中断,且没有向后兼容层。

为 mPython 2.x 编写的现有代码(使用 oled.DispChar()、oled.text()、oled.show() 等)在 mPython 3.0 掌控板上运行时会出现 NameError: name 'oled' isn't defined 错误。官方文档没有明确记录这一重大变更,也没有提供迁移指南。

重现步骤:

  1. 将 mPython 3.0 掌控板连接到计算机

  2. 编写一个导入 oled 库的简单脚本:

python
from mpython import oled
oled.DispChar("Hello World", 0, 0)
oled.show()
  1. 在 mPython 3.0 掌控板上运行该脚本

  2. 看到错误:NameError: name 'oled' isn't defined

期望的行为
以下之一:

提供将 oled API 调用内部映射到 lv_gui 的兼容层(推荐)

提供可在 mPython 3.0 上安装的 oled 兼容库

提供清晰的重大变更文档和迁移示例

在 mPython IDE 中尝试在 3.0 硬件上使用 oled 时显示警告

截图
![错误截图会显示:NameError: name 'oled' isn't defined]
在 mPython 3.0 上运行旧代码时的错误信息

桌面环境

操作系统: Windows 10

mPython IDE 版本: 0.8.7-alpha.2.1919121119141015

硬件: mPython 3.0 掌控板

补充说明

这影响了所有从 mPython 2.x 迁移项目到 3.0 的用户

mPython 模拟器也没有为 3.0 板模拟 oled 库

无法通过 pip 在 mPython 板上安装外部库

硬件变更(OLED → TFT)是可以理解的,但没有迁移路径的 API 中断是有问题的

建议的解决方案:

提供兼容性垫片库(oled_compat.py)

更新 IDE 以检测和转换旧代码

创建全面的迁移文档

考虑在未来的固件更新中添加两个库

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions