一. 综述
嵌入式系统发展日新月异,安卓和ios已然战胜了当年雄霸天下的塞班,界面是我们特别看重的因素之一。不过你考虑过自己做一套系统,写一个界面库么?在单片机上自制系统,可以很好的锻炼编程能力和架构设计能力。
这些界面库都是在底层画点画线的驱动程序上实现的,基于我的XMOVE动作感应系统。基本具有硬件无关性。支持彩屏320*240的分辨率,由于考虑不同分辨率的开发过分复杂(想想看你需要计算每个点布局在哪个位置,这对安卓等系统都是大问题),因此我并没有太过完善的考虑过其他分辨率。
我已经写过一篇关于菜单切换和任务实现的文章,本文将介绍我在低内存嵌入式系统上实现的界面GUI库。当年开发这套界面花费了大量的时间,不过搭载这些界面库和系统的硬件数量不超过3台,真是应了那句话:封闭的道路是难以求得长远的发展的。不过,嵌入式的环境下,定制化和特别化也非常正常。玩么,有什么不可以?!
虽然功能依旧有限,不能像目前主流嵌入式系统的"美观":如渐变等,但这是2KB,8MHz的单片机!根本不能实现快速移动,否则会很卡很卡....各种图片和特效都是我在大四寒假里花了大量时间反复优化的,现在看看,当年的很多工作,如果不拿出来,真的要彻底走入历史的垃圾筐了。小伤感。
它有如下特点:
-
丰富的控件元素,应对绝大多数场景
-
伪多线程显示(单片机是没有多线程一说的,因此在视觉上同时更新不同控件是需要一定底层支持的)
-
动态界面(简单滑动和渐隐效果)
-
对黑白和彩屏系统都可提供支持
如果是开发嵌入式界面的同仁,我相信我的文章会给您以一定的启发。
下面的视频演示了动态的效果:
二. 基本结构
可以用如下的结构图表示整个控件库:
通过控件组合,可以实现相当复杂的界面显示,如下图所示:
三. 基本函数实现
考虑到底层驱动并不具有普遍性,我没有给出底层驱动的接口实现。
下面的函数给出了一部分GUI基本功能库的功能函数。
- /*
- 函数:BoxGUI(unsigned char *title)
- 功能:在LCD上产生覆盖屏幕的桌面
- 参数:无
- */