Skip to content
/ Easy-UI Public

An embedded menu framework based on linked list, with easy item registration method 链表式嵌入式菜单框架,具有极简的条目注册方法

License

Notifications You must be signed in to change notification settings

ErBWs/Easy-UI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Easy-UI v1.5b

基于魔改的逐飞屏幕驱动,拙劣地模仿了稚晖君的 MonoUI 实现方式,参考了 createskyblue / OpenT12 项目UI所编写的一个UI。其中的按键库参考了 Zhewana / CommonKey 开源按键库,该按键库的链表结构给了我很大的启发。

本来想重构一下做个v1.6,可惜我太懒了,v1.5b大概率是最终版本了orz

Easy-UI v1.5se

基于逐飞屏幕库,不再需要魔改屏幕库;删去所有动画,仅保留框架,专为智能车竞赛设计的通用版本。

目的是为了解决正常菜单开发中需要为每个条目单独写很多代码,删减菜单内容会非常耗时。

推荐使用 6x8 字体大小获得更好的体验。

样例(20240414更新:现已完全开源!)

点这里

抱歉过了这么久才完整开源,总之开源了!

使用IPS096屏幕,参考逐飞库修改而来,同时更新UI使用的CH32V307VCT6芯片掉电存储方案。

实际菜单应用可见十八届智能车单车开源库

实现方式浅析

框架实现

菜单页面、项目、按键实现均采用链表方式,理论可无限扩展;

AddItem / AddPage 采用可变参数函数实现,实现输入不同func时获取不同的后续参数以初始化菜单。

屏幕驱动魔改 / 掉电存储

在逐飞的IPS114屏幕驱动基础上增加缓冲区,删除断言函数改为break处理;

参照u8g2增加部分显示函数,如绘制圆角方框等;

增加可设置颜色模式,支持正常与异或绘制,用以绘制反色指示器等;

每次系统初始化时判断flash内相应区域是否为空,若非空则读取一次数据。

‼️每次增减菜单结构请先擦除全片再进行烧录

相对MonoUI的一些更改

进度条

为了实现变量值修改时可更改步长,适配不同数量按键时统一的一套保存/放弃修改操作,我放弃了进度条的实现,更改后界面如下:

导航条

导航条原来是显示该页面所具有的栏目数量及当前所在栏目,但若栏目众多屏幕像素高度 / 栏目数量的结果不为整数时出来的效果我感觉不尽如人意,因此我将其更改为与反色指示器具有相同的位置计算,仅显示当前屏幕上指示器所在位置,也在一定程度上方便了在宽屏上,使用者一一对应左侧标题右侧状态的难易度。

部分菜单界面一览

初始界面

主界面

多选框界面

单选框界面(同一时刻只有一个能被选中)

开关界面

消息框绘制

About

An embedded menu framework based on linked list, with easy item registration method 链表式嵌入式菜单框架,具有极简的条目注册方法

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages