MiniGUI 的优点

MiniGUI 的架构

MiniGUI旨在提供快速、稳定、功能齐全、跨平台的窗口和GUI支持系统,特别适合基于 Linux/uClinux、eCos 和其他传统 RTOS(如 RT-Thread、RTEMS、FreeRTOS、VxWorks、ThreadX、Nucleus、pSOS、uC/OS-II 和 OSE)的嵌入式系统或智能物联网设备。

下图说明了 MiniGUI 的软件架构。MiniGUI 和实时操作系统之间的关系也如图所示。MiniGUI 上的应用程序可以通过调用 ANSI C 库和 MiniGUI 库中的 API 来实现其功能。MiniGUI 的基础层隐藏了底层硬件设备和操作系统的细节,应用程序不需要处理输出和输入设备。

minigui-architecture.png

如上所示,从下到上,MiniGUI 包括以下模块:

  • 图形抽象层(GAL)。GAL隐藏不同操作系统或设备之间的差异,为 MiniGUI 上层提供统一的图形界面。在 GAL 中,它包含支持 Linux 帧缓冲区、eCos LCD 等设备的软件组件。这些软件组件调用底层的设备接口,以实现特定的 GAL 操作,如打开设备、设置分辨率和视频模式、关闭设备等。我们将这些软件组件称为“GAL 引擎”。其概念类似于操作系统中的设备驱动程序。
  • 输入抽象层(IAL)。与 GAL 类似,IAL 隐藏了键盘、小键盘、鼠标和触摸屏等各种输入设备之间的差异,为上层提供了通用接口。为了支持不同的键盘、触摸屏或鼠标界面,您可以编写自己的 IAL 引擎。MiniGUI 通过 IAL 和 IAL 引擎支持 Linux 控制台(键盘和鼠标)、触摸屏、遥控器、键盘和其他输入设备。
  • 图形设备接口(GDI)。该模块基于 GAL,为上层应用程序提供与图形相关的接口,如绘制曲线、渲染文本、填充矩形等。GDI 包含其他独立的子模块,如字体和字符集支持、图像支持等。
  • 消息模块。该模块基于 IAL,实现了 MiniGUI 消息传递机制,为上层提供了一个全面的管理界面。众所周知,几乎所有的 GUI 系统都是事件驱动的,因此它自己的操作和 GUI 应用程序的操作都依赖于消息传递模块。
  • 窗口模块和控件/小部件。基于 GDI 和消息传递模块,MiniGUI 实现了窗口化模块。该模块提供基本界面,用于为上层应用程序创建主窗口和控件(小部件),并负责维护控件类。控制类是获得程序代码可重用性的重要概念。通过使用一个控件类,我们可以创建属于某类控件类的多个控件实例,以便这些实例可以使用控件类的相同代码。通过这种方式,我们可以实现类似于 C++ 的类/实例概念,这可以尽可能地重用现有代码,并提高软件的可维护性。控制模块实现了许多常用控件,如静态框、按钮、编辑框、列表框、组合框等。
  • 外观和感觉。该模块是 MiniGUI V3.0 中引入的。它可用于自定义主窗口和控件的外观。在以前的版本中,定制主窗口和控件的能力并不是一个独立的模块,但我们仍然可以通过配置选项使 MiniGUI 的主窗口和控制具有三种外观样式:PC3D(类似于 PC 的样式)、FLAT 和 FASHION。在 MiniGUI 3.0 中,应用程序可以完全自定义主窗口和控件的外观。当您创建主窗口或控件时,通过指定外观渲染器(LFRDR)的不同名称,您将获得主窗口或控制的不同外观

MiniGUI 提供了基本的窗口和图形界面以及许多标准控件(工具包)。除了 MiniGUI 之外,FMSoft 还为开发人员提供了一些组件,让开发者更容易开发应用程序:

  • mGUtils: 一个包含 ColorSelectionDialogBoxFileOpenDialogBox 等各种实用程序的 MiniGUI 组件。
  • mGPlus: 一个 MiniGUI 组件,它支持高级图形功能,如路径、渐变、抗锯齿拉伸和颜色组合。
  • mGEff: mGEff 为 MiniGUI 应用程序提供了一个动画框架。它还提供一些流行的 UI/UE 特效。
  • mGNCS: 该组件为 MiniGUI 应用程序提供了一个新的控件集。
  • mGNCS4Touch: 该组件为带有触摸屏的设备提供了一些新控件,这些控件符合 mGNCS 的新控件 API 规范。

下图显示了mGNCS 提供的控件/小部件

controls-in-mgncs.png

下图显示了 mGNCS4Touch 提供的控件/小部件。

controls-in-mgncs4touch.png

MiniGUI 的优点

与用于嵌入式系统或智能物联网设备的其他 GUI 系统相比,MiniGUI 具有以下优点:

可扩展性

MiniGUI 丰富的功能和可配置性使其适用于基于 CPU 主频 30MHz 的低端产品以及高端产品。开发人员可以使用高级控件样式和皮肤技术来创建漂亮的用户界面。

MiniGUI 具有跨操作系统的特性,可以在 uC/OS-II 等最简单的嵌入式操作系统和 Linux 等现代嵌入式操作系统上轻松运行。此外,MiniGUI 为嵌入式 Linux 操作系统提供了完整的多窗口系统。

这些特性使得 MiniGUI 具有很强的可扩展性,这是在设计 MiniGUI 时就考虑到的,所以 MiniGUI 不仅可以应用于简单的设备,也可以应用于复杂的电子产品。

重量轻,资源消耗低

MiniGUI 是一个轻量级的嵌入式图形库,我们充分考虑了嵌入式设备的硬件情况和系统资源的需求。MiniGUI 库的大小可以减少到大约 500KB 或更小,这对于嵌入式设备非常有用。

除此之外,最新的研发结果表明,MiniGUI 能够成功运行在 30 MHz CPU 和 4MB RAM 的系统上(在 uClinux 上),这是其他嵌入式图形系统无法达到的。

高性能和高可靠性

MiniGUI 良好的架构和优化的图形界面带来了非常快的图形输出。事实上,MiniGUI 是为实时系统设计的,从一开始就考虑到了紧凑、高性能和高效率。MiniGUI 已广泛应用于许多领域,特别是在工业生产系统中。MiniGUI 在这些产品或项目中扮演着重要角色。

自 1999 年发布第一个版本以来,MiniGUI 已被许多产品和项目所采用,这反过来推动 MiniGUI 不断提高其可靠性和鲁棒性。

可配置性

为了满足与嵌入式系统不同的需求,GUI 系统应该是可配置的。与 Linux 内核一样,MiniGUI 有许多编译配置选项,尽管我们可以指定 MiniGUI 库包含或排除一些特性。通常,可以针对以下方面定制 MiniGUI:

 

  • MiniGUI 所运行的目标操作系统。
  • 目标硬件平台在上运行。
  • 运行时模式:MiniGUI-Threads、MiniGUI-Processes 或 MiniGUI-Standalone。
  • 使用 GAL 和 IAL 引擎。
  • 支持的字体类型。
  • 支持的字符集。
  • 支持的图像文件格式。
  • 使用的小部件。
  • 窗口/小部件外观风格:经典、扁平或时尚风格。

这些配置选项增加了MiniGUI 的灵活性,您可以根据需要创建最适合的系统。

 

综上所述,MiniGUI 是一个面向实时嵌入式产品的嵌入式图形支持系统,具有高效、可靠、可扩展性和可配置性。它将现代窗口和图形技术引入到嵌入式设备中。我们可以将 MiniGUI 的优点总结如下:

  • 支持多个嵌入式操作系统,具有良好的可移植性。
  • 可扩展架构,易于扩展。
  • 功能丰富,可灵活定制。
  • 在低占地面积和高性能之间实现最佳平衡。

相关链接

详情请参阅以下文件:

  1. MiniGUI 概述
  2. MiniGUI 用户手册
Last Post
Next Post

Loading Conversation