法律状态公告日
法律状态信息
法律状态
2013-03-20
未缴年费专利权终止 IPC(主分类):G06F9/455 授权公告日:20090610 终止日期:20120113 申请日:20060113
专利权的终止
2009-06-10
授权
授权
2007-02-28
实质审查的生效
实质审查的生效
2007-01-03
公开
公开
技术领域
本发明涉及嵌入式操作系统领域,尤其是涉及一种使用状态机构建电视机软件系统的方法。
背景技术
在电视机领域中,每个电视机程序基本上都是从初始化开始,显示LOGO,显示菜单,然后正式运行程序,可能会同时出现多个状态——比如程序过程中弹出菜单。
传统的处理多状态的方式是使用大量的判断、循环、分支语句。电视机初始化,退出LOGO状态后就开始一直循环,直到按下一个键;然后菜单就显示了,直到完成了选择操作。每一次程序循环,必须得检查是应该显示菜单还是简单的等待。而且,处理事件的那部分程序还必须判断输入究竟是菜单来相应还是程序来相应。所有的这些组合起来就形成了一个主循环,可以发现这个系统比较难以理解,且调试和维护也不方便。
因此,在电视机应用程序设计时,必须注意对于状态的处理,设计一个方便、统一的状态处理机制能极大地加速开发速度、降低调试和维护成本。
发明内容
本发明要解决的技术问题是克服上述现有技术存在的不足,提供一种使用状态机构建电视机软件系统的方法,使程序设计在标准化的同时,更加灵活,更易于维护。
本发明提供一种实现使用状态机构建电视机软件系统的方法,包括以下步骤:
(1)根据电视机软件需求创建状态;
(2)创建管理所述状态的状态管理器;
(3)构建电视机软件系统。
所述状态包括处理事件、数据处理及计算、绘图、初始化、释放、暂停及恢复。
所述状态管理器包括初始化、释放、改变状态、暂停状态、恢复状态、处理状态事件、处理状态数据及绘制状态。
当一个状态开始时,所述状态管理器调用状态初始化,然后循环处理状态事件、处理状态数据、绘制状态,直至状态结束,调用状态释放。
从当前状态切换到另一状态时,可直接使用所述状态管理器改变状态。
如果当前状态需要挂起,使用所述状态管理器暂停状态并切换至另一状态,所述状态管理器自动保存当前状态于状态栈,待另一状态结束,调用恢复状态恢复至当前状态。
与现有电视类软件相比,本发明具有以下有益的效果:可以快速地构建一个电视机软件系统,运行速度快且稳定;可以标准化电视机软件各部分,在标准化软件的同时,并不降低其灵活性;可以使软件各部分完全区别开,不互相干扰,灵活程度得到提高;可以使电视机软件模块化,并让其调试、维护变得简单化,降低成本。
附图说明
图1是本发明使用状态机构建电视机软件系统的方法中状态的一般组成。
图2是本发明使用状态机构建电视机软件系统的方法中状态管理器的组成。
图3是本发明使用状态机构建电视机软件系统的方法的一个简单应用。
图4是本发明中状态切换的实施例示意图。
具体实施方式
请参照图1所示,本发明提供一种实现使用状态机构建电视机软件系统的方法,包括以下步骤:
步骤一:根据电视机软件需求创建状态;
步骤二:创建管理所述状态的状态管理器;
步骤三:构建电视机软件系统。
此处先说明三个基本概念:
状态(State):指的是对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待某些事件。
事件(Event):指的是在时间和空间上占有一定位置,并且对状态机来讲是有意义的那些事情。事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态。
切换(Transition):指的是两个状态之间的一种关系,表明对象将在第一个状态中执行一定的动作,并将在某个事件发生同时某个特定条件满足时进入第二个状态。
请参照图2所示,状态就像是大系统中的一个单独的小系统。每个系统需要以不同的方式处理事件,需要在屏幕上绘制不同的内容;还需要处理它自己的事件、等待;应该能够加载图形、初始化、释放资源,并且有时系统还需要暂停,还要能够恢复。因此,可以确定状态应该拥有:处理事件(HandleEvents)、数据处理及计算(Update)、绘图(Draw)、初始化(Init)、释放(Cleanup)、暂停(Pause)、恢复(Resume)这几个方法。
有了状态的描述,还需要一个状态管理体制来对其进行管理,以实现优质高效的状态切换。
请参照图3所示,在状态管理器中,需要做的是初始化和完成后的清理工作;需要检查状态管理器是否仍然在运行、是否退出,以及处理事件、更新程序、绘制菜单。
在实现状态管理器时,我们使用“状态栈”来管理各种不同的程序状态。“状态栈”是一个存储状态的堆栈,其中当前状态存储于栈顶。可使用STL的矢量vector来实现状态栈。除此之外,还需要改变状态的方法,以及入栈和出栈方法。
状态管理器中的处理状态事件(HandleEvents)、处理状态数据(Update)、绘制状态(Draw)只需简单的调用“状态栈”顶当前状态对象相应的成员即可。
当一个状态开始时,状态管理器调用状态初始化(Init),然后循环处理状态事件(HandleEvents)、处理状态数据(Update)、绘制状态(Draw)。直至状态结束,调用状态释放(CleanUp)。
最后需要考虑的是状态之间的切换方法。
请再参照图4所示,(注意:在本发明中,状态管理器并不知道状态何时切换到另一个状态,只有当前的状态知道什么时候转向下一个状态。这一设计能大大提高了应用的灵活性,减少代码量,提高执行速度。)当前状态想要切换到另一状态时,可直接使用状态管理器改变状态(ChangeState)。如果当前状态需要挂起,也可以使用状态管理器暂停状态(PushState)切换至另一状态,状态管理器自动保存当前状态于“状态栈”,待另一状态结束,调用恢复状态(PopState)恢复至当前状态。
本方法在嵌入式领域引入了状态,并巧妙地设计了一个状态管理体制,使程序设计在标准化的同时,更加灵活。各个状态之间相互独立,无干扰,更易于维护。
机译: 使用智能标题在业务软件系统中构建业务规则的方法和系统
机译: 用于电视机操作的数据库的构建方法,1984年,用于实现该方法的设备处理设备,并使用了临床基础
机译: 使用DNA表达构建体的方法;使用两个或三个DNA表达构建体;使用DNA表达构建物生产疫苗来治疗利什曼病的疾病;使用两种或三种构建体进行DNA表达以生产疫苗来治疗利什曼病感染的疾病; DNA表达构建;和疫苗治疗利什曼病感染的疾病