微控制器GUI库

28

我想为连接到一个128x64点图形LCD (EA DOGL128-6)和4个按钮导航的微控制器(Atmel XMEGA)创建一个GUI驱动的应用程序。控制显示本身(例如绘制像素和字符)没有问题,但为了避免重新发明轮子,我正在搜索用c编写、包括源代码、可以在32 MHz 8位微控制器上运行并提供至少以下控件的GUI库/工具包:

  • 面板(用于分组元素)
  • 菜单(可滚动)
  • 图标
  • 标签
  • 按钮
  • 线图(可选)

但我没有找到任何有用的东西。有人知道(或更好地使用)这样的库(最好是免费的)吗?


5
可能不行,你很可能需要重新发明轮子 :( 不过,如果你这样做了,为什么不将其发布为开源项目以帮助他人呢? - samoz
你是使用实时操作系统还是裸机运行? - Judge Maygarden
1
只是为了澄清一下 - 这是单色LCD屏幕,对吧?这可能会排除一些库。 - Craig McQueen
https://littlevgl.com/ - Flip
13个回答

13

我建议自己开发“即时模式”GUI。Jari Komppa有一篇很好的教程。这比你想象的要容易得多,而且你可能会发现大多数GUI库 - 即使是针对嵌入式系统的库 - 对你的系统来说都有点过重。

如果您坚持使用第三方库,则以下是我发现的一些库。我从未使用过它们,而且它们可能相当昂贵。


1
我在产品中使用了EasyGUI。它为我们工作得很好。我们的屏幕尺寸与OP相同,基于AVR32处理器。 - uɐɪ
我决定创建自己的实现。 - Martin
@Martin 很好。你觉得最终结果怎么样? - Judge Maygarden

6

我还编写了一个支持几乎所有显示技术的库:µGUI

http://www.embeddedlightning.com/ugui/

µGUI 是一个为嵌入式系统打造的免费开源图形库,它是跨平台的,可以轻松地移植到几乎所有微控制器系统。只要显示器能够显示图形,µGUI 就不限于特定的显示技术。因此支持如 LCDTFTE-PaperLEDOLED 等显示技术。整个模块由两个文件组成:ugui.cugui.h

这也可能会有所帮助


我喜欢这个库!扔掉了TI的“grlib”,开始自己使用。你只需要一个将像素设置为RGB颜色的函数。在我的EK-LM3S3748上,“grlib”的颜色与“uGUI”完美匹配。 - user6754053
感谢@Achim编写它! - user6754053

5

我个人在工作中使用了PEG,但它不是免费的。你只需要编写一个小的适配层并使用它。你也可以看看Qtminigui


8
这是一个基于微控制器的小型系统。我怀疑QT能否适用于该平台,即使可以移植,也需要付出极大的努力。 - ConcernedOfTunbridgeWells
假设目标是单色LCD,那么这是否排除了Qt? - Craig McQueen
4
目标是一款8位微控制器,这几乎淘汰了那些有任何实际决策技能的人使用Qt的可能性。 ;) - Judge Maygarden
Qt for embedded linux怎么样?我发现Qt/E可以在uclinux上运行一些动画、按钮等。QML能在uclinux上运行吗? - Robert

3

你应该看看Contiki [wikipedia.org]

除了是一个针对许多8/16/32位微控制器的小而精美的操作系统外,它还具有GUI工具包。它可以在Atmel AVR上运行!

为您方便起见,这里是Contiki Toolkit (CTK)源代码的直接链接


很不幸,官方网站目前似乎已经离线,但该项目也可以在http://sourceforge.net/projects/contiki/上找到。 - Oskar N.

1
除了Maygarden法官的 RAMTEX清单,还提供专门针对小型图形LCD的库。再次强调这不是免费的,但如果是商业用途,请记住,如果你自己做的话,则需要花费许多人工小时才能实现精益求精的产品,在构建自己的产品之前请考虑这一点。
按照我公司对我的时间的费用(而不是我的工资水平)计算,如果超过五个小时,购买Ramtex库将更划算(如果只考虑我的工资水平,大约需要两天)。但是,如果你有时间和意愿,这并不是一个困难的任务,可能也很有趣。

RAMTEX是否具有GUI控件/小部件,还是只是LCD驱动程序? - Judge Maygarden
在他们的产品名称中使用“驱动程序”一词是不明智和误导性的;它们是GUI库。请查看特定产品链接以查看屏幕截图和功能列表。显示器功能越强大,功能越多。最好与供应商联系以获取设备支持。 - Clifford
@Clifford:你亲自使用过RAMTEX的GUI库吗?我在通过SPI接口与SSD1305通信时遇到了问题。如果你有任何想法,我会在这里发布一个问题,而不是抢占这个帖子。 - Adam Lewis
@Adam:它在我的公司中使用,但不是由我直接使用。我不确定LCD的接口是什么,甚至不知道使用了哪种LCD。 - Clifford
@Clifford:谢谢!值得一试。Ramtex已经与我联系解决了这个问题。 - Adam Lewis
使用Ramtex时,创建菜单和在菜单与图形之间切换的框架是什么(类似MVC)?是否有此类框架,还是需要“重新发明轮子”? - ransh

1

1

链接现在已经失效。 - user6754053

0

您可以免费使用"Microchip Graphics Library"。

这包括GUI工具"Graphics Display Designer X",用于设计屏幕并输出您设计的屏幕的"C"文件。

我正在使用这个非常用户友好的工具,但您可能找不到您要查找的某些小部件。

这是GUI工具的链接: 点击这里


0

NuttX 是一款针对微控制器的实时操作系统。作者已经开始为其开发一些用于LCD显示器的GUI基元。


事实上,NuttX现在拥有一个很棒的GUI系统。但是它很难移植 :( uGUI要容易得多(并且可以免费商用)。 - user6754053

0

我们已经开始使用easyGui,它看起来很不错。你可以在PC应用程序中设计屏幕,然后它会生成源代码,使设计阶段变得非常容易。

它可以完成列表中的大多数任务。折线图即将推出。您可以轻松地创建可重复使用的按钮。

它附带了许多显示器的模板驱动程序 - 根据模板与您的显示器匹配的程度(颜色深度和接口是最大的问题),您可能可以直接使用代码或更改它以适应您的需要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接