硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 782|回复: 10
收起左侧

[客户分享] u8g2-js:打通单色屏开发 Web 仿真的最后一公里

  [复制链接]

9

主题

15

回帖

42

积分

新手上路

积分
42
发表于 2026-8-6 08:25:02 | 显示全部楼层 |阅读模式
本帖最后由 CacheRivulet 于 2026-8-6 15:01 编辑

u8g2-js

U8G2 单色图形库的纯 JS 移植 —— 在浏览器里像素级仿真单色屏显示,AI 开发并视觉验证后,同一份代码直接部署真机。

co2-mode.jpg

U8G2:单色屏的事实标准
OLED、单色点阵液晶屏(12864 那种灰白屏)、墨水屏这类单色屏,资源有限,跑不动 LVGL 那种重型 GUI;它们的图形库事实标准是 U8G2——支持几十种屏幕控制器、庞大的字体库、内存占用极小。做单色屏显示,基本就是 U8G2。

痛点
U8G2 开发很慢:改一次显示效果,就要重新编译、烧录、上板看,一轮几十秒到几分钟;AI 写的 U8G2 代码经常"能编译过、屏幕不对",字体、坐标、布局来回调都不对。

本项目:u8g2-js
我们把 U8G2 完整移植成纯 JS,在浏览器里像素级仿真单色屏。AI(Codex / Claude)在浏览器里完成整个闭环:

1. 开发 U8G2 显示界面(JavaScript,浏览器原样运行)
2. 视觉验证:运行、截图,多模态识图逐像素检查
3. 用户确认:效果符合预期,即通过
4. 部署:同一份代码上真机(与原生 U8G2 C 库 API 一致)

显示逻辑在浏览器里提前验证,而不是上板后才发现问题。


为什么同一份代码能上真机
  • 像素级还原:拿同一个官方 Demo,用 gcc 编译的 C 版跑一遍、导出屏幕像素图,JS 版再跑一遍、导出屏幕像素图,两张图逐像素对比,差异 = 0。帧缓冲、字体、draw_color、旋转——浏览器里看到什么,真机就是什么
  • 字体即字节数组:运行时加载任意 U8G2 字体;内置全量中文字库(宋体 8/10/12/16/24/32 px)
  • 零依赖纯 ESM:浏览器 / Node 直接跑


快速开始
  1. import { U8g2, U8g2Font } from './src/index.js';

  2. const u8g2 = new U8g2({ display: 'ssd1306_128x64_noname_f' });
  3. u8g2.setFont(U8g2Font.fromBase64('AP//AA...')); // 字体就是字节数组
  4. u8g2.drawStr(0, 10, 'Hello');
  5. u8g2.sendBuffer();
  6. u8g2.attachCanvas(document.getElementById('screen'));
复制代码
在项目根目录起 live server(npx serve .)→ 打开 index.html 进入各示例。

License
BSD-2-Clause,保留原 U8G2 版权声明。



build 06 August 2026 14:42 (UTC+8)
environment-mode.jpg
pm25-mode.jpg

评分

参与人数 1金币 +20 收起 理由
tovinz + 20 很给力!

查看全部评分

回复

使用道具 举报

3

主题

87

回帖

96

积分

初级会员

积分
96
发表于 2026-8-6 10:32:14 | 显示全部楼层
非常好的东西啊
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124160
QQ
发表于 2026-8-6 10:33:37 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

2

主题

124

回帖

130

积分

初级会员

积分
130
发表于 2026-8-6 11:17:30 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

155

主题

780

回帖

1260

积分

至尊会员

积分
1260
QQ
发表于 2026-8-6 13:14:57 | 显示全部楼层
谢谢分享,不过我这边好像 无法访问 github.io的主页。
回复

使用道具 举报

3

主题

50

回帖

59

积分

初级会员

积分
59
发表于 2026-8-7 06:08:24 | 显示全部楼层
谢谢分享
回复

使用道具 举报

1

主题

92

回帖

95

积分

初级会员

积分
95
发表于 2026-8-7 09:21:54 | 显示全部楼层
这个很方便啊,谢谢楼主
回复

使用道具 举报

5

主题

248

回帖

263

积分

高级会员

积分
263
发表于 2026-8-7 09:48:48 | 显示全部楼层
做的不错,不过能不能增加屏幕尺寸的设置,自动根据当前显示器和设置,按照真实的显示屏大小去显示出来。
因为光看像素是差不多,但是上了液晶屏后,还是有区别。
有些字体、图案,上了屏发现太小,不合适,还是得修改
回复

使用道具 举报

11

主题

127

回帖

160

积分

初级会员

积分
160
发表于 2026-8-7 11:29:24 | 显示全部楼层
支持多级灰度吗?
回复

使用道具 举报

11

主题

127

回帖

160

积分

初级会员

积分
160
发表于 2026-8-7 11:29:31 | 显示全部楼层
支持多级灰度吗?

点评

不支持,这个库是单色屏的。Demo 里面的灰度进行了特殊处理,单独弄了一个灰度通道,然后抖动成单色调  详情 回复 发表于 2026-8-9 11:04
回复

使用道具 举报

9

主题

15

回帖

42

积分

新手上路

积分
42
 楼主| 发表于 2026-8-9 11:04:14 | 显示全部楼层
xy201207 发表于 2026-8-7 11:29
支持多级灰度吗?

不支持,这个库是单色屏的。Demo 里面的灰度进行了特殊处理,单独弄了一个灰度通道,然后抖动成单色调
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-9-23 08:30 , Processed in 0.208783 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表