1、嵌入式GUI设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RT-Thread/GUI控件类继承图
各个控件类列表
widget控件
rtgui_widget是RT-Thread/GUI系统中控件 相关的基类,描述了 GUI 中一个控件的基 本特性,定义了最基本的事件处理方法。 在 GUI 中的其他各种控件都是从它为源头 进行派生,所有通过它派生的对象都能够 通过 RTGUI_WIDGET(obj) 的宏转换成 rtgui_widget 控件来使用,并调用相应的函 数方法进行处理。
嵌入式GUI的组成部分(二)
单一文件界面 在窗口中,一个数据在一个窗口内完成的 方式。在这种情况下,数据和显示窗口的 数量是一样的。若要在其他应用程序的窗 口使用数据,将相应生成新的窗口。因此 窗口数量多,管理复杂。 多文件界面 在一个窗口之内进行多个数据管理的方式。 这种情况下,窗口的管理简单化,但是操 作变为双重管理。
嵌入式GUI的准则
减少用户的认知负担 保持界面的一致性 满足不同目标用户的需求 用户界面友好性 图标识别平衡性 图标功能一致性 建立界面与用户的互动交流 可操控性和扩充性的易用性
嵌入式GUI的应用领域
手机通讯移动平台 平板电脑 数码产品 车载系统产品 智能家电产品 工业数控平台
void rtgui_panel_register(char *name, rtgui_rect_t *extent)
例子:rtgui_rect_t rect;
rect.x1 = 0; rect.y1 = 0; rect.x2 = 240; rect.y2 = 320; rtgui_panel_register( “main”, &rect ); rtgui_panel_set_default_focused( “main” );
嵌入式GUI的组成部分(三)
标签 多文件界面的数据管理方式中使用的一种 界面,将数据的标题在窗口中并排,通过 选择标签标题显示必要的数据,这样使得 接入数据方式变得更为便捷。 菜单 将系统可以执行的命令以阶层的方式显示 出来的一个界面。一般置于画面的最上方 或者最下方,应用程序能使用的所有命令 几乎全部都能放入。
服务端模块
GUI Server 服务端事件处理主线程 Panel 面板及面板之上的线程维护 TopWin 顶层窗口信息维护 Mouse 鼠标相关信息处理
面板(Panel)
RT-Thread/GUI服务端维护着屏幕的面板划 分,并且面板与面板之间是相互不重叠。 注册面板可以通过如下函数接口进行:
嵌入式GUI的组成部分(四)
图标 显示在管理数据的应用程序中的数据,或 者显示应用程序本身。应用程序的图标只 能用于启动应用程序。 按钮 菜单中,利用程度高的命令用图形表示出 来,配置在应用程序中,成为按钮。应用 程序中的按钮,通常可以代替菜单。
嵌入式GUI的分类(一)
低端嵌入式GUI: μC/GUI、RT-Thread/GUI 适用平台: 单片机、ARM7、ARM Cortex-M 开发语言: C语言 操作系统: μC/OS、RT-Thread
container控件
rtgui_container被设计成RTGUI中的一个容器类, 它允许在它之下包含数个子控件,子控件的大小 位置必须在container大小位置之内,否则自动被 剪切掉。rtgui_container内的控件绘图次序是按照 从上到下的次序进行的。 container结构体:
RT-Thread/GUI采用 传统的客户端/服务 器的结构,但和传 统的C/S架构中把绘 画操作放于服务器 不同的是,绘画操 作完全由客户端自 行完成。服务端仅 维护着各个客户端 的位置信息
服务端
当一个图形应用(workbench)或者窗口 (window)需要创建时,需要向GUI服务 端请求允许创建相应的实例。GUI服务端将 记录下相应的位置信息。在RT-Thread/GUI 中,屏幕会被分隔成数个互不相重叠的面 板(panel)。面板数也可以只有一个(即 全屏),或所有面板拼接成的总体面积并 不完全覆盖真实的物理屏面积。 服务端提供的功能主要是客户端(线程) 的管理及鼠标、键盘事件的派发
minigui简介二2010年飞漫软件把最新版的miniguimdolphinmpeermstudio等系统整合在一起推出了合璧操作系统hybridos解决方案是一整套专为嵌入式设备打造的快速开发平台集成了飞漫软件10年的嵌入式行业研发经验和众多成熟的产品使众多的希望在嵌入式设备上做开发的中小型企业摆脱了不稳定的内核以及驱动程序交叉编译工具链基础函数库存在大量缺陷不恰当的开源软件高水平嵌入式开发工程师缺乏等这些问题的困扰从而能够在一个运行稳定功能强大的小巧系统内核基础上专注开发产品
widget部分相关函数
rtgui_widget_create创建新widget控件 rtgui_widget_destroy删除widget控件 rtgui_widget_set_event_handler设置 widget控件的事件处理函数 rtgui_widget_event_handler widget控件的 默认事件处理函数 rtgui_widget_focus设置控件的焦点 rtgui_widget_unfocus去除控件的焦点
嵌入式GUI的分类(二)
中端嵌入式GUI: miniGUI、OpenGUI、 Microwindows 适用平台: ARM7、ARM9、ARM11、 ARM Cortex-R 开发语言: C语言 操作系统: 嵌入式Linux、μC/Linux
嵌入式GUI的分类(三)
高端嵌入式GUI: Qt/Embedded( Qtopia )、Android、MFC 适用平台: ARM9、ARM11、ARM Cortex-A 开发语言: C++语言、JAVA语言 操作系统: 嵌入式Linux、Win CE/Win Phone
container部分相关函数
rtgui_container_add_child在container容器 中添加一个子控件 rtgui_container_remove_child在container 容器中删除一个子控件 rtgui_container_destroy_children在 container容器中删除所有子控件 rtgui_container_get_first_child获得 container容器中第一个子控件
void rtgui_server_post_event( struct rtgui_event *event, rt_size_t size );
客户端
一个客户端是一个独立的可执行体:线程 客户端会负责大部分的UI操作 客户端线程的主要操作分为两大类:事件处理和 绘图操作 客户端根据上层应用的不同相应的分成了两类: workbench和window Window可以是一个独立窗口(具有独立线程), 也可以是workbench下的附属窗口(事件处理, 绘图操作依附于workbench线程) GUI客户端需要建立相应的事件处理消息队列
workbench消息处理序列图
workbench(二)
创建一个workbench应用,主要有三点: 1、创建相应的线程(执行环境); 2、提供相应的事件处理消息队列; 3、执行workbench的事件循环 RT-Thread/GUI支持两种模式,小模式和标 准模式。当使用小模式时,相应的内存占 用更少。而标准模式则支持更多的回调函 数,并且支持自动布局引擎。当使用小模 式时,消息队列的单个消息可以相应小一 些,但不能小于32字节
嵌入式GUI的组成部分(一)
桌面 在启动时显示,也是界面中最底层,有时也指代 包括窗口、文件浏览器在内的“桌面环境”。在 桌面上由于可以重叠显示窗口,因此可以实现多 任务化。 视窗 应用程序为使用数据而在图形用户界面中设置的 基本单元。应用程序和数据在窗口内实现一体化。 在窗口中,用户可以在窗口中操作应用程序,进 行数据的管理、生成和编辑。通常在窗口四周设 有菜单、图标,数据放在中央。
பைடு நூலகம்
设备上下文种类
设备上下文(Device Context)可以认为是能够绘图 的一个上下文环境。 当前RT-Thread/GUI中包括两种DC: 1、硬件DC,即支持操作目标硬件的上下文环境 struct rtgui_dc *rtgui_dc_hw_create( rtgui_widget_t *owner ) 2、缓冲DC,即仅仅针对缓冲区进行绘图的上下文 环境 struct rtgui_dc *rtgui_dc_buffer_create( int width, int height )
RT-Thread/GUI组件功能
多线程图形用户界面 依赖与RT-Thread线程调度器的实时图形用 户界面 创新地在嵌入式系统中引入面板(panel)的 概念,缩小了多线程,多窗口GUI编程代价 C语言方式的全面向对象设计 界面主题支持 中文文本显示支持 丰富的控件支持
RT-Thread/GUI架构
TopWin
当应用线程需要创建窗口时,需要向GUI服 务端请求创建,并把它的位置信息送给服 务端。服务端在收到窗口创建请求后,需 要把它的位置信息加入到topwin列表中,并 根据它的情况决定是否添加边框、标题信 息。
鼠标键盘
鼠标与键盘的处理亦由GUI服务端处理,它 们都转换成消息事件的方式进行处理。所 以鼠标、键盘驱动最主要的方法就是:把 相应的鼠标状态和键值转换成事件的形式 发送给GUI服务端线程。 发送给GUI服务端的函数是:
图形上下文
控件的背景色、前景色、文字对齐模式及 字体,在RT-Thread/GUI里统称为GC,即 图形上下文。 对于控件对象,可以通过如下宏获得相应 的数据: RTGUI_WIDGET_FOREGROUND(w) RTGUI_WIDGET_BACKGROUND(w) RTGUI_WIDGET_TEXTALIGN(w) RTGUI_WIDGET_FONT(w) 其中,w是一个rtgui_widget对象
workbench(一)
workbench是附着在面板上的应用程序,每一个 workbench具备独立的线程执行上下文环境,相 应线程具备自己的消息邮箱,其事件处理循环即 为处理达到的消息事件。创建一个 workbench 时, 应用程序需要主动发送相应事件给 GUI 服务端并 且给出它附着 (attach) 的面板名称。如果 GUI 服 务端获得 workbench 的附着请求后,查询系统中 确实存在相应面板,它将把相应面板的信息返回 给 workbench 以允许它在上面进行显示。当 workbench 获得了面板信息后,它将能够在绘图 时直接调用底层图形驱动接口进行相应位置的绘 图。
RT-Thread/GUI
RT-Thread是一款来自中国的开源实时操作系统, 由国内一些专业开发人员开发、维护。它不仅仅 是一款高效、稳定的实时核心,也是一套面向嵌 入式系统的软件平台,覆盖了全抢占的实时操作 系统内核,小巧而与底层具体实现无关的文件系 统,轻型的TCP/IP协议栈以及轻型的多窗口多线 程图形用户界面。 RT-Thread/GUI是一个图形用户界面,它专为RTThread操作系统而开发,并在一些地方采用了RTThread特有功能,这个图形用户界面组件能够为 RT-Thread上的应用程序提供人机界面交互功能。
嵌入式GUI设计
陈俊彦
嵌入式GUI概述
什么是GUI? 图形用户界面(Graphical User Interface, 简称 GUI,又称图形用户接口)是指采用 图形方式显示的计算机操作用户界面。与 早期计算机使用的命令行界面相比,图形 界面对于用户来说在视觉上更易于接受。
嵌入式GUI的特点
嵌入式GUI的广泛应用是当今计算机发展的 重大成就之一,它极大地方便了非专业用 户的使用,人们从此不再需要面对功能单 一的按键和死记硬背大量的命令,取而代 之的是可以通过窗口、菜单、按钮等方式 来方便地进行操作。 嵌入式GUI具有下面几个方面的基本要求: 轻型、占用资源少、高性能、高可靠性、 便于移植、可配置等特点。
window
创建一个独立的window应用,主要有三点: 1、创建相应的线程(执行环境); 2、提供相应的事件处理消息队列; 3、执行window的事件循环 窗口是具备最高优先级的,永远位于 workbench的顶端,适合做为消息窗口或输 入显示出来
设备上下文
客户端绘图,需要在正 确的地方绘制,例如当 一个window在一个 workbench之上时。当 workbench 需要更新, 它不能够把 window 覆 盖的区域给错误地绘成 自己的图形。所以当一 个客户端需要绘图时, 它需要一个知道它当前 所在区域的上下文环境, 这个就是:(图形) 设备 上下文。
相关文档
最新文档