发 帖  
原厂入驻New
发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》

如何选择嵌入式系统的GUI库?

2019-7-4 22:16:11  781 嵌入式 c语言 MCU Linux
分享
2
本帖最后由 idea4good 于 2019-7-9 19:40 编辑

嵌入式系统由于软硬件资源的差异性,往往在选择GUI库时,打伤脑筋;或许有些开发者认为,直接选择Qt就可以了,但实践证明,有些项目走到一半的时候,才发现系统的性能和资源完全喂不饱这个大鳄~~
个人认为嵌入式GUI库需要解决以下问题,才能有效降低嵌入式系统开发的风险:

1. 可伸缩:
因为嵌入式系统的资源具有很强的不确定性,既可以富有的像PC一样,也可以有限到单片机的水平(cpu:60MHZ, ram < 32k),所以为了满足各种需要,GUI库也需要具有伸缩性:即可以用来制作很炫,很复杂的GUI效果,也可以作仅有几个按钮的简单GUI;即可以进行复杂的窗口管理、焦点管理、滑动/触控操作,也可以只进行一些简单的背景绘制、按钮响应。简而言之:小可以支持简单的单片机APP,大可以支持PC/手机APP

2. 开源:
由于嵌入式的硬件复杂性,调试难度很高,因此几乎要求所有的软件必须开源(甚至操作系统都需要开源)。因为只有开源,才能在调试的过程中获得足够的信息。而作为跟业务有直接联系的GUI软件,更是调试的重中之重,所以GUI库的开源,很多时候是个必选项。

3. 简单,依赖少:
GUI作为一个系统的表皮,本身并没有并不承载核心业务,相反是来支持核心业务的。如果GUI库过于复杂,很容易出现喧宾夺主的情况;而GUI又是直接呈现在用户面前的东西,一旦出现瑕疵,几乎无法忍耐,所以工程师花费大量的时间调试GUI代码是很常见的事情。因此简单的GUI库能帮助工程师省心不少。不过,目前看来,很多GUI库都是炫技般的存在,所用的语法和设计思路几乎各不相同,但总的来说很多都是:不走寻常路。有些结构设计起来,虽然很有巧妙,但不太符合直观思维;也常常因为这个原因,也常引来工程师和项目经理之间矛盾。比如,项目经理永远想不通:不就是加个按钮嘛,有那么难吗?

4. 高度定制:
用过GUI库的同学,可能都有一个感受:“几乎没有什么GUI可以直接拿来使用”。是啊!任何GUI都不是为你我而生的 -- 修改和扩展是必不可少的;另外,GUI风格有时就跟时装一样,每过段时间就需要更新,所以,很多程序员真不喜欢作GUI部分,还是作核心业务好,一旦搞定,可以吃好几年。
那么既然需要定制、扩展,那么GUI库最好是能够方便高度定制。个人认为,最简单的定制方法,就是直接修改GUI库里面的代码,这样随着时间的推移,对GUI核心的认识也会逐渐提高。如果不想动原始代码,自己独立的作一个控件,则需要GUI库充分放权,让开发者在扩展的过程中能够完全控制住最终GUI效果。

5. 跨平台:
跨平台的原因有两个:一个是为了适应嵌入式软硬件的更新;另一个则是为了提高开发速度。因为,今天最理想、强大的开发平台是PC,最好的IDE是VS或VS Code,充分利用这些工具,才能大大提高开发效率。因此,嵌入式软件最好在烧写到硬件前,能在PC环境充分验证;尽量利用Windows,Linux强大的调试工具把问题在PC端解决。开发者不可能每修改一次代码,都下载到硬件上验证,这么作的时间成本过于昂贵。

总结一下上面的要点,除了跨平台以外,在下觉得“简单”是最重要的,如果不简单,上面所有的问题都很难解决。

在下认为目前能满足以上5个条件的GUI库很少,5千行的GuiLite值得大家检验一下。目前GuiLite在Github上已经有近3K star,通过联网统计到的编译次数超过了5千次,实例运行时间超过了1万分钟;文档齐全;实例生动有趣;100%可上编译、运行。好了,上些运行效果,交给大家判断好了:
Hello3D-pc.gif
支持windows,linux,stm32 支持windows,linux,stm32 支持windows,linux,stm32 支持windows,linux,stm32
2. 特效及非矩形窗口(支持windows,linux)
支持windows,linux

idea4good 2019-7-4 22:28:04
该贴不完整,请删除,或允许我重发一次,谢谢
回复

举报

idea4good 2019-7-4 22:29:58
本帖最后由 idea4good 于 2019-7-10 21:28 编辑

帖子的内容已经完整,再发一下代码链接,希望对大家有所帮助
https://gitee.com/idea4good/GuiLite
https://gitee.com/idea4good/GuiLiteSamples
回复

举报

BMRTECH 2019-7-23 17:41:17
楼主文章是自写的吗?感谢分享~~~!
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
课程
    关闭

    站长推荐 上一条 /10 下一条

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