首页资源分类嵌入式系统 > VxWorks下多页图形界面的设计

VxWorks下多页图形界面的设计

已有 445122个资源

下载专区

上传者其他资源

    嵌入式系统热门资源

    本周本月全部

    文档信息举报收藏

    标    签:VxWorks

    分    享:

    文档简介

    讲述了VxWorks多页图形界面的设计

    文档预览

    嵌入式操作系统应用 文章编号:1008- 0570(2006)10- 2- 0192- 03 中 文 核 心 期 刊 《微 计 算 机 信 息 》( 嵌 入 式 与 S OC )2006 年 第 22 卷 第 10-2 期 VxWo rks 下多页图形界面的设计 Th e De s ig n o f Mu ltip a g e Gra p h ica l In te rfa ce s Ba s e d o n VxWo rks (1.长春光学精密机械与物理研究所;2.中国科学院研究生院)曲 宏 松 1,2 张 叶 1,2 曹 立 华 1 耿 爱 辉 1 陈 涛 1 Qu ,Hongs ong Zhang ,Ye Cao ,Lihua Geng ,Aihui Chen ,Tao 摘要:在 嵌 入 式 应 用 开 发 过 程 中 , 有 时 需 要 友 好 的 用 户 界 面 来 完 成 一 些 人 机 互 动 操 作 。本 文 介 绍 了 在 VxWorks 操 作 系 统 下 的 多 页 面 图 形 界 面 的 设 计 。文 章 对 VxWorks 操 作 系 统 和 其 自 带 的 多 媒 体 库 ( WindML) 做 了 简 要 介 绍 ,重 点 讨 论 了 图 形 界 面 开 发 过 程 中 的 关 键 问 题 ,并 提 出 了 多 页 面 图 形 界 面 的 设 计 方 法 。本 设 计 充 分 利 用 了 VxWorks 操 作 系 统 处 理 多 任 务 能 力 强 的 优 势 , 以 及 WindML 提 供 的 丰 富 API 函 数 ,在 实 际 中 有 一 定 的 应 用 价 值 和 参 考 意 义 。 关键词:VxWor ks;WindML;图形界面;嵌入式实时操作系统 中 图 分 类 号 : T P 316.2 文献标识码:A Abstr act:In the development of embedded systems, we need some user- friendly interfaces to carry out some man- machine conversa- tion operations. This paper introduces a design of multipage graphical interfaces based on VxWorks. Operating system of VxWorks 技 and its multimedia library (WindML) are introduced briefly, and some key points of the development of graphical interfaces are dis- cussed particularly. We also bring forward a way of the design of multipage graphical interfaces. Our design takes advantage of multi- 术 tasking environment of VxWorks and plenty of API functions of WindML, and is very available and significative in practice. Key wor ds:VxWor ks,WindML,gr aphical inter faces,embedded RTOS 创 新 1 引言 的强实时性。 VxWorks 是一种高可靠性、微内核, 可裁减的实时 嵌 入 式 操 作 系 统 , 它 以 其 高 效 的 实 时 任 务 调 度 、中 断 管 理 等 优 点, 成 为 航 空 、航 天 、医 疗 、通 信 等 领 域 首 选 的操作系统。然而嵌入式操作系统要求小而精, 所以 很 多 嵌 入 式 操 作 系 统 并 不 支 持 类 似 微 软 Windows 那 样丰富而复杂的图形界面。然而在嵌入式应用中, 往 往为了用户的操作方便, 需要有一个友好的用户操作 界面。VxWorks 为解决这一矛盾, 提供了一个可选组件 ──多 媒 体 库 WindML( Wind Media Library) , 为 用 户 提供基本图形界面设计所需的 API 函数, 使用 户可以 方便地编写所需的图形界面程序。本文详细介绍了利 用 WindML 开发的多页可切换图形界面的程序设计。 2 VxWor ks 及 WindML 简 介 图 1 WindML 层次结构 WindML 是 VxWorks 的一个可选组件, 用来开发 VxWorks 的最大优势之一是实时性 强, 因为 Vx- 标准用户设备驱动程序框架以及提供基本的 图形、图 Works 有一个实时内核 Wind, 它提供了基本的实时多 像和多媒体支持。WindML 的 API 函数库提供对多种 任务环境。多任务环境使各任务从表面上看是并行工 CPU 结 构 和 操 作 系 统 适 用 的 图 形 硬 件 接 口 。 同 时 作 的 , 而 实 质 上 , 是 由 内 核 中 的 调 度 算 法 使 它 们 分 阶 WindML 还支持操作输入设备和处理输入设备事件的 段执行。Wind 支持基于优先级的抢占式调度算法和轮 功能。WindML 的层次结构如图 1 所示。VxWorks 体系 转调度算法, 默认算法为实时系统中常用的优先级抢 结构的一个特点是, 将与硬件有关和与硬件无关的部 占算法。VxWorks 提供了 256 个任务优先级, 任务间的 分分开, 这一思想在 WindML 中也有体现。WindML 中 切换可以在极短的时间内完成, 从而体现出 VxWorks 也 分 为 跟 硬 件 有 关 的 层 ( DDK layer) 和 跟 硬 件 无 关 的 曲宏松:博士研究生 基 金 项 目: 中 科 院 二 期 创 新 项 目,C 04708Z 层( SDK layer) 。其中 DDK 层负责跟底层 的具体硬件 打交道, 比如鼠标的驱动程序, 负责接收鼠标的动作 并向上层传送。而 SDK 层定义了与上层应用程序和下 - 192 - 360元 / 年 邮局订阅号: 82-946 《现场总线技术应用 200 例》 您的论文得到两院院士关注 嵌入式操作系统应用 层驱动程序的接口, 该层提供了可供用户调用的 API 函数, 使用户可以方便地开发应用程序。 3 图形界面设计 在实际的嵌入式系统开发过程中, 有时需要多页 可 切 换 的 操 作 界 面 , 以 方 便 用 户 灵 活 配 置 、修 改 系 统 参数。下文将阐述在 WindML 下制作多页可切换界面 的基本流程和方法。 3.1 配置 WindML 在 使 用 WindML 之 前 需 要 将 WindML 的 配 置 定 义、编译、连接到 VxWorks 中。这一系列复杂的工作可 以 在 主 机 运 行 的 VxWorks 开 发 软 件 Tornado2.2 上 完 成。在 Tornado 中调用 WindML 的配置工具, 可以方便 地选择需要的配置。图 2 给出了 WindML 配置界面中 的一幅截图。WindML 配置完成后, 将 WindML 组件加 入到 VxWorks 映象中, 就可以使用 WindML 的 API 函 数进行应用程序的设计开发了。 图 2 WindML 配置界面 3.2 初始化 WindML 在进行编写页面程序之前应对 WindML 进行初始 化。首先调用函数 uglInitialize()来初始化 WindML 环 境 。然 后 要 获 得 设 备 标 识 符 。每 个 设 备 都 有 一 个 句 柄 , 被称为标识符, 用来标识设备。下面的语句用来获得 设备标识符。 devId=(UGL_DEVICE_ID)uglRegistryFind (UGL_ DISPLAY_TYPE, 0, 0, 0)- >id; inputServiceId =(UGL_INPUT_SERVICE_ID)uglRe - gistryFind (UGL_INPUT_SERVICE_TYPE, 0, 0, 0)- >id; 接 下 来 , 利 用 语 句 gc = uglGcCreate(devId); 创 建 图形上下文。 到此为止, 我们完成了必要的 WindML 初始化步 骤。除此之外, 我们根据具体应用, 还要加入诸如颜色 初始化、RGB 的预定义 ( uglColorAlloc) 、光标初始化 ( uglCursorInit) 、字体初始 化( uglFontFindString 和 ugl- FontCreate) 等设置。这些工作完成以后, 就可以在图形 环 境 中 进 行 图 形 界 面 绘 制 、鼠 标 键 盘 操 作 等 编 程 了 。 3.3 图形界面的绘制 绘制图形界面 是我们工作 的重点 之 一 。WindML 提供了实现基本图形绘图功能的 API 函数。我们可以 利用下面的函数 uglLine ( ) 、uglRectangle ( ) 、uglEllipse ( ) 、ugl- TextDrawW( ) 、uglTextDraw( ) 来 画 直 线 、矩 形 、椭 圆 ( 圆 ) , 显 示 汉 字 和 英 文 字 。 而利用这些简单的语句, 就可以绘制出简洁而实用的 界面。 3.4 鼠标、键盘操作 如图 4 所示, 图中的一些系统参数需要通过鼠标、 技 键盘等输入 设 备 进 行 配 置 , 这 样 , 就 需 要 我 们 制 作 一 个能够实现人机互动的界面。鼠标键盘操作是我们工 作的另一个重点。 术 创 首先讨论鼠标的操作。鼠标操作需要解决光标移 动 、光 标 定 位 和 按 键 响 应 这 几 个 问 题 。 新 光 标 移 动 是 指 光 标 应 根 据 鼠 标 的 移 动 而 在 屏 幕 上移动到相应位置。在我们使用 Windows 操作系统的 过程中, 可能没有人会考虑这个问题, 我们的鼠标操 作已经成了很自然的事情。而嵌入式操作系统不可能 像 Windows 那样面面俱到, 哪怕是这样的小问题 也需 要用户自己开发。好在 WindML 提供了方便的 API 函 数: uglCursorMove( ) , 使得这个问题迎刃而解。 光标定位是指确定光标在屏幕上的象素点坐标, 目的是为判断光标是否到达指定位置。实际中我们需 要点击某个区域来实现某个操作, 区域是死的, 而光 标是活的, 如何知道光标是否到达该区域, 这就需要 光标定位。其实鼠标动作的属性信息存放在一个结构 中, 光标的位置信息也是此属性的一部分。我们通过 uglInputMsgGet (inputServiceId, &msg, 100); 就 可 以 将 输入设备的属性存放到结构变量 msg 中, 再通过 point.x=msg.data.pointer.position.x; point.y=msg.data.pointer.position.y; 就可以将光标的象素坐标( x, y) 提取出来, 然后对比 该坐标是否在指定区域( 用函数 UGL_POINT_IN_RECT ( ) 判断) , 就可以判断是否响应按键或其他操作。 如果光标到了指定位置, 就可以响应按键, 如果此 时恰有按键动作, 就可以根据程序要求做出响应。如 何判断有按键按下呢? WindML 是通过判断下面的逻 辑表达式来判断按键动作的。 ( msg.data.pointer.buttonState & msg.data.pointer. 《P LC 技术应用 200 例》 邮局订阅号: 82-946 360 元 / 年 -193- 嵌入式操作系统应用 中 文 核 心 期 刊 《微 计 算 机 信 息 》( 嵌 入 式 与 S OC )2006 年 第 22 卷 第 10-2 期 buttonChange) &UGL_PTR_BUTTON1 如果此逻辑为真则说明鼠标左键被按下, 否则说 明左键没有按下。 这样, 如果光标到了指定区域, 左键又被按下, 说 明用户用鼠标做出了一个选择, 程序就可以根据该选 择进行相应的处理。 键盘操作需要解决是否有键按下和按下何键两个问题。 判 断 是 否 有 键 按 下 可 以 通 过 判 断 msg.data.key- board.modifiers & UGL_KBD_KEYDOWN 的 逻 辑 来 确 定。如果逻辑为真, 说明有键按下。按下的键名也保存 在上面提到的结构变量中, 我们通过语句 key = msg. data.keyboard.key;就可以知道用户按下何键。 3.5 多页面设计 技 术 创 新 图 3 任务 n 与任务 n+1 间的切换流程图 图 4 实际应用的界面照片 实际中, 单页面往往无法满足应用需求, 这就需 要我们解决多页面设计问题。VxWorks 是一个多任务 的操作系统, 而且高效的多任务管理是 VxWorks 的特 长。所以我们就利用 VxWorks 的多任务环境来实现多 页面切换。 基于上面的叙述, 我们将每个页面操作做成一个 任务, 这样, 页面的切换就转 化为任务的 切换。Vx- Works 中的任务切换可以利用同步信号量来完成。首 先每一个任务都分配有一个信号量, 初始状态除第一 个任务的信号量为 Full 外, 其余信号拉均为 Empty。这 样保证从第一个界面开始运行, 其余界面任务都阻塞 于等待信号量的到来。当任务 n 得到了任务 n- 1 或 n+ 1 给出的信号量, 任务 n 解除阻塞, 开始向下执行。首 先任务 n 要清除页面 n- 1 或 n+1 而绘制页面 n。之后 要 响 应 鼠 标 、键 盘 。 如 果 用 户 点 击 了 “上 一 页 ”或 “下 一 页”( 如图 4) , 任务 n 就 要 释 放 相 应 的 信 号 量 , 而 触 发 任务 n- 1 或 n+1, 同时阻塞本任务 n。如果用户没有翻 页 , 则 不 跳 出 本 任 务 , 循 环 询 问 、执 行 鼠 标 键 盘 的 动 作。图 3 以其中两个界面的切换为例, 描述多页面切 换的过程。 4 结论 本文详细介绍了 VxWorks 下, 基于 WindML 的对 多页面图形界面的设计, 介绍了界面设计中的关键步 骤, 并给出了具体的解决办法。本文作者创新点: 利用 VxWorks 强大的多任务管理能力, 来解决多界面切换 的实际工程要求, 实现了方便人机互动参数输入功 能。本设计在实际应用中运行稳定, 界面友好, 图 4 给 出了实际应用中一幅界面的照片。 参考文献: [1]VxWorks Programmer's Guide[M].Wind River System Inc.2002. [2]Tornado 2.2 User's Guide[M].Wind River System Inc.2002. [3]WindML 3.0 API Reference[M].Wind River System Inc.2002. [4]孔祥营,柏桂枝.嵌入式实时操作系统 VxWorks 及其开发环境 Tornado[M].北京:中国电力出版社 2001.11:15. [5]何江水,高有行.VxWorks 汉字的显示支持[J].微计算机信息, 2005,5:96,97. 作者简介: 曲宏松 (1980.4- ),男,汉族,辽宁省大连市 人, 博士研究生,机械电子专业,现从事实时嵌入式操作系 统的应用.E- mail:quhongsong@yahoo.com.cn Biogr aphy:Qu Hongsong is ipursuing Ph.D degree in Changchun Institute of Optics,fine mechanics and physics, Chinese Academy of Sciences.Presently,he is major in embedded RTOS application. (130033 吉林长春 长春 光学 精 密 机 械 与 物 理 研 究 所) 曲宏松 张叶 曹立华 耿爱辉 陈涛 (100039 北京 中国科学院研究生院)曲宏松 张叶 (Changchun Institute of Optics, Fine Mechanics and Physics, Changchun 130033, China) Qu,Hongsong Zhang,Ye Cao,Li- hua Geng,Aihui Chen,Tao (Gr aduate School of the Chinese Academy of Sciences, Beijing 100039, China) Qu,Hongsong Zhang,Ye 通 讯 地 址: (130033 长 春 经 济 技 术 开 发 区 东 南 湖 大 路 16 号 长春光机所光电对抗部)曲宏松 (收稿日期:2006.2.16) 修稿日期:2006.3.15) - 194 - 360元 / 年 邮局订阅号: 82-946 《现场总线技术应用 200 例》

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。