`

基于嵌入式Linux图形用户接口的实现

    博客分类:
  • Java
阅读更多

1 Java的图形界面工具

  Java技术对于服务器,个人电脑和嵌入式系统来说是一项伟大的技术。由于其具有跨平台等特性。Java在服务器和桌面电脑方面的应用是非常成功的。然而在GUI方面,Java只用非常有限的一些特征去构建图形用户界面。其思想就是采用平台无关的Java应用程序接口打包到不同的操作系统来开发本地图形用户界面,被称之为抽象的窗口工具(AWT)。仅有普通的部件如文件域、文本区、选择框、单选按钮、列表框和按钮被AWT支持,图形和图像的特性支持非常有限,也就是说,只足够构建简单的applet程序。认识到需要更高级的图形用户界面组件和图形能力,Sun公司开发了Swing,Java 2D,Java3D,图像的输入/输出,以及Java高级图像(JAI)。Swing是用来构建Java图形界面的标准API(应用程序接口),一些AWT类由Swing基础而来。它有一套完全的组件从按钮到文件域、表格、树型和文件编辑器。这些组件不依赖于操作系统本地的部件,而是用原始的图形像直线、矩形、文字画出。这种画代表感观插件,它能够模仿本地的感观。SWT是基于Java开发的,它的设计理念是最大化了操作系统的图形构件的API,就是说只要操作系统提供了相应图形的构件,那么SWT只是简单应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。另外SWT还提供对操作系统本地图形用户界面的直接访问,因此,基于SWT的Java应用程序拥有本地的图形用户界面并且可以和本地别的应用程序和部件集成在一起。使用SWT开发包,简单、跨平台、可靠等这些Jaya语言本身所具有的优点正渐渐融合到图形界面的应用程序开发中去。Java语言的另一扇成功之门正在逐渐打开。

基于嵌入式Linux图形用户接口的实现

 

  2 SWT+GtkFB图形系统的体系结构

  2.1 SWT+GtkFB图形系统的体系结构

  2.1.1 SWT

  SWT处于体系机构的最上层,它与Java内的AwT和Swing同属于设计图形界面所需的高级函数库。而且SWT针对AWT 以及Swing的一些问题作了改善,如今它已发展成一套与作业系统无关的图形元件函数库。在元件的产生方面采用了适当的模拟,在基本的元件方面是采用原有作业系统的,对于较复杂的元件才用仿真的技术。基于SWT的Java应用程序拥有本地的图形用户界面,并且可以和本地别的应用程序,以及部件集成在一起。

基于嵌入式Linux图形用户接口的实现



  SWT是基于Java语言开发出来的高级图形元件库,如图2所示SWT在Java端通过JNI(Java Native InteRFace)技术直接调用native端的GtkFB来使用操作系统的资源,JNI技术使得SWT程序可以与其他语言编写的Native端的代码互相协作,将它们整合在一起;另一方面可使运行在JVM(JAava虚拟机)中的SWT代码调用GtkFB库函数或其他程序;此外利用Invocation API,可将Java虚拟机嵌入到native端的应用中。JNI这个接口是双向的,相当于桥梁和纽带,它将SWT代码和native端的GtkFB代码连接起来。

  2.1.2 Gtk库

  如图1所示,GTK会用到几个连接库,如基本数据类型用的Glib库,它是由基础类、核心应用支持类、实用功能类、数据类和对象系统类五个部分组成的。

  Pango是用于国际化文本的布局和显示的全功能框架。Pango可以处理以非从左到右方向排列的文本,并且可以容易地管理复杂语言,甚至还可以处理根据使用环境而采用不同形式的信函。例如它支持双向文本,用户可以将从左到右的文本和从右到左的文本混合编排;还可有用于确定各种复杂文本(如阿拉伯语和泰米尔语)形状的插件。Pango不仅仅是国际化,而且Pango库在Xft和XRender的支持下能很好地处理抗锯齿字体文本的显示。

  Pango还支持各种图形格式如libpng,libjpeg,li^iff和Framebuffer port用的FreeType等。实际上GTK提供gdk-pixbuf,gdk和gtk三个连接库,其中Gdk-pixbuf让我们可做相关的图像工作,gdk是窗口绘图系统的抽象层,framebuffer相关的工作大部分在此完成,而gtk则是高层的应用程序接口。

  Atk(Accessibility Toolkit)可访问性工具箱。GTK充分利用ATK使残障人士(如视力低下或行动不便)与GTK应用程序交互成为可能。

  2.1.3 GtkFB的工作原理

  DirectFB访问图形硬件设备依赖于操作系统提供的内核接口,即帧缓冲设备(FrameBuffer)。FrameBuffer实际上是用一块硬件来做显卡和软件之间的桥梁,Linux的内核将其开放出来,使用户的程序可以通过块内存来存取显卡。例如设定显示分辨率和色彩数、存取显示内存区等。不同的Linux需要提供针对不同显示硬件FrameBuffer的驱动程序,这就是说DirectFB需要运行于FramBuffer之上,然而Linux内核提供了常见芯片的FrameBuffer驱动。

  当一个应用程序连接到GtkFB时会调用gtk_init(),如图3所示,此时GtkFB 启动Linux的Framebiffer,设定分辨率和色彩数,接下来打开键盘和鼠标等外设(PDA打开按键和触控屏幕).然后到特定目录去读取字型,最后对窗口和事件管理作初始化操作。GtkFB可以支持8、16、24、32bpp的framebuffer。

基于嵌入式Linux图形用户接口的实现

 

  为了执行一个特定的图形操作,DirectFB芯片驱动程序将访问图形设备内存映射的I/O端口,并且把命令传递到图形设备卡的加速引擎。实际的硬件加速是完全在用户空间内完成的。

  2.2 SWT+GtkFB图形系统的优点

  2.2.1 内存消耗小、运行速度快特别适合嵌入式产品

  由于GtkFB直接运行在FrameBufer之上,跳过X系统,这样省下了X Server这一部分资源,这使得在内存消耗、运行速度上得到显著提高。另外采用的JNI技术使得程序运行速度、事件的响应有较高的提高,能满足时间要求较为严格的实时应用场合。

  2.2.2 系统稳定性好

  SWT 的稳定性,关键是源于SWT 的设计理念。SWT最大化了操作系统的图形构件API,就是说只要操作系统提供了相应图形的构件,那么SWT只是应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。可以看出SWT性能上的稳定很大程度上取决于相应操作系统图形构件的稳定性。

  2.2.3 易于移植和共享

  SWT的API和桌面版完全相同,因而代码可以很容易地在桌面和嵌入式设备之间移植与共享。

  2.2.4 小巧可配置

  SWT采用了LGPL授权方式,用户可以自由地甚至是鼓励修改源代码使其更加满足用户的需求,很容易根据用户的需求来裁减特定的SWT+GtkFB,依据LGPL许可证,用户需要公布修改的源代码,但用户不必公布自给应用程序的源代码。

  2.2.5 易于开发

  SWT是基于Java语言开发的,具有平台独立性、面向对象、可移植、安全等Java语言所拥有特点。用户可以很容易的基于SWT提供的Widget(构件)开发出满足自己需要的Widget,而且很容易地使用这些Widget去构建应用程序。

  3 SWT+GtkFB图形系统的实现

  3.1 前期准备

  在Linux编译和安装SWT+GtkFB,首先到http://www.gtk.org/download下载如下的包:pkg-config、glib2.x;atk、pango、DirectFB、gtk+2.x。其次到http://www.eclipse.org/download下载swt.tgr.gz。

  下一步就是在/home/XXX/目录下创建SWT 和GTK两个目录并且设置环境变量。如下:

  export SWT_HOME=/home/XXX/SWT

  export SWT_HOME=/home/XXX/GTK

  export PKG_CONFIG_PATH=$GTK_HOME /lib/pkgconfig

  export LD_LIBRARY_PATH=$GTK_HOME/lib;$LD_LIBRARY_PATH

  此外增加“/home/XXX/GTK/bin”到系统的环境变量PATH下。

  3.2 编译和安装Gtk+2.0

  3.2.1 编译和安装pkg-config

  tar zxvf glib-2.0.6.tar.gz -C $GTK_HOME/src

  cd $GTK HOME/src/glib-2.0.6

  ./configure --prefix=$GTK_HOME

  make

  make install

  3.2.2 编译和安装atk

  tar zxvf atk-1.0.1.tar.gz -C $GTK_HOME/src

  cd $GTK_HOME/src/atk-1.0.1

  ./configure --prefix=$GTK_HOME

  make

  make install

  3.2.3 编译和安装pango、Direct FB、gtk+2.0 、swt-forgtk2.2

  步骤类似atk的安装。

  4 嵌入式Linux GUI的应用前景展望

  嵌入式Linux GUI的应用领域很多,既可以用于家电市场,还可以用于商业市场、工业及自动化市场、国防市场、通讯市场等。例如,在通讯市场,手机、可视电话、机顶盒等可能成为嵌入式Linu.x的运行平台,一个人性化的用户界面是赢得消费者关键因素。因此嵌入式Linux图形系统将担任着更加重要的角色。

  未来几年,嵌入式Linux GUI将朝以下方向发展:第一,轻型、占用资源少,不希望建立在庞大累赘的、非常消耗系统资源的操作系统和GUI之上。第二,高性能、高可靠性,特别是工业实时控制系统,对实时性的要求非常高,并且比起嵌入式系统来说,对GUI的要求也更高。第三,可配置,我们必须清楚的意识到,嵌入式系统是一种定制设备,它们对GUI的需求各不相同,有的系统只要求一些图形功能,而有些系统要求完备的GUI支持,因此,GUI也必须是可定制的。

 

分享到:
评论

相关推荐

    一种基于嵌入式Linux图形用户接口的实现.pdf

    总之,嵌入式Linux图形用户接口的实现涉及多种技术,如Java的SWT和GtkFB,它们共同为嵌入式系统提供了强大而灵活的图形交互能力。随着技术的进步,这些工具和框架将进一步优化,以满足嵌入式设备不断增长的复杂性和...

    嵌入式Linux图形用户界面实现 (1).pdf

    嵌入式Linux图形用户界面实现是一种基于Linux操作系统的图形用户界面解决方案。该解决方案主要针对嵌入式系统的图形用户界面需求,旨在提供一个高效、易于开发的图形用户界面系统。 在该解决方案中,使用轻量级图形...

    嵌入式Linux图形用户界面实现.pdf

    "嵌入式Linux图形用户界面实现.pdf" 嵌入式Linux图形用户界面实现是指在嵌入式系统中实现图形用户界面的技术。该技术是基于Linux操作系统,利用SDL抽象层和基于消息驱动机制的Client/Server结构来实现图形用户界面...

    2022年博创嵌入式培训PPT-嵌入式linux图形用户接口.ppt

    嵌入式Linux图形用户接口 嵌入式Linux图形用户接口(GUI)是指在嵌入式系统中使用的图形用户接口,它是嵌入式系统中的一个关键组件。由于嵌入式系统的特点,如资源有限、实时性高、定制化强等,因此嵌入式GUI需要...

    基于嵌入式Linux的图形用户界面移植与开发.pdf

    基于嵌入式Linux的图形用户界面移植与开发.pdf 本文主要介绍了基于嵌入式Linux的图形用户界面移植与开发,涉及到Qt/E mbedded图形用户界面移植与开发的总体流程、嵌入式硬件开发平台、Qt/E mbedded移植与开发、Qt...

    基于嵌入式Linux系统下的Qt开发.pdf

    "基于嵌入式Linux系统下的Qt开发" 概述:本文主要讲述了在嵌入式Linux系统下进行Qt开发的相关知识点,包括嵌入式系统的发展、Qt在嵌入式Linux系统下的应用、Qt/E mbedded图形系统的移植、嵌入式Linux系统下的图形...

    基于嵌入式Linux图形用户接口的实现方法

    基于嵌入式Linux图形用户接口的实现方法,随着Internet与网络的迅速发展并向家庭领域不断扩展,使消费电子、计算机、通信(3C)一体化趋势日趋明显,嵌入式系统再度成为研究与应用的热点。嵌入式实时Linux操作系统以...

    嵌入式系统设计与应用:第10讲 嵌入式linux图形用户接口.ppt

    嵌入式Linux图形用户接口(GUI)是设计用于在嵌入式设备上提供直观和高效人机交互的软件系统。GUI的主要目标是通过图形化的方式让使用者与计算机进行交互,通常包括窗口、图标、菜单和指向设备(如鼠标或触摸屏)。...

    基于嵌入式Linux系统的条码识别器的设计与实现.pdf

    "基于嵌入式Linux系统的条码识别器的设计与实现" 本文介绍了一种基于嵌入式Linux系统的条码识别器的设计与实现,旨在解决传统条码识别器的局限性,实现高效、准确的条码识别。该系统集成了光源、镜头、CCD图像采集...

    基于嵌入式Linux QT的管道超声导波检测系统图形用户界面设计.pdf

    基于嵌入式 Linux QT 的管道超声导波检测系统图形用户界面设计 本文主要介绍了基于嵌入式 Linux QT 的管道超声导波检测系统图形用户界面的设计和开发。该系统采用嵌入式 Linux 作为操作系统, QT 作为图形用户界面...

    基于嵌入式Linux的GUI应用程序的实现.pdf

    ### 基于嵌入式Linux的GUI应用程序的实现 #### 一、嵌入式GUI发展概况 在探讨基于嵌入式Linux的GUI应用程序实现之前,我们先来了解嵌入式GUI的发展背景及其特点。传统的桌面Linux系统通常采用X Window系统作为底层...

    嵌入式linux图形界面开发介绍.doc

    "嵌入式 Linux 图形界面开发介绍" 嵌入式 Linux 图形界面开发是指在嵌入式系统...嵌入式 Linux 图形界面开发是指在嵌入式系统中实现图形用户界面的开发,涉及到图形函数库、图形驱动引擎、图形用户界面等方面的技术。

    嵌入式用户图形界面编程

    MicroWindows是一个为嵌入式Linux平台设计的图形用户接口,它提供了一个C/S架构,并具有相对完善的图形功能,但它缺乏硬件加速能力,并且存在一些性能上的优化问题。Microwindows可以运行在多种操作系统上,具有很好...

    基于嵌入式Linux的上肢康复机器人用户系统研究.pdf

    综上所述,文章通过研究和实现一套基于嵌入式Linux的上肢康复机器人用户系统,为脑卒中患者提供了一种全新的康复训练方式,这种系统具有高度的交互性、操作简便和良好的可扩展性。研究不仅对康复训练领域有重要贡献...

    嵌入式系统/ARM技术中的基于嵌入式Linux图形用户接口的实现

    总结来说,嵌入式Linux系统中实现GUI的关键在于选择适合的图形库。Java的AWT和Swing提供了一种跨平台的方法,而SWT结合GTK则能够实现与操作系统的深度结合,提供高性能和本地化的用户体验。随着嵌入式设备功能的增强...

    嵌入式Linux应用开发完全手册.pdf

    对于嵌入式Linux系统的GUI应用开发,本书提供了基于Qtopia和基于X的GUI系统移植教程,这对于想要进行图形化界面开发的读者来说非常重要。GUI系统能够提升用户体验,也是现代嵌入式产品中不可或缺的一部分。 最后,...

    一种嵌入式linux系统GUI的实现.pdf

    【嵌入式Linux系统GUI...总的来说,实现嵌入式Linux系统的GUI需要对颜色表示、图形设备接口、内存管理以及事件处理有深入理解。通过精心设计和实现,可以构建出高效、用户友好的GUI系统,提升嵌入式设备的用户体验。

    基于嵌入式Linux的点菜系统的设计与实现.pdf

    《基于嵌入式Linux的点菜系统的设计与实现》是一个深度探讨如何利用嵌入式Linux技术构建高效、便捷餐厅点菜系统的项目。该系统旨在优化餐厅运营,提高服务质量,为顾客提供快速、准确的点餐体验。以下是这个系统设计...

    基于嵌入式Linux的“北斗一号”卫星导航系统软件设计.pdf

    本文主要介绍了基于嵌入式Linux的“北斗一号”卫星导航系统软件设计,包括系统的定位原理、嵌入式Linux平台的开发、MiniGUI图形开发软件的应用和系统的功能实现。 一、嵌入式Linux平台的开发 嵌入式Linux是指在...

    基于嵌入式Linux与QT的MP3播放器的设计.pdf

    "基于嵌入式Linux与QT的MP3播放器的设计" 该paper主要讨论了基于嵌入式Linux与QT的MP3播放器的...该paper实现了基于嵌入式Linux与QT的MP3播放器的设计,具有低成本、低功耗、灵活性强等特点,广泛应用于嵌入式系统中。

Global site tag (gtag.js) - Google Analytics