嵌入式跨平台GUI选择

时间:2022-03-29 21:06:34

关注嵌入式gui库很久了,一直想找一个合适的gui库。Thomas Petazzoni的这篇文章不错choosing-embedded-graphical-libraries,感谢Thomas Petazzoni。

1.FLTK  -- Fast Light Toolkit

FLTK (pronounced "fulltick") is a cross-platform C++ GUI toolkit for UNIX®/Linux® (X11), Microsoft® Windows®, and MacOS® X. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL® and its built-in GLUT emulation.

利用FLTK做项目是读书时的时候了,感觉不错,唯一遗憾的是不支持QNX系统。另外在非x86架构下移植也不是那么容易,貌似现在有大牛已经做了ARM下的移植,google里搜下哈,我暂时用不着不去尝试了。另外还有个gui设计工具FLUID,有点像VB,Glade或QtCreator。

附:FLTK ARM

cross-compilation-fltk-for-arm

Porting FLTK on a embedded ARM platform

 

2.MiniGUI

这个甭提了,中国人的骄傲啊,向魏永明大哥致敬!

如果你熟悉MFC,使用minigui绝对顺手:) 在一个手持播放器的项目上用过开源的minigui。后来有点时间在QNX 6.41上尝试了一把移植,说明也是可行的。

 

3.Photon

QNX专有的东西,谈不上跨平台(操作系统平台),但如果你使用QNX系统,快CPU架构是小菜一碟。其编程的难度还过得去,功能也相当强大。在下面的编程对我来说简直是享受哈哈,至今还在怀念4年前利用Photon开发DCS集成控制器(相当于一个PLC + 一个本地HMI)的那段日志。

QNX开源了,但Photon库至今没开源,持续关注中,期待Photon也早日开源,到时候看是否可以尝试移植到Linux和wince,估计QNX不乐意我这样干,嘿嘿。

 

3.GTK+

GTK+最初是GIMP的专用开发库,后来发展为类Unix系统下开发图形界面的应用程序的主流开发工具之一。做DCS控制器时尝试过跨平台方案,对GTK+进行过评估,至少QNX下是没问题的。只是鉴于项目对跨平台的需求不大最终还是选择QNX自身的Photon。

 

4.SDL -- Simple Directmedia Layer

SDL与其他GUI库有点不一样,SDL是一个*的跨平台的多媒体开发包。适用于游戏,播放器等。很多开源的播放器都支持这个,自己也模仿着ffmpeg下面的fplayer写过一个播放器,渲染和声音使用SDL,还比较好玩。跨平台没的说,绝对OK。

 

5.DirectFB

DirectFB是存在于Frame Buffer层之上与高级图形管理层如GTK+等之下的。它可以以很小的系统资源占用来提供图形硬件加速功能,提供类如多路a通道渲染模型等高级图像操作。它不修改Linux内核,除了标准C库没有其他库的依赖。应用在了基于Linux系统的DTV显示系统的研发和其他有关Linux显示界面的项目上。支持市面上绝大多数显示卡,支持键盘、鼠标、遥控器、游戏手柄、触摸屏等输入设备。支持JPEG、PNG、GIF、mpeg1/2、AVI、MOV、Flash、Video4Linux、DirectFB bitmap font和TrueType等音视频文件和字体。上层API支持DirectFB的有:XDirectFB、DirectFBGL、GTK+、DFBTerm、DFBSee、DFBPoint、MythTV、Qt on DirectFB、SDL。

QT可以直接支持Frame buffer,但也可也支持DirectFB,有机会要在项目中尝试使用看看,与Frame buffer PK下。

 

6.wxWidgets

用过emule吧,就是用wxwidget写的。能与QT进行PK的估计也只有wxwidget了。有相当多的小组件和扩展。曾经一度成为我的跨平台首选,也进行了不少预演(不过只留下一片笔记:wxWidgets在wince上的编译方法),只可惜一直没有合适的项目使用它。还是继续关注吧。

另外无法在QNX下直接运行是个问题,虽然可以运行在xfree上,但总不是那么回事,在嵌入式平台上再架个xfree效率上不知道咋样。

 

7.QT Open source 

感谢Nokia开放了QT源码,另外也修改了license为LGPL。终于可以坦荡的使用它了。QT支持的平台也逐渐在扩展,QNX和VxWorks上都有啦,Symbian就不用说了,Nokia肯定更会大力支持的。

在QNX 6.41上进行了尝试,可以运行,只是键盘驱动代码里有点问题,对QNX的键盘映射错误,这不是大问题,可以解决。终于盼来了Linux、wince、qnx下面都可以用的QT啦,不错不错。

 

突然发现自己的QNX情结还真是有点深啊,总是会考虑到qnx上的应用,毕竟QNX伴随我从读书到工作好几年呢。只是现在工作的关系逐渐远离了QNX,但还是持续关注中。