CN1889644A - 使用状态机构建电视机软件系统的方法 - Google Patents
使用状态机构建电视机软件系统的方法 Download PDFInfo
- Publication number
- CN1889644A CN1889644A CNA2006100328401A CN200610032840A CN1889644A CN 1889644 A CN1889644 A CN 1889644A CN A2006100328401 A CNA2006100328401 A CN A2006100328401A CN 200610032840 A CN200610032840 A CN 200610032840A CN 1889644 A CN1889644 A CN 1889644A
- Authority
- CN
- China
- Prior art keywords
- state
- supervisor
- software system
- initialization
- treatment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种使用状态机构建电视机软件系统的方法,包括以下步骤:(1)根据电视机软件需求创建状态;(2)创建管理所述状态的状态管理器;(3)构建电视机软件系统。本发明可以快速地构建一个电视机软件系统,运行速度快且稳定;可以标准化电视机软件各部分,在标准化软件的同时,并不降低其灵活性;可以使软件各部分完全区别开,不互相干扰,灵活程度得到提高;可以使电视机软件模块化,并让其调试、维护变得简单化,降低成本。
Description
技术领域
本发明涉及嵌入式操作系统领域,尤其是涉及一种使用状态机构建电视机软件系统的方法。
背景技术
在电视机领域中,每个电视机程序基本上都是从初始化开始,显示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)恢复至当前状态。
本方法在嵌入式领域引入了状态,并巧妙地设计了一个状态管理体制,使程序设计在标准化的同时,更加灵活。各个状态之间相互独立,无干扰,更易于维护。
Claims (6)
1、一种使用状态机构建电视机软件系统的方法,包括以下步骤:
(1)根据电视机软件需求创建状态;
(2)创建管理所述状态的状态管理器;
(3)根据电视运行需求构建电视机软件系统。
2、根据权利要求1所述的方法,其特征在于:所述状态包括处理事件、数据处理及计算、绘图、初始化、释放、暂停及恢复。
3、根据权利要求1所述的方法,其特征在于:所述状态管理器包括初始化、释放、改变状态、暂停状态、恢复状态、处理状态事件、处理状态数据及绘制状态。
4、根据权利要求3所述的方法,其特征在于:当一个状态开始时,所述状态管理器调用状态初始化,然后循环处理状态事件、处理状态数据、绘制状态,直至状态结束,调用状态释放。
5、根据权利要求1所述的方法,其特征在于:从当前状态切换到另一状态时,可直接使用所述状态管理器改变状态。
6、根据权利要求3所述的方法,其特征在于:如果当前状态需要挂起,使用所述状态管理器暂停状态并切换至另一状态,所述状态管理器自动保存当前状态于状态栈,待另一状态结束,调用恢复状态恢复至当前状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100328401A CN100498714C (zh) | 2006-01-13 | 2006-01-13 | 使用状态机构建电视机软件系统的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100328401A CN100498714C (zh) | 2006-01-13 | 2006-01-13 | 使用状态机构建电视机软件系统的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1889644A true CN1889644A (zh) | 2007-01-03 |
CN100498714C CN100498714C (zh) | 2009-06-10 |
Family
ID=37578901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100328401A Expired - Fee Related CN100498714C (zh) | 2006-01-13 | 2006-01-13 | 使用状态机构建电视机软件系统的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100498714C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019695A (zh) * | 2012-11-22 | 2013-04-03 | 用友软件股份有限公司 | 数据对象与状态控制逻辑分离系统和方法 |
CN107977230A (zh) * | 2017-12-01 | 2018-05-01 | 广东雅达电子股份有限公司 | 一种基于状态机机制的应用管理方法 |
CN113031921A (zh) * | 2020-12-31 | 2021-06-25 | 南京汉隆科技有限公司 | 一种网络话机应用软件的开发框架及实现方法 |
-
2006
- 2006-01-13 CN CNB2006100328401A patent/CN100498714C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019695A (zh) * | 2012-11-22 | 2013-04-03 | 用友软件股份有限公司 | 数据对象与状态控制逻辑分离系统和方法 |
CN103019695B (zh) * | 2012-11-22 | 2016-07-06 | 用友网络科技股份有限公司 | 数据对象与状态控制逻辑分离系统和方法 |
CN107977230A (zh) * | 2017-12-01 | 2018-05-01 | 广东雅达电子股份有限公司 | 一种基于状态机机制的应用管理方法 |
CN113031921A (zh) * | 2020-12-31 | 2021-06-25 | 南京汉隆科技有限公司 | 一种网络话机应用软件的开发框架及实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100498714C (zh) | 2009-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1162762C (zh) | 混合实时控制系统的体系结构及其操作方法 | |
US8069446B2 (en) | Parallel programming and execution systems and techniques | |
US8560876B2 (en) | Clock acceleration of CPU core based on scanned result of task for parallel execution controlling key word | |
US20090172683A1 (en) | Multicore interface with dynamic task management capability and task loading and offloading method thereof | |
US20100205606A1 (en) | System and method for executing a complex task by sub-tasks | |
CN102541653A (zh) | 一种多任务线程池调度方法和系统 | |
CN1534457A (zh) | 增强的运行时间主机支持 | |
CN103984598A (zh) | 用于线程调度的方法以及系统 | |
CN1451119A (zh) | 用于移动电话的虚拟设备架构 | |
CA2429966A1 (en) | Computer multi-tasking via virtual threading | |
CN1946032A (zh) | 一种实现补丁管理的方法 | |
CN101069158A (zh) | 适用于控制具有不同关键程度的中断请求的执行的中断控制功能 | |
KR20070087393A (ko) | 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기 | |
CN1794185A (zh) | 一种多线程处理中的资源调用方法 | |
CN103019840B (zh) | 用于设置桌面的方法和装置 | |
CN1889644A (zh) | 使用状态机构建电视机软件系统的方法 | |
CN101980147B (zh) | 多线程处理器及其指令执行与同步方法 | |
CN102262555A (zh) | 加载java三方库的不同版本的方法和装置 | |
CN1801086A (zh) | 应用于Java操作系统中设备支持的实现方法 | |
US8869172B2 (en) | Method and system method and system for exception-less system calls for event driven programs | |
CN102693111B (zh) | 一种Android移动终端支持不同分辨率的方法 | |
US10521275B2 (en) | Asynchronous dispatcher for application framework | |
CN109766131B (zh) | 基于多线程技术实现软件智能化自动升级的系统及方法 | |
CN1869922A (zh) | 嵌入式实时操作系统资源管理装置 | |
CN1928826A (zh) | 多任务调度系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090610 Termination date: 20120113 |