应用于液晶屏的菜单显示系统及其显示控制方法与流程

文档序号:16627430发布日期:2019-01-16 06:14阅读:159来源:国知局
本发明涉及计算机
技术领域
:,尤其涉及嵌入式
技术领域
:,具体是指一种应用于液晶屏的菜单显示系统及其显示控制方法。
背景技术
::随着我国汽车工业的迅速发展,汽车仪表盘上显示的信息越来越多,用户对仪表信息显示愈加复杂化和多样化,目前与驾驶员的交互大部分是通过菜单实现的。在汽车仪表软件设计中菜单的设计占了大量的时间。快速、高效地设计菜单成为越来越迫切的需求。有很多图形化界面(gui)显示的技术,各种工具或语言如altia,qml等能够方便地设计菜单。但通用的工具或语言往往需要较高的软硬件配置,对mcu的计算性能、对显存gram、操作系统os有较高的要求,而限于成本压力,仪表供应商需要更轻量化的菜单构架,其中,如何设计显示构架是关键。技术实现要素:本发明的目的是克服了上述现有技术的缺点,提供了一种能够实时显示菜单的应用于液晶屏的菜单显示系统及其显示控制方法。为了实现上述目的,本发明的应用于液晶屏的菜单显示系统及其显示控制方法具有如下构成:该应用于液晶屏的菜单显示系统,其主要特点是,所述的系统包括:数据控制模块,用于将接收到的控制信息转换为所述系统可以识别的指令,所述的指令包括菜单项显示指令和菜单内容显示指令;菜单项显示模块,与所述的数据控制模块相连接,用于将所述的菜单项显示指令生成并显示同级菜单项列表;菜单内容显示模块,与所述的数据控制模块相连接,用于将所述的菜单内容显示指令生成并显示菜单内容;显示接口模块,与所述的菜单项显示模块和所述的菜单内容显示模块相连接,同时为所述的菜单项显示模块和所述的菜单内容显示模块提供统一接口以配合所述的菜单项显示模块以及所述的菜单内容显示模块分别显示所述的菜单项列表和所述的菜单内容。该应用于液晶屏的菜单显示系统中,所述的菜单项显示模块和菜单内容显示模块均内置一实时图形渲染单元,所述的实时图形渲染单元用于配合所述的菜单项显示模块和所述的菜单内容显示模块分别生成菜单项列表和菜单内容。该应用于液晶屏的菜单显示系统中,所述的数据控制模块、菜单项显示模块和菜单内容显示模块均与一菜单驱动模块相连接,所述的菜单驱动模块用于根据配置文件按需驱动所述的数据控制模块、菜单项显示模块和/或菜单内容显示模块。该应用于液晶屏的菜单显示系统中,所述的菜单项显示列表包括所显示的风格、所绘制的文本以及所滑动的显示窗口。该应用于液晶屏的菜单显示系统中,所述的数据控制模块还用于输出所述控制信息的关联信息。该应用于液晶屏的菜单显示系统中,所述的控制信息至少包括上翻菜单、下翻菜单、退回上级菜单和选中菜单。该基于上述应用于液晶屏的菜单显示系统实现应用于液晶屏的菜单显示方法,其主要特点是,所述的方法包括:(1)所述的数据控制模块根据当前控制信息发送菜单项显示指令和菜单内容显示指令;(2)所述的菜单项显示模块根据当前菜单项显示指令生成同级菜单项列表,且所述的菜单内容显示模块根据当前菜单内容显示指令生成菜单内容;(3)基于所述的显示接口模块所提供的显示接口,所述的菜单项显示模块根据系统预设的限制条件选择性地显示所述的同级菜单项列表,且所述的菜单内容显示模块显示所述的菜单内容。该应用于液晶屏的菜单显示方法中,所述的步骤(2)中,所述的菜单内容由七元组图元构成,所述的七元组图元包括标识符、位置信息、尺寸信息、颜色信息、layer配置信息、gram配置信息以及渲染函数。该应用于液晶屏的菜单显示方法中,所述的步骤(3)中,所述的限制条件至少包括菜单项显示窗口、所述显示窗口可容纳的菜单项数目、菜单项所占据的宽度以及间隔。该应用于液晶屏的菜单显示方法中,所述的显示接口模块包括layer接口和gram接口,所述的layer配置信息和所述的gram配置信息分别通过所述的layer接口和gram接口进行配置。采用了该发明中的应用于液晶屏的菜单显示系统及其显示控制方法,不仅可以更轻量化的、实时地显示菜单,还可以和pc终端方便地对接,同时显示接口模块的设计可以和嵌入式操作系统无缝的集成,具有更广泛的应用范围。附图说明图1为本发明的应用于液晶屏的菜单显示方法中的菜单项的结构示意图。图2为本发明的应用于液晶屏的菜单显示系统中的数据控制模块的结构示意图。图3为本发明的应用于液晶屏的菜单显示系统中的数据控制模块的应用示意图。图4为本发明的显示窗口的一个实例。图5为本发明的七元组图元的一个实例。图6为本发明的应用于液晶屏的菜单显示系统的结构示意图。具体实施方式为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。该应用于液晶屏的菜单显示系统包括(参阅图6):数据控制模块,用于将接收到的控制信息转换为所述系统可以识别的指令,所述的指令包括菜单项显示指令和菜单内容显示指令;菜单项显示模块,与所述的数据控制模块相连接,用于将所述的菜单项显示指令生成并显示同级菜单项列表;菜单内容显示模块,与所述的数据控制模块相连接,用于将所述的菜单内容显示指令生成并显示菜单内容;显示接口模块,与所述的菜单项显示模块和所述的菜单内容显示模块相连接,同时为所述的菜单项显示模块和所述的菜单内容显示模块提供统一接口以配合所述的菜单项显示模块以及所述的菜单内容显示模块分别显示所述的菜单项列表和所述的菜单内容。该应用于液晶屏的菜单显示系统中,所述的菜单项显示模块和菜单内容显示模块均内置一实时图形渲染单元,所述的实时图形渲染单元用于配合所述的菜单项显示模块和所述的菜单内容显示模块分别生成菜单项列表和菜单内容。该应用于液晶屏的菜单显示系统中,所述的数据控制模块、菜单项显示模块和菜单内容显示模块均与一菜单驱动模块相连接,所述的菜单驱动模块用于根据配置文件按需驱动所述的数据控制模块、菜单项显示模块和/或菜单内容显示模块。该应用于液晶屏的菜单显示系统中,所述的菜单项显示列表包括所显示的风格、所绘制的文本以及所滑动的显示窗口。该应用于液晶屏的菜单显示系统中,所述的数据控制模块还用于输出所述控制信息的关联信息。该应用于液晶屏的菜单显示系统中,所述的控制信息至少包括上翻菜单、下翻菜单、退回上级菜单和选中菜单。该基于上述应用于液晶屏的菜单显示系统实现应用于液晶屏的菜单显示方法,其主要特点是,所述的方法包括:(1)所述的数据控制模块根据当前控制信息发送菜单项显示指令和菜单内容显示指令;(2)所述的菜单项显示模块根据当前菜单项显示指令生成同级菜单项列表,且所述的菜单内容显示模块根据当前菜单内容显示指令生成菜单内容;(3)基于所述的显示接口模块所提供的显示接口,所述的菜单项显示模块根据系统预设的限制条件选择性地显示所述的同级菜单项列表,且所述的菜单内容显示模块显示所述的菜单内容。该应用于液晶屏的菜单显示方法中,所述的步骤(2)中,所述的菜单内容由七元组图元构成,所述的七元组图元包括标识符、位置信息、尺寸信息、颜色信息、layer配置信息、gram配置信息以及渲染函数。该应用于液晶屏的菜单显示方法中,所述的步骤(3)中,所述的限制条件至少包括菜单项显示窗口、所述显示窗口可容纳的菜单项数目、菜单项所占据的宽度以及间隔。该应用于液晶屏的菜单显示方法中,所述的显示接口模块包括layer接口和gram接口,所述的layer配置信息和所述的gram配置信息分别通过所述的layer接口和gram接口进行配置。请参阅图1所示,本发明的数据控制模块根据以下方案予以实现:一个菜单项menuitem应当与其唯一前驱(predecessor)、唯一后继(successor)、多个子菜单项(submenuitems)、唯一的父菜单项(parent)关联,此外,还应当指示该菜单项关联的文字(可以是多语言)、菜单内容(若干个widgets)。菜单项结构如附图1所示。使用七元组menuitem_def<itemid,predecessor,successor,subitems,parent,labelid,widgets>描述一个menuitem。其中,itemid是menuitem的标识符;predecessor是唯一前驱;successor是唯一后继,subitems是子菜单项,parent是父菜单;labelid是与item关联的文本;widgets是当该menuitem选中时应当显示的图元。可以构造出一个label对象,label中包含不同的语言以及相应的文本串,menu仅关联labelid,这样便于多语言的切换。widgets中包含一个特殊的类型:event,它本身不可以绘制,但可以发出信号,当menuitem选中时,event即可被触发。datacontrolmodule将所有的menuitem组织为orthogonallist,被一个statemachine访问。该statemachine的的结构如图2所示。首先定义menustate,枚举了该statemachine的状态,分配唯一的整数即可。再定义guad。使用三元组guard:guar_def<predicate,actions,nextstate>。其中nextstate为menustate类型,谓词(prdicate)函数判断迁移条件是否成立,当prdicate为true时,触发一系列actions函数。当actions序列执行完毕后menustate转为nextstate。一个状态需要一个变量sateid指示当前的状态,故一个状态表示为:<stateid,guards[]>。statemachine迁移图如图3所示,此外还定义当前menuitem,当执行action为handlenavigation时,修改当前的menuitem的值:若菜单上翻:menuitem=menuitem.predecessor;若菜单下翻:menuitem=menuitem.successor;若菜单进入:menuitem=menuitem.subitems[0];若菜单退出:menuitem=menuitem.parent;通知menuitemdisplay模块重绘菜单项,通知menucontentdisplay模块重绘widgets。此外,如果菜单需要进入navigation,则液晶显示屏的focus从的其它widgets(如果该widget具有接收focus的能力)迁移到菜单上。反之,菜单需要退出navigation,则从菜单上从菜单上剥夺其focus。为了实现上述目的,方案中的menuitemdisplay是这样实现的:datacontrolmodule给出当前的menuitem,menuitemdisplay自menuitem出发向前和向后遍历,找到同级的menuitems待显示。因液晶屏显示空间有限,一般不可能一次显示完所有的同级menuitems,也不可能将父菜单项和其子菜单项列表同时显示,故此menuitemdisplay建立显示窗口(displaywindow),按照软件设计给设定的菜单项显示区域、该区域内可容纳的menuitem最大条数,menuitem宽度、间隔等等限制将符合条件的menuitem绘制到显存。displaywindow的结构如图4所示。同级的items自0开始按自然数编号,因此displaywindow由一个整数对描述:window<startindex,endindex>。menuitemdisplay还拥有一个变量currentitemindex指示选中的menuitem在同级menuitems的位序。如果currentitemindex在[startindex,endindex]范围内,则displaywindow无需滑动,仅将高亮显示的menuitem更换即可。否则,更新window<startindex,endindex>。绘制时自startindex开始逐个调用label的绘制函数绘制menuitem,考虑语言、有无边框、有无滑动条、子菜单指示标志等等。遇到currentitemindex时高亮显示。当进入子菜单或退回上级菜单时,整个菜单显示区域清空后重新绘制。将window置为<0,maxmenuitems>,currentitemindex根据datacontrolmodel重新计算。绘制菜单项、边框、滑动条、子菜单指示标志等等可以有专门的绘制函数库完成,与menucontentdisplay共享该函数库。为了实现上述目的,方案中的menucontentdisplay是这样实现的:定义基本图元widget。使用七元组widget_def<widgetid,position,size,color,layercfg,buffercfg,renderingfuncs>描述一个widget。其中,widgetid是widget的标识符;position是widget位置信息;size是尺寸信息,color是颜色信息,包括前景色和背景色;layercfg是layer的配置信息,包括layer的id,位模式等等;buffercfg是gram的配置信息,包括offset和length;rendergingfuncs是widget绘制自身的函数,调用专门的绘制函数库完成绘制。除label之外,widget还包括图标(icon),图片(image)等等。一个menuitem对应一组widgets,当某个menuitem选中时,逐个绘制其对应的widget即可。此时液晶显示的focus被menuitem占有,focus可以通过设定的条件转移。为了实现上述目的,方案中的gfx是这样实现的:gfx提供配置layer和gram的接口,以及解决调用该接口时与isr访问layer和gram时的互斥问题。gfx获取gram的起始地址,并拆分为两个等长的framebuffer,而且向屏蔽两个framebuffer的细节,保证上层只在一个framebuffer上渲染,而gfx将另一个framebuffer的内容发往硬件显示,这样即加快了渲染速度,又可避免闪烁。gfx定义了layer的通用配置,用七元组表示为:layer_def<position,size,bpp,clutoffset,data,opacity,color>。其中position是位置;size是尺寸;bpp是位模式;clutoffset是颜色查找表的偏移;opacity是透明度;color是颜色信息包括前景色和背景色;data是图形数据。displaymodule将这些配置调用gfx提供的接口设置到具体的mcu寄存器中。gfx负责将通用的layer配置翻译到具体的mcu的显示模块中,如一些单片机称之为dcu(displaycontrollerunit),而另一些单片机称之为gpu(graphicprocessunit),寄存器数量、名称和设置方式也大相径庭,gfx屏蔽这些细节,向上层提供统一的接口,便于显示方案的移植。上述各个模块可以通过编制pc软件生成,并产生对应的代码,同时该方案可以方便地在不同的mcu上移植。在一具体实施方式中,本发明的显示方法可在具有图形处理单元(gpu)和一mcu(microcontrollerunit)上实现。该mcu有16个layer,支持颜色索引表(clut)和专用的gram。但本方案并不限于编程语言和mcu类型。对于描述一个menuitem的七元组menuitem_def<itemid,predecessor,successor,subitems,parent,labelid,widgets>,定义结构体structmenuitem_t映射七元组的属性。所有的menuitem配置形成一个结构体数组:menuitemlist[menu_item_num];以及一个menuitem_t指针变量currentmenuitem指示当前哪个menuitem被选中。此处labelid并不是datacontrolmodule即可接收navigation控制信号,一般是按钮信号,根据menuitemlist动态改变currentmenuitem的值。currentmenuitem可以被menuitemdisplay和menucontentdisplay读取。定义enummenustate{init,waiting_for_resource,navigating,nofocus}描述menu状态机的状态。定义结构体:structguard映射guar_def<predicate,actions,nextstate>的属性,其中nextstate为menustate类型,predicate的原型是:boolpredicate(void);actions的原型是:void(*actions[action_num])(void);定义一个状态为structstate{stateid,guard[max_guard]};定义全局变量currentstate标识当前的state。整个statemachine是一个state数组statetable。驱动statemachine时,将currentstate与statetable的各元素比对,若与某一元素匹配,则执行其predicate()函数,predicte检查通过,则顺次执行actions。对于描述一个widget的七元组widget_def,定义结构体structwidget_def_t映射widget的共通属性,而后每个具体的widget特有属性,如label会有font、language,icon会有icondata等,单独定义一个结构体struct<widgetname>_cfg_t来描述,两个结构体通过widgetid关联。以icon为例,定义结构体:structicon_t{uint32id;uint16width;uint16height;uint8bitdepth;uint16bytesperline;uint8*bitmap;};则所有的icons形成一个数组structicon_ticonlist[max_icons];在定义一个映射:structiconcfg_t{uint32widgetid,uint32iconid}将icon与widget关联起来,如图5所示。类似地,widget可以和label,image,progressbar等等关联。rendergingfuncs既是共通的属性,且与widget的个数无关,是一个函数指针数组:voiddraw(area-def*area,widget_def*widget)boolofferfocus(widget_def*widget)boolreleasefocus(widget_def*widget)gfx没有特别之处,需要根据具体的mcu改变其调用的函数即可。采用了该发明中的应用于液晶屏的菜单显示系统及其显示控制方法,不仅可以更轻量化的、实时地显示菜单,还可以和pc终端方便地对接,同时显示接口模块的设计可以和嵌入式操作系统无缝的集成,具有更广泛的应用范围。在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1