HoloCubic_AIO PC模拟器开发教程:用lv_simulater_platformio快速预览UI的5个实用技巧
【免费下载链接】HoloCubic_AIOHoloCubic超多功能AIO固件 基于esp32-arduino的天气时钟、相册、视频播放、桌面投屏、web服务、bilibili粉丝等项目地址: https://gitcode.com/GitHub_Trending/ho/HoloCubic_AIO
HoloCubic_AIO 是一款基于 ESP32 的超多功能 AIO 固件,内置天气时钟、相册、视频播放、桌面投屏、Web 服务和 Bilibili 粉丝等应用。而lv_simulater_platformio正是为它打造的PC 模拟器工程——不用刷机、不用硬件,直接在电脑上编译运行,快速预览每一帧 UI 效果 🖥️
HoloCubic小电视设备:HoloCubic_AIO PC模拟器要复刻的240x240屏幕终端
为什么需要这个 PC 模拟器?
HoloCubic 小电视的屏幕只有 240×240,每次改完 UI 代码都要走一遍「编译 → 烧录 → 等陀螺仪初始化 → 摇晃切换应用」的流程,非常拖慢节奏。
lv_simulater_platformio/目录解决的就是这个问题:它用SDL2 窗口 + LVGL v8.3在 PC 上模拟出和小电视完全一致的显示环境,鼠标还能当触摸输入用。整个工程基于 PlatformIO 管理,打开文件夹即可一键构建运行,官方说明见 lv_simulater_platformio/README.md。
模拟器工程结构一览 📦
lv_simulater_platformio/ ├── hal/sdl2/ # PC端 HAL:SDL2 窗口显示 + 鼠标输入 ├── src/ │ ├── main.cpp # 模拟器入口,构造伪数据预览应用 │ ├── app/ # 天气、示例等可预览的 LVGL 应用 │ └── font/ch_font_20.c# 微软雅黑粗体中文字库(字形高20) ├── support/sdl2_build_extra.py # 自定义 execute 构建目标 └── platformio.ini # 环境配置:分辨率、内存、LVGL 参数几个核心文件值得留意:
- 入口逻辑:lv_simulater_platformio/src/main.cpp
- SDL2 显示/输入驱动:hal/sdl2/app_hal.c
- 构建脚本(把
upload变成"编译并运行"):support/sdl2_build_extra.py
三步跑起模拟器
- 安装依赖:安装 VSCode + PlatformIO 插件,并按系统安装 SDL2 开发库(Linux 用
apt install libsdl2-dev,macOS 用brew install sdl2,Windows 用 MSYS2 的 SDL2)。 - 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ho/HoloCubic_AIO - 一键运行:用 VSCode 打开
lv_simulater_platformio文件夹,等待 PlatformIO 自动安装依赖后,在左侧资源管理器展开默认环境AIO_emulator_64bits,点击execute(或 upload,模拟器环境下两者都会编译并直接运行)。
💡 环境名
AIO_emulator_64bits已在 platformio.ini 中设为default_envs,无需手动切换。
5 个快速预览 UI 的实用技巧 💡
技巧 1:分辨率与实机 1:1,所见即所得
platformio.ini 中把窗口设为SDL_HOR_RES=240、SDL_VER_RES=240,并默认关闭缩放(SDL_ZOOM=1)。这样 PC 上预览的每一像素布局,都与小电视屏幕一致,不需要再做任何"移植适配"。
技巧 2:用伪数据秒开天气界面
模拟器入口 main.cpp 里的weather_app_simulation()会构造一套北京 20°C 的伪天气数据,先显示应用图标、延时 1 秒后直接进入天气界面。想预览自己的 App,仿照它写一个xxx_app_simulation()构造伪数据再调用xxx_gui_init()即可。
技巧 3:鼠标模拟触摸操作
app_hal.c 把 SDL 鼠标注册为 LVGL 的LV_INDEV_TYPE_POINTER输入设备。模拟器窗口里的点击、拖动就是小电视上的触摸,按钮、列表、滑块都可以真实交互测试。
技巧 4:中文字体开箱即用
工程内置了 ch_font_20.c(微软雅黑粗体、字形高 20,覆盖常用汉字),说明见 src/font/README.md。需要自定义字库时,可用仓库里的 Script/get_font.py 脚本从字模文件提取字符集。
技巧 5:限制内存,提前暴露 OOM
模拟器默认只给 LVGL 分配 128K 内存(platformio.ini 中LV_MEM_SIZE="(128U * 1024U)"),刻意贴近嵌入式约束。这样在 PC 上就能提前发现界面内存超限、分配失败的问题,避免"电脑上好好的、刷进设备就崩"的尴尬。
模拟器 vs 实机效果对比
LVGL 的官方 demo(如 benchmark、widgets 等)同样被编译进模拟器工程(见 platformio.ini 的build_src_filter),方便随时对照渲染效果:
开发完 UI 后,可对照实机与模拟器的显示差异做最终确认:
HoloCubic_AIO PC模拟器与实机屏幕的UI预览效果对比
小结 🎯
- 免硬件、免刷机:VSCode 打开
lv_simulater_platformio文件夹,点击 execute 即可预览 UI - 所见即所得:240×240 分辨率与实机一致,鼠标直接模拟触摸
- 贴近真机约束:128K LVGL 内存限制提前暴露资源问题
- 中文友好:内置中文字库,配套字体提取脚本 Script/get_font.py
对于想给 HoloCubic_AIO 开发新 App 或美化界面的同学,养成「先在 PC 模拟器里预览、再上实机验证」的习惯,能让开发效率提升一个量级。
【免费下载链接】HoloCubic_AIOHoloCubic超多功能AIO固件 基于esp32-arduino的天气时钟、相册、视频播放、桌面投屏、web服务、bilibili粉丝等项目地址: https://gitcode.com/GitHub_Trending/ho/HoloCubic_AIO
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考