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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions