当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于μCOS的预定义UI交互设计

摘要:本设计用于电能计量终端的人机交互,对直流电和单相、三相交流电的电参数进行实时显示。基于μCOS的预定义UI交互设计的特点是预定义一个菜单数组,由程序解析菜单定义。菜单项为菜单数组中的一个结构体,通过设置菜单数组就能改变菜单组合形式。菜单项的可响应按键集也以结构体的形式定义,结构体的每一元素对应一个可以响应的按键,通过按键响应动作来实现菜单切换。该设计易于实现多层次菜单,而且具备很好的可移植性,适用于大量中等规模的嵌入式系统应用。运用该设计很好地完成了电能计量终端电参数的实时显示。
关键词:UI设计;菜单设计;人机交互;μCOS;嵌入式系统

0 引言
    嵌入式设备的飞速发展大大丰富了人们的生活,无论在工业控制、仪器仪表、通信设备或是娱乐工具等各个方面都有嵌入式微处理器在工作,然而,人们要想实现对这些设备的控制就必须通过用户界面(User Interface,UI),所以人们越来越关注UI界面的可用性和用户使用效率的提高。目前,嵌入式设备开发中的UI设计多数采用按键控制简单的上下翻页或滚屏操作,缺少层次性,本设计将在S3C44BOX微控制器上植入μCOS系统,采用预定义的方式,实现一种多层次、可移植性强的预定义UI交互。

1 电能计量终端系统简介
    为实现配电自动化,需要使用电能计量终端来对多种电源的接入进行监控,包括直流电和单相、三相交流电。图1为电能计量终端的硬件系统结构框图。它以S3C44BOX微控制器为核心,配有通信电路、LCD显示电路、按键、RS 232和RS 485通信接口以及直流电和单相、三相交流电测量电路。


    电能计量终端除了具有普通智能仪表所具有的测量功能、数据处理功能和通信功能外,还为用户提供了友好的UI。通过UI交互,用户可灵活地切换和查看以下信息:供电电流、供电电压、累计供电量、有功功率、停电时间/来电时间、交流负载的总功率因数、缺相告警及
电压值超标告警等。另外,还设有掉电保护和防雷功能。

2 UI交互电路
    图2为电能计量终端的UI交互电路框图,电路中有1个128×64点阵的LCD显示器(QC12864B)和6个按键。LCD显示器每行能显示16个英文或8个中文符号,共4行。微控制器通过IO来控制LCD的显示。因为LCD外部接口信号需要5 V的驱动电平,而微控制器的IO管脚输出只有3.3 V,不能直接控制,在此使用74LVx245电平转换芯片来驱动LCD。6个按键分别为上(up)、下(down)、左(left)、右(right)、确定(enter)和取消(esc)键,微控制器通过扫描按键IO,可得到各个键值。为节省中断开销,6个按键通过与门连接到微控制器的同一个外部中断上。利用这6个按键,用户可以在菜单窗口和监控界面之间随意切换。



3 预定义UI交互设计
    UI的设计目标是实现中文窗口界面,用户可以在菜单方式下进行交互。窗口分为2类:对话框和菜单,也包括两者的混合。对话框用于参数的输入输出显示;菜单用于响应用户的选择,根据用户的选择运行程序。预定义的UI。简单的说,就是预定义一个菜单数组,由程序解析菜单定义形式。改变菜单数组中对应项的内容,就能设定菜单显示的坐标、尺寸和内容等等性能参数,而无需修改解析函数,因此具有很高的可移植性。[!--empirenews.page--]
3.1 操作界面
    根据电能计量终端的监控内容,设计菜单窗口和各菜单项对应的监控界面。设备上电后,将显示版本号,接着进入菜单窗口。菜单窗口有4行,其中前2行显示菜单项,后2行显示实时时间。菜单项共有4个,分别为交流电(包括市电和油电)、风电和光电参数。通过上下按键在主窗口的前两行进行菜单项切换。菜单窗口设计如图3所示。


    在选择的菜单项上点击enter键进入该菜单项对应的监控界面,监控内容分屏显示。交流电子菜单分7屏来显示交流电接入类型(市电/油电)、交流电压、交流电量、有功功率、市电/油电停电时间、市电/油电来电时间、功率因数等,图4(a)为其中一屏;光电/风电子菜单分2屏来显示光电/风电电压、光电/风电电流、光电/风电电量、光电/风电功率等,图4(b)为其中一屏。用户可通过up,down键和esc键来切屏和返回至菜单窗口。


3.2 预定义菜单设计
    μCOS是一个源码公开、可移植、可固化、可裁剪、抢占式、支持多任务的实时操作系统,运行于没有MMU的嵌入式微处理器上,采用可剥夺型内核进行任务调度,实时性好,小巧且移植方便,适合工业控制领域使用。在μCOS中,设置一个UI任务,完成响应用户的键盘输入、选择菜单和根据用户选择的菜单执行相应操作。菜单设计成多层次形式。菜单设计采用预定义的集中描述,由程序解析菜单定义形式。可响应的按键集也以数组的形式在菜单数组中定义。键盘服务设计成中断级任务,通过专用的消息队列发送键值到UI任务,实现实时信息显示。
    预定义的菜单由3部分控制:
    ①菜单显示区域坐标。用来定义菜单显示区域左上角字符坐标(符号常量MENU_AREA_LT_X,MENU_AREA_LT_Y,)和右下角字符坐标(符号常量MENU_AREA_RB_X,MENU_AREA_RB_Y),显示的菜单要限制在这个区域中。
    ②菜单定义。设计一个结构体数组,数组中的每个结构体描述一个菜单项的各项设置,这个结构体数组称为“菜单定义结构体数组”(Menu Deftne Structure,MDS),在C代码中命名为Menu_Define[]。
    ③当前有效菜单项指针。定义一个整型变量,称为“菜单指针”(Menu Pointer,MP),MP的值与MDS的数组下标相对应,指明了当前有效的菜单项。菜单定义采用枚举类型标识,以提高代码的可读性。[!--empirenews.page--]
    一个预定义的菜单由若干个菜单项组成,每个菜单项可以显示主显示内容和副显示内容两部分。程序运行后,主显示内容一旦定义则不改变,副显示内容是可变的。如图4(b)中,风电电压、风电电流是主显示内容,而其对应的电压、电流值是副显示内容。MDS是一个结构体数组,数组中每个元素(即每个“菜单项”)的结构如表1所示。


    可响应按键集也是一个结构体数组,每个元素对应一个可以响应的按键,Key_Collection_Iterm定义如下:
   
    部分菜单定义结构体数组成员说明:
    i16uMenu_ID:菜单的标识符,如果在某菜单上发生了“RT_ACT”(执行)动作,则菜单任务根据菜单标识符执行相应的功能。
    I16uAccessory_Type:副显示值类型,指明副显示内容的来源类型,包括常见的变量类型(char,char*,INT16U,INT16,INT32U,INT32,float,double)。
    I16uResponse_Type:按键响应动作类型,指明对当前按键的响应动作,包括:当前有效菜单项改变为上临菜单项;当前有效菜单项改变为下临菜单项;当前有效菜单项改变为右临菜单项;当前有效菜单项改变为左临菜单项;当前有效菜单项改变为父菜单项;当前有效菜单项改变为子菜单项。依据当前有效菜单项ID执行相应操作,对应的枚举类型定义如下:
[!--empirenews.page--]
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所示。



4 结语
    UI的广泛应用是当今计算机发展的重大成就之一,它强调的是计算机对于人的反馈交互作用。嵌入式UI具有下面几个方面的基本要求,轻型、占用资源少,高性能、高可靠性,便于移植、可配置。本项目设计的UI是基于预定义的文本菜单,具有菜单设计灵活、占用资源少的优点,同时支持多层次菜单,菜单功能丰富,适用于大量的中等规模的嵌入式系统应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭