CN104881297A - 一种状态机管理方法及系统 - Google Patents
一种状态机管理方法及系统 Download PDFInfo
- Publication number
- CN104881297A CN104881297A CN201510349400.8A CN201510349400A CN104881297A CN 104881297 A CN104881297 A CN 104881297A CN 201510349400 A CN201510349400 A CN 201510349400A CN 104881297 A CN104881297 A CN 104881297A
- Authority
- CN
- China
- Prior art keywords
- state
- state machine
- array
- failover events
- number group
- 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.)
- Pending
Links
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明提供一种状态机管理方法及系统。所述状态机管理方法包括:根据状态机中的状态设置状态数组,每个状态对应状态数组中的一个状态数组元素,所述状态数组的字段包括:状态动作、转移数量以及转移事件数组,所述转移事件数组包括所述转移数量个元素;所述转移事件数组的字段包括:转移事件以及转移状态;预设状态机的当前状态;状态检测时,依次检测当前状态所对应的状态数组元素中的每一个所述转移事件数组元素:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,中断所述状态检测。本发明的技术方案能够改进现有的技术中的缺点,提高状态机管理的效率,同时具有很高的健壮性。
Description
技术领域
本发明涉及一种计算机技术,特别是涉及一种状态机管理方法及系统。
背景技术
有限状态机又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型,状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它,动作是在给定时刻要进行的活动的描述。有多种类型的动作。在嵌入式系统中,通常要求系统实现短小精炼,现有的对于状态机实现的解决方案采用switch/case或者if/else,这无意是最直观的方式,使用一堆条件判断,会编程的人都可以做到,对简单小巧的状态机来说最合适,但是毫无疑问,这样的方式比较原始,当状态机中的状态和转移数量比较大时,系统中的状态机将变得难以维护。
鉴于此,如何找到一种高效简洁的状态机管理方法及系统成为了本领域技术人员亟待解决的问题。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种状态机管理方法及系统,用于解决现有技术中状态机管理上存在的问题。
为实现上述目的及其他相关目的,本发明提供一种状态机管理方法,所述状态机管理方法包括:根据状态机中的状态设置状态数组,每个状态对应状态数组中的一个状态数组元素,所述状态数组的字段包括:状态动作、转移数量以及转移事件数组,所述转移事件数组包括所述转移数量个元素;所述转移事件数组的字段包括:转移事件以及转移状态;预设状态机的当前状态;状态检测时,依次检测当前状态所对应的状态数组元素中的每一个所述转移事件数组元素:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,中断所述状态检测。
可选地,所述状态检测包括定时状态检测。
可选地,所述状态机管理方法还包括:当状态机的状态发生改变时,相应的更改所述状态数组中对应的状态数组元素,所述更改包括对所述状态数组元素的删除、增加、修改中的任一种。
可选地,对所述状态数组元素的修改包括对所述状态数组元素的转移事件数组元素的删除、增加、修改中的任一种,当对所述状态数组元素的转移事件数组元素的删除或者增加时,相应的修改所述状态数组元素的转移数量。
可选地,所述状态机管理方法还包括:执行当前状态所对应的状态数组元素中的状态动作。
可选地,所述状态机管理方法还包括:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,同时设置当前状态修改标志为真,当所述当前状态修改标志为真时,执行当前状态所对应的状态数组元素中的状态动作。
本发明还提供一种状态机管理系统,所述状态机管理系统包括:状态机初始模块,用于初始化状态机,包括:根据状态机中的状态设置状态数组,每个状态对应状态数组中的一个状态数组元素,所述状态数组的字段包括:状态动作、转移数量以及转移事件数组,所述转移事件数组包括所述转移数量个元素;所述转移事件数组的字段包括:转移事件以及转移状态;预设状态机的当前状态;状态机管理模块,用于进行状态检测,所述状态检测包括:依次检测当前状态所对应的状态数组元素中的每一个所述转移事件数组元素:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,中断所述状态检测。
可选地,所述状态检测包括定时状态检测。
可选地,所述状态机管理系统还包括状态信息修改模块:用于当状态机的状态发生改变时,相应的更改所述状态数组中对应的状态数组元素,所述更改包括对所述状态数组元素的删除、增加、修改中的任一种。
可选地,对所述状态数组元素的修改包括对所述状态数组元素的转移事件数组元素的删除、增加、修改中的任一种,当对所述状态数组元素的转移事件数组元素的删除或者增加时,相应的修改所述状态数组元素的转移数量。
可选地,状态机管理模块还用于执行当前状态所对应的状态数组元素中的状态动作。
可选地,状态机管理模块还用于:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,同时设置当前状态修改标志为真,当所述当前状态修改标志为真时,执行当前状态所对应的状态数组元素中的状态动作。
如上所述,本发明的一种状态机管理方法及系统,具有以下有益效果:改进现有的技术中的缺点,提高状态机管理的效率,同时能让开发者更加灵活的根据需要对状态进行修改,具有很高的健壮性。该技术方案尤其适用于嵌入式设备的开发中。
附图说明
图1显示为本发明的状态机管理方法的一实施例的流程示意图。
图2显示为本发明的状态机管理方法的一实施例的流程示意图。
图3显示为本发明的状态机管理系统的一实施例的模块示意图。
图4显示为本发明的状态机管理系统的一实施例的模块示意图。
元件标号说明
1 状态机管理系统
11 状态机初始模块
12 状态机管理模块
13 状态信息修改模块
S1~S3 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明提供一种状态机管理方法。该状态机管理方法特别适用于嵌入式设备中。在一个实施例中,如图1所示,所述状态机管理方法包括:
步骤S1,根据状态机中的状态设置状态数组,每个状态对应状态数组中的一个状态数组元素,所述状态数组的字段包括:状态动作、转移数量以及转移事件数组,所述转移事件数组包括所述转移数量个元素;所述转移事件数组的字段包括:转移事件以及转移状态;预设状态机的当前状态。
在一个实施例中,所述状态数组的字段结构的伪代码如下:
其中,embeddedFsmeTransition为转移事件结构,其具体的字段结构的伪代码如下:
在状态机初始化时,根据状态机中包括的状态设置状态数组元素,根据每一个状态分别设置相应的状态数组元素的字段值。同时,设置初始状态,即最初的状态机的当前状态。
步骤S2,状态检测时,依次检测当前状态所对应的状态数组元素中的每一个所述转移事件数组元素:当所述转移事件元素的转移事件为真(true)时,设置当前状态为所述转移事件元素的转移状态,中断所述状态检测。在一个实施例中,所述状态检测包括定时状态检测或者依照某种预设条件触发状态检测。
在一个实施例中,采用一个结构体来对状态进行管理,这个结构体用于描述运行在的状态机里面的一个状态实例,它包含描述这个状态机是否运行的标志,描述有限状态机的状态改变的标志,这个有限状态机的状态的数量以及状态数组(一个状态对应着一个状态数组元素,共有状态的数量个有效状态数组元素),以及当前状态对应的转移数量和转移事件数组。其具体的结构体的伪代码如下所示:
一个有限状态机是由一套embeddedFsmeTransition表(数组)它包含从每一个状态的转移的信息,和embeddedFsmeState表(数组)它包含有限状态机的所有状态以及每一个状态对应的转移数据的索引。以及embeddedFsmeInstance全局变量,这个变量用于包含所有的数据以及所有的索引,有限状态的核心函数就是用这个全局变量来运行的。核心函数用于有限状态机的状态的更新。核心函数的伪代码描述如下:
这个伪代码函数主要是轮询当前状态对应的转移表(数组)和检查转移事件的发生,如果事件触发,这个有限状态机的的状态就根据状态表(数组)来更新,一旦事件触发,这个函数功能就结束。
有限状态机的主要运行函数如下:
在一个实施例中,如图2所示,所述状态机管理方法还包括:
步骤S3,执行当前状态所对应的状态数组元素中的状态动作。在一个实施例中,所述状态机管理方法还包括:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,同时设置当前状态修改标志为真,当所述当前状态修改标志为真时,执行当前状态所对应的状态数组元素中的状态动作。
在一个实施例中,所述状态机管理方法还包括:当状态机的状态发生改变时,相应的更改所述状态数组中对应的状态数组元素,所述更改包括对所述状态数组元素的删除、增加、修改中的任一种。对所述状态数组元素的修改包括对所述状态数组元素的转移事件数组元素的删除、增加、修改中的任一种,当对所述状态数组元素的转移事件数组元素的删除或者增加时,相应的修改所述状态数组元素的转移数量。
本发明还提供一种状态机管理系统,所述状态机管理系统可以采用如上所述的状态机管理方法。在一个实施例中,如图3所示,所述状态机管理系统1包括状态机初始模块11以及状态机管理模块12。其中:
状态机初始模块11用于初始化状态机,包括:根据状态机中的状态设置状态数组,每个状态对应状态数组中的一个状态数组元素,所述状态数组的字段包括:状态动作、转移数量以及转移事件数组,所述转移事件数组包括所述转移数量个元素;所述转移事件数组的字段包括:转移事件以及转移状态;预设状态机的当前状态。
在一个实施例中,所述状态数组的字段结构的伪代码如下:
其中,embeddedFsmeTransition为转移事件结构,其具体的字段结构的伪代码如下:
在状态机初始模块11中,根据状态机中包括的状态设置状态数组元素,根据每一个状态分别设置相应的状态数组元素的字段值。同时,设置初始状态,即最初的状态机的当前状态。
状态机管理模块12与状态机初始模块11相连,用于进行状态检测,所述状态检测包括:依次检测当前状态所对应的状态数组元素中的每一个所述转移事件数组元素:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,中断所述状态检测。所述状态检测包括定时状态检测或者依照某种预设条件触发状态检测。
在一个实施例中,状态机管理模块12采用一个结构体来对状态进行管理,这个结构体用于描述运行在的状态机里面的一个状态实例,它包含描述这个状态机是否运行的标志,描述有限状态机的状态改变的标志,这个有限状态机的状态的数量以及状态数组(一个状态对应着一个状态数组元素,共有状态的数量个有效状态数组元素),以及当前状态对应的转移数量和转移事件数组。其具体的结构体的伪代码如下所示:
一个有限状态机是由一套embeddedFsmeTransition表(数组)它包含从每一个状态的转移的信息,和embeddedFsmeState表(数组)它包含有限状态机的所有状态以及每一个状态对应的转移数据的索引。以及embeddedFsmeInstance全局变量,这个变量用于包含所有的数据以及所有的索引,有限状态的核心函数就是用这个全局变量来运行的。核心函数用于有限状态机的状态的更新。核心函数的伪代码描述如下:
这个伪代码函数主要是轮询当前状态对应的转移表(数组)和检查转移事件的发生,如果事件触发,这个有限状态机的的状态就根据状态表(数组)来更新,一旦事件触发,这个函数功能就结束。
状态机管理模块12还用于执行当前状态所对应的状态数组元素中的状态动作。状态机管理模块12的主要运行函数的伪代码描述如下:
在一个实施例中,状态机管理模块12还用于:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,同时设置当前状态修改标志为真,当所述当前状态修改标志为真时,执行当前状态所对应的状态数组元素中的状态动作。
在一个实施例中,如图4所示,所述状态机管理系统1还包括状态信息修改模块13,状态信息修改模块13与所述状态机管理模块12相连,用于当状态机的状态发生改变时,相应的更改所述状态数组中对应的状态数组元素,所述更改包括对所述状态数组元素的删除、增加、修改中的任一种。具体地,对所述状态数组元素的修改还包括对所述状态数组元素的转移事件数组元素的删除、增加、修改中的任一种,当对所述状态数组元素的转移事件数组元素的删除或者增加时,相应的修改所述状态数组元素的转移数量。
综上所述,本发明的一种状态机管理方法及系统能够改进现有的技术中的缺点,提高状态机管理的效率,同时能让开发者更加灵活的根据需要对状态进行修改,具有很高的健壮性。该技术方案尤其适用于嵌入式设备的开发中。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种状态机管理方法,其特征在于,所述状态机管理方法包括:
根据状态机中的状态设置状态数组,每个状态对应状态数组中的一个状态数组元素,所述状态数组的字段包括:状态动作、转移数量以及转移事件数组,所述转移事件数组包括所述转移数量个元素;所述转移事件数组的字段包括:转移事件以及转移状态;预设状态机的当前状态;
状态检测时,依次检测当前状态所对应的状态数组元素中的每一个所述转移事件数组元素:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,中断所述状态检测。
2.根据权利要求1所述的状态机管理方法,其特征在于:所述状态机管理方法还包括:当状态机的状态发生改变时,相应的更改所述状态数组中对应的状态数组元素,所述更改包括对所述状态数组元素的删除、增加、修改中的任一种。
3.根据权利要求2所述的状态机管理方法,其特征在于:对所述状态数组元素的修改包括对所述状态数组元素的转移事件数组元素的删除、增加、修改中的任一种,当对所述状态数组元素的转移事件数组元素的删除或者增加时,相应的修改所述状态数组元素的转移数量。
4.根据权利要求1所述的状态机管理方法,其特征在于:所述状态机管理方法还包括:执行当前状态所对应的状态数组元素中的状态动作。
5.根据权利要求1所述的状态机管理方法,其特征在于:所述状态机管理方法还包括:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,同时设置当前状态修改标志为真,当所述当前状态修改标志为真时,执行当前状态所对应的状态数组元素中的状态动作。
6.一种状态机管理系统,其特征在于:所述状态机管理系统包括:状态机初始模块,用于初始化状态机,包括:根据状态机中的状态设置状态数组,每个状态对应状态数组中的一个状态数组元素,所述状态数组的字段包括:状态动作、转移数量以及转移事件数组,所述转移事件数组包括所述转移数量个元素;所述转移事件数组的字段包括:转移事件以及转移状态;预设状态机的当前状态;状态机管理模块,用于进行状态检测,所述状态检测包括:依次检测当前状态所对应的状态数组元素中的每一个所述转移事件数组元素:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,中断所述状态检测。
7.根据权利要求6所述的状态机管理系统,其特征在于:所述状态机管理系统还包括状态信息修改模块:用于当状态机的状态发生改变时,相应的更改所述状态数组中对应的状态数组元素,所述更改包括对所述状态数组元素的删除、增加、修改中的任一种。
8.根据权利要求7所述的状态机管理系统,其特征在于:对所述状态数组元素的修改包括对所述状态数组元素的转移事件数组元素的删除、增加、修改中的任一种,当对所述状态数组元素的转移事件数组元素的删除或者增加时,相应的修改所述状态数组元素的转移数量。
9.根据权利要求6所述的状态机管理系统,其特征在于:状态机管理模块还用于执行当前状态所对应的状态数组元素中的状态动作。
10.根据权利要求6所述的状态机管理系统,其特征在于:状态机管理模块还用于:当所述转移事件元素的转移事件为真时,设置当前状态为所述转移事件元素的转移状态,同时设置当前状态修改标志为真,当所述当前状态修改标志为真时,执行当前状态所对应的状态数组元素中的状态动作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510349400.8A CN104881297A (zh) | 2015-06-19 | 2015-06-19 | 一种状态机管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510349400.8A CN104881297A (zh) | 2015-06-19 | 2015-06-19 | 一种状态机管理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104881297A true CN104881297A (zh) | 2015-09-02 |
Family
ID=53948804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510349400.8A Pending CN104881297A (zh) | 2015-06-19 | 2015-06-19 | 一种状态机管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104881297A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106125682A (zh) * | 2016-07-18 | 2016-11-16 | 北京七星华创电子股份有限公司 | 半导体设备工艺运行状态的管理及管理装置 |
CN108845844A (zh) * | 2018-05-30 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种状态转换方法及装置 |
TWI762810B (zh) * | 2019-08-28 | 2022-05-01 | 中華電信股份有限公司 | 網路資源供裝系統和網路資源供裝方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080215587A1 (en) * | 2002-08-14 | 2008-09-04 | Nippon Telegraph And Telephone Corporation | Object State Transfer Method, Object State Transfer Device, Object State Transfer Program, and Recording Medium for the Program |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
-
2015
- 2015-06-19 CN CN201510349400.8A patent/CN104881297A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080215587A1 (en) * | 2002-08-14 | 2008-09-04 | Nippon Telegraph And Telephone Corporation | Object State Transfer Method, Object State Transfer Device, Object State Transfer Program, and Recording Medium for the Program |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
Non-Patent Citations (1)
Title |
---|
CPPEXPLORE: "状态机实现", 《HTTP://WWW.360DOC.COM/CONTENT/11/1122/23/1671317_166627031.SHTML》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106125682A (zh) * | 2016-07-18 | 2016-11-16 | 北京七星华创电子股份有限公司 | 半导体设备工艺运行状态的管理及管理装置 |
CN106125682B (zh) * | 2016-07-18 | 2019-03-12 | 北京七星华创电子股份有限公司 | 半导体设备工艺运行状态的管理及管理装置 |
CN108845844A (zh) * | 2018-05-30 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种状态转换方法及装置 |
TWI762810B (zh) * | 2019-08-28 | 2022-05-01 | 中華電信股份有限公司 | 網路資源供裝系統和網路資源供裝方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2017206394B2 (en) | Method, system and device for testing and readable storage medium | |
EP2713254A1 (en) | Touch event reporting method, device and mobile terminal | |
CN104866225A (zh) | 一种具有触摸显示屏的电子设备及其控制方法 | |
CN104881297A (zh) | 一种状态机管理方法及系统 | |
Shalf et al. | The grid and future visualization system architectures | |
CN104063071A (zh) | 内容输入方法及装置 | |
CN109614539A (zh) | 数据抓取方法、装置及计算机可读存储介质 | |
CN103106022A (zh) | 触控面板的虚拟按键的设定与检测方法 | |
WO2013143407A1 (en) | Data processing, data collection | |
CN104299170B (zh) | 间歇性能源海量数据处理方法 | |
CN105138458A (zh) | 智能终端与电脑端结合录制自动化测试脚本的方法及系统 | |
CN109992432A (zh) | 一种基于消息队列的数据处理系统及方法 | |
CN110147314A (zh) | 测试方法、装置及计算机可读存储介质 | |
CN108920704A (zh) | 文件恢复方法、文件恢复装置及移动终端 | |
CN104462942A (zh) | 移动终端可信用户输入输出接口的检测方法及系统 | |
US20170060380A1 (en) | Electronic device with system optimization function and system optimization method thereof | |
CN107291614A (zh) | 文件异常检测方法和电子设备 | |
CN103870313A (zh) | 一种虚拟机任务调度方法及系统 | |
CN106406662A (zh) | 多开应用管理方法及系统 | |
CN102439569A (zh) | 一种查看设备的系统状态的方法及设备 | |
CN105955633A (zh) | 快速查看计算结果的方法、装置及智能终端 | |
CN105808055A (zh) | 一种桌面图标整理方法及智能终端 | |
CN105677209A (zh) | 文件夹显示方法及系统 | |
CN104868898A (zh) | 一种电子设备及信息处理方法 | |
CN104731633A (zh) | 一种Linux系统下多分区存储设备卸载失败后回滚方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150902 |
|
RJ01 | Rejection of invention patent application after publication |