-
Notifications
You must be signed in to change notification settings - Fork 59
Description
##此版本已不适用。请见掌控板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 错误。官方文档没有明确记录这一重大变更,也没有提供迁移指南。
重现步骤:
-
将 mPython 3.0 掌控板连接到计算机
-
编写一个导入 oled 库的简单脚本:
python
from mpython import oled
oled.DispChar("Hello World", 0, 0)
oled.show()
-
在 mPython 3.0 掌控板上运行该脚本
-
看到错误: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 以检测和转换旧代码
创建全面的迁移文档
考虑在未来的固件更新中添加两个库