基于μCOS的预定义UI交互设计
可响应按键集也是一个结构体数组,每个元素对应一个可以响应的按键,Key_Collection_Iterm定义如下:
部分菜单定义结构体数组成员说明:
i16uMenu_ID:菜单的标识符,如果在某菜单上发生了“RT_ACT”(执行)动作,则菜单任务根据菜单标识符执行相应的功能。
I16uAccessory_Type:副显示值类型,指明副显示内容的来源类型,包括常见的变量类型(char,char*,INT16U,INT16,INT32U,INT32,float,double)。
I16uResponse_Type:按键响应动作类型,指明对当前按键的响应动作,包括:当前有效菜单项改变为上临菜单项;当前有效菜单项改变为下临菜单项;当前有效菜单项改变为右临菜单项;当前有效菜单项改变为左临菜单项;当前有效菜单项改变为父菜单项;当前有效菜单项改变为子菜单项。依据当前有效菜单项ID执行相应操作,对应的枚举类型定义如下:
3.3 预定义UI交互软件流程
预定义的菜单设计针对的是多层次的菜单设计,可以轻松实现多层次菜单显示。根据操作界面设计各个菜单项,即:在预定义的菜单项结构体中定义菜单项的标识符、坐标、上下临菜单项标识符、父子菜单标识符和可响应按键集等等。用户在当前有效菜单项上点击按键,系统根据动作ID散转,在可响应按键集中找出相应的响应动作,图5为按键响应动作类型散转流程图。
各按键通过相似的响应流程完成各自不同的响应动作,这里以单个按键为例,对按键动作响应流程进行介绍。图6是一个UI交互任务流程,完成对UP按键的响应动作,动作类型为RT_MOVE_UP。
系统上电后,首先对系统硬件和各变量进行初始化,屏幕显示首屏菜单,由活动表示符指明当前活动菜单项。当UP按键按下,进入键盘中断,随即向μCOS中发送按键消息队列,执行UI任务,在UI任务中将中断挂起,而后运行键盘扫描代码,判断出键值UP。此时,UI任务将根据当前活动菜单标识符执行RT_MOVE_UP功能。首先判断菜单显示区域内的当前活动菜单项标识符(CAID)是否等于它的上临菜单(CAID.上临ID),如果相等,不做任何操作;如果不等,再判断CAID是否为当前菜单显示区域内正在显示的最顶端的菜单项标识符(TMID)。如果CAID=TM ID,那么CAID=TMID=CAID.上临ID,调用显示菜单函数,显示此屏幕的上一屏菜单;如果CAID不是TMID,则CAID=CAID.上临ID,调用显示菜单函数,活动表示符指向CAID.上临ID。
3.4 UI交互设计实物图
UI交互设计实物图如图7所示。
UI的广泛应用是当今计算机发展的重大成就之一,它强调的是计算机对于人的反馈交互作用。嵌入式UI具有下面几个方面的基本要求,轻型、占用资源少,高性能、高可靠性,便于移植、可配置。本项目设计的UI是基于预定义的文本菜单,具有菜单设计灵活、占用资源少的优点,同时支持多层次菜单,菜单功能丰富,适用于大量的中等规模的嵌入式系统应用。
- 嵌入式系统中文输入法的设计(03-02)
- 嵌入式多功能信息交互系统的设计(05-17)
- 基于Qtopia的嵌入式中文输入法设计 (07-15)
- 基于VRML和JavaScript的数码摄影虚拟实验系统的设计与实现(09-20)
- 数字机顶盒人机交互组件的设计(02-27)
- 基于Qt的自主式水下机器人监控系统设计(03-18)