CN106502770B - 一种基于有限状态机的hmi状态迁移方法 - Google Patents
一种基于有限状态机的hmi状态迁移方法 Download PDFInfo
- Publication number
- CN106502770B CN106502770B CN201510559676.9A CN201510559676A CN106502770B CN 106502770 B CN106502770 B CN 106502770B CN 201510559676 A CN201510559676 A CN 201510559676A CN 106502770 B CN106502770 B CN 106502770B
- Authority
- CN
- China
- Prior art keywords
- state
- event
- processing
- transition
- trigger event
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于有限状态机的HMI状态迁移方法。有限状态机接收和分析判断触发事件,并根据触发事件的类型调用画面管理接口或进行状态转换。其能够把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表,并且为HMI开发者提供可视直观的状态迁移结构设计、逻辑关系自动检查、自动生成状态迁移树以及根据状态迁移结构设计自动生成状态迁移的代码框架,进而提高了嵌入式产品的开发效率。并且,采用本发明生成的代码具有程序层次分明、结构清晰、易读易懂和可移植性好的特点。
Description
技术领域
本发明涉及一种基于有限状态机的HMI状态迁移方法。
背景技术
嵌入式产品开发中,经常涉及到HMI状态迁移关系复杂、设计困难,代码编写工作量大、复杂的迁移关系靠人工编写代码容易出错等问题。
现有的嵌入式产品开发技术过于底层、工作重复,编辑FSM(有限状态机)的逻辑非常底层,而且机械性十足。我们常常会发现自己总是在构建相似的行为,而且这会花费我们大部分时间。用FSM实现任何设计都需要做大量工作,且存在编写代码容易出错等问题,进而造成生产效率低。
此问题亟需改变。
发明内容
本发明为了克服现有技术的不足,目的旨在提供一种基于有限状态机的HMI状态迁移方法,其能够提高嵌入式产品的开发效率。
为了解决上述的技术问题,本发明提出的基本技术方案为:
一种基于有限状态机的HMI状态迁移方法,尤其地,有限状态机接收和分析判断触发事件,并根据触发事件的类型调用画面管理接口或进行状态转换。
进一步,所述有限状态机接收和分析判断触发事件的步骤如下:
S1、启动有限状态机;
S2、有限状态机***接收触发事件;
S3、将触发事件***第一消息队列;
S4、有限状态机核心从第一消息队列中取出事件消息并分发到活动状态池中的活动状态中;
S5、活动状态根据状态矩阵表判断触发事件是否是自身的敏感事件,如果是则调用功能函数表的处理函数,并且根据需要调用画面管理接口或进行状态转换。
进一步,所述触发事件包括***事件、硬件按钮事件、用户自定义事件。
进一步,所述状态矩阵表和功能函数表是通过Excel模板自动生成的。
进一步,Excel模板包括所继承的父状态、代码生成的文件路径、状态继承关系、状态名称、初期处理状态、状态进入函数、状态退出函数、该状态所对应的所有需响应的事件定义、响应该事件的处理条件、该响应事件的前处理函数、该响应事件的后处理函数、该响应事件的存在的迁移后状态。
进一步,所述Excel模板设置四种自定义菜单,所述自定义菜单包括追加子状态菜单、状态继承关系结构树菜单、检查状态继承和拼写逻辑关系菜单、自动生成状态迁移矩阵代码菜单。
进一步,有限状态机启动时,HMI状态迁移主流程步骤如下:
S1、创建HMI有限状态机线程和第二消息队列;
S2、初始化迁移到HMI根状态;
S3、从第二消息队列中读取触发事件消息;
S4、如果未取得触发事件消息则返回S3步骤;
S5、如果读取到触发事件消息则分发触发事件;
S6、如果HMI结束则退出HMI有限状态机线程,否则返回S3步骤。
进一步,步骤S5中分发触发事件的处理流程步骤如下:
S1、从活动状态池中获取每个活动状态;
S2、判断当前触发事件是否是该活动状态的敏感事件:如果不是该状态的敏感事件,则执行步骤S6;如果是该状态的敏感事件,则执行步骤S3;
S3、执行前处理函数,则执行步骤S4;
S4、如果该状态的敏感事件涉及状态迁移,则执行状态迁移处理流程,并接下来执行步骤S5;如果该状态的敏感事件不涉及状态迁移,则执行步骤S6;
S5、状态迁移处理后,如果存在后处理函数,则执行后处理函数;如果不存在后处理函数,则直接跳过S5步骤,执行S6步骤;
S6、判断该状态是否是活动状态池的最后一个状态,如果不是,则返回步骤S1活动状态池中获取下一个活动状态;如果是,则执行步骤S7;
S7、结束处理流程。
进一步,所述状态迁移处理流程步骤如下:
S1、根据迁移前状态和迁移后状态并寻找两个状态的共同父状态;
S2、执行从迁移前状态到共通父状态路线上所有状态的退出处理函数;
S3、从活动状态池中删除迁移前状态
S4、执行从共同父状态到迁移后状态路线上所有状态的进入处理函数;
S5、判断迁移后状态是否存在初始化状态;
S6、如果存在初始化状态,则执行初始化状态的进入处理函数,把初始化状态作为迁移后状态,并返回步骤S5;
S7、如果迁移后状态不存在初始化状态,则在活动状态池中追加迁移后状态,结束处理流程。
本发明的有益效果是:本发明把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表,并且为HMI开发者提供可视直观的状态迁移结构设计、逻辑关系自动检查、自动生成状态迁移树以及根据状态迁移结构设计自动生成状态迁移的代码框架,进而提高了嵌入式产品的开发效率。并且,采用本发明生成的代码具有程序层次分明、结构清晰、易读易懂和可移植性好的特点。
附图说明
图1为本实施例有限状态机整体模块关系图。
图2为本实施例HMI状态迁移主流程图。
图3为本实施例事件分发处理流程图。
图4为本实施例状态迁移处理流程图。
图5为本实施例HMI状态迁移设计模板的示意图。
图6为本实施例HMI状态迁移设计模板自定义菜单的示意图。
具体实施方式
以下将结合附图1至6对本发明做进一步的说明,但不应以此来限制本发明的保护范围。为了方便说明并且理解本发明的技术方案,以下说明所使用的方位词均以附图所展示的方位为准。
本实施例的技术方案重新定义状态矩阵的结构元素,把有限状态机处理思想的核心逻辑关系提炼为共通的核心代码,把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表。
本实施例的HMI状态迁移方法通过有限状态机接收和分析判断触发事件,并根据触发事件的类型调用画面管理接口或进行状态转换。具体地,如图1所示,有限状态机接收和分析判断触发事件的步骤如下:
S1、启动有限状态机;
S2、有限状态机***接收触发事件;
S3、将触发事件***第一消息队列;
S4、有限状态机核心从第一消息队列中取出事件消息并分发到活动状态池中的活动状态中;
S5、活动状态根据状态矩阵表判断触发事件是否是自身的敏感事件,如果是则调用功能函数表的处理函数,并且根据需要调用画面管理接口或进行状态转换。
其中,触发事件包括***事件、硬件按钮事件、用户自定义事件。状态矩阵表和功能函数表是通过Excel模板自动生成的,如图5所示,Excel模板包括所继承的父状态、代码生成的文件路径、状态继承关系、状态名称、初期处理状态、状态进入函数、状态退出函数、该状态所对应的所有需响应的事件定义、响应该事件的处理条件、该响应事件的前处理函数、该响应事件的后处理函数、该响应事件的存在的迁移后状态。如图6所示,Excel模板设置四种自定义菜单,所述自定义菜单包括追加子状态菜单、状态继承关系结构树菜单、检查状态继承和拼写逻辑关系菜单、自动生成状态迁移矩阵代码菜单。用户创建追加子状态菜单时,选择父状态行,点击“追加子状态”菜单,自动增加子状态模板。用户创建状态继承关系结构树时,点击“显示状态关系树”菜单,显示状态继承关系结构树。用户创建检查状态继承及拼写逻辑关系,点击“检查状态逻辑”菜单,检查状态继承及拼写逻辑关系。用户创建自动生成状态迁移矩阵代码,点击“生成代码框架”菜单,根据填写的状态迁移矩阵模板自动生成状态迁移矩阵代码。
如图2所示,当有限状态机启动时,HMI状态迁移主流程步骤如下:
S1、创建HMI有限状态机线程和第二消息队列;
S2、初始化迁移到HMI根状态;
S3、从第二消息队列中读取触发事件消息;
S4、如果未取得触发事件消息则返回S3步骤;
S5、如果读取到触发事件消息则分发触发事件;
S6、如果HMI结束则退出HMI有限状态机线程,否则返回S3步骤。
如图3所示,其中,步骤S5中分发触发事件的处理流程步骤如下:
S1、从活动状态池中获取每个活动状态;
S2、判断当前触发事件是否是该活动状态的敏感事件:如果不是该状态的敏感事件,则执行步骤S6;如果是该状态的敏感事件,则执行步骤S3;
S3、执行前处理函数,则执行步骤S4;
S4、如果该状态的敏感事件涉及状态迁移,则执行状态迁移处理流程,并接下来执行步骤S5;如果该状态的敏感事件不涉及状态迁移,则执行步骤S6;
S5、状态迁移处理后,如果存在后处理函数,则执行后处理函数;如果不存在后处理函数,则直接跳过S5步骤,执行S6步骤;
S6、判断该状态是否是活动状态池的最后一个状态,如果不是,则返回步骤S1活动状态池中获取下一个活动状态;如果是,则执行步骤S7;
S7、结束处理流程。
如图4所示,其中,状态迁移处理流程步骤如下:
S1、根据迁移前状态和迁移后状态并寻找两个状态的共同父状态;
S2、执行从迁移前状态到共通父状态路线上所有状态的退出处理函数;
S3、从活动状态池中删除迁移前状态
S4、执行从共同父状态到迁移后状态路线上所有状态的进入处理函数;
S5、判断迁移后状态是否存在初始化状态;
S6、如果存在初始化状态,则执行初始化状态的进入处理函数,把初始化状态作为迁移后状态,并返回步骤S5;
S7、如果迁移后状态不存在初始化状态,则在活动状态池中追加迁移后状态,结束处理流程。
综上,本发明把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表,并且为HMI开发者提供可视直观的状态迁移结构设计、逻辑关系自动检查、自动生成状态迁移树以及根据状态迁移结构设计自动生成状态迁移的代码框架,进而提高了嵌入式产品的开发效率。并且,采用本发明生成的代码具有程序层次分明、结构清晰、易读易懂和可移植性好的特点。
根据上述说明书的揭示和教导,本发明所属领域的技术人员还可以对上述实施方式进行变更和修改。因此,本发明并不局限于上面揭示和描述的具体实施方式,对本发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
Claims (1)
1.一种基于有限状态机的HMI状态迁移方法,其特征在于:有限状态机接收和分析判断触发事件,并根据触发事件的类型调用画面管理接口或进行状态转换;
所述有限状态机接收和分析判断触发事件的步骤如下:
S1、启动有限状态机;
S2、有限状态机***接收触发事件;
S3、将触发事件***第一消息队列;
S4、有限状态机核心从第一消息队列中取出事件消息并分发到活动状态池中的活动状态中;
S5、活动状态根据状态矩阵表判断触发事件是否是自身的敏感事件,如果是则调用功能函数表的处理函数,并且根据需要调用画面管理接口或进行状态转换;所述触发事件包括***事件、硬件按钮事件、用户自定义事件;
所述状态矩阵表和功能函数表是通过Excel模板自动生成的;
Excel模板包括所继承的父状态、代码生成的文件路径、状态继承关系、状态名称、初期处理状态、状态进入函数、状态退出函数、状态所对应的所有需响应的事件定义、响应该事件的处理条件、该需响应的事件的前处理函数、该需响应的事件的后处理函数、该需响应的事件的存在的迁移后状态;
所述Excel模板设置四种自定义菜单,所述自定义菜单包括追加子状态菜单、状态继承关系结构树菜单、检查状态继承和拼写逻辑关系菜单、自动生成状态迁移矩阵代码菜单;用户创建追加子状态菜单时,选择父状态行,点击“追加子状态”菜单,自动增加子状态模板;用户创建状态继承关系结构树时,点击“显示状态关系树”菜单,显示状态继承关系结构树;用户创建检查状态继承和拼写逻辑关系时,点击“检查状态逻辑”菜单,检查状态继承及拼写逻辑关系;用户创建自动生成状态迁移矩阵代码时,点击“生成代码框架”菜单,根据填写的状态迁移矩阵模板自动生成状态迁移矩阵代码;
该方法重新定义状态矩阵的结构元素,把有限状态机处理思想的核心逻辑关系提炼为共通的核心代码,把复杂重复的状态矩阵继承关系、状态进入退出处理、状态迁移处理,通过填写Excel模板形式去自动生成状态矩阵表代码及处理功能函数表,并且提供可视直观的状态迁移结构设计、逻辑关系自动检查、自动生成状态迁移树以及根据状态迁移结构设计自动生成状态迁移的代码框架;
有限状态机启动时,HMI状态迁移主流程步骤如下:
S01、创建HMI有限状态机线程和第二消息队列;
S02、初始化迁移到HMI根状态;
S03、从第二消息队列中读取触发事件消息;
S04、如果未取得触发事件消息则返回S03步骤;
S05、如果读取到触发事件消息则分发触发事件;
S06、如果HMI结束则退出HMI有限状态机线程,否则返回S03步骤;
步骤S05中分发触发事件的处理流程步骤如下:
S001、从活动状态池中获取每个活动状态;
S002、判断当前触发事件是否是该活动状态的敏感事件:如果不是该状态的敏感事件,则执行步骤S006;如果是该状态的敏感事件,则执行步骤S003;
S003、执行前处理函数,接下执行步骤S004;
S004、如果该状态的敏感事件涉及状态迁移,则执行状态迁移处理流程,并接下来执行步骤S005;如果该状态的敏感事件不涉及状态迁移,则执行步骤S006;
S005、状态迁移处理后,如果存在后处理函数,则执行后处理函数;如果不存在后处理函数,则直接跳过S005步骤,执行S006步骤;
S006、判断该状态是否是活动状态池的最后一个状态,如果不是,则返回步骤S001活动状态池中获取下一个活动状态;如果是,则执行步骤S007;
S007、结束处理流程;
所述状态迁移处理流程步骤如下:
S0001、根据迁移前状态和迁移后状态并寻找两个状态的共同父状态;
S0002、执行从迁移前状态到共同 父状态路线上所有状态的退出处理函数;
S0003、从活动状态池中删除迁移前状态;
S0004、执行从共同父状态到迁移后状态路线上所有状态的进入处理函数;
S0005、判断迁移后状态是否存在初始化状态;
S0006、如果存在初始化状态,则执行初始化状态的进入处理函数,把初始化状态作为迁移后状态,并返回步骤S0005;
S0007、如果迁移后状态不存在初始化状态,则在活动状态池中追加迁移后状态,结束处理流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510559676.9A CN106502770B (zh) | 2015-09-07 | 2015-09-07 | 一种基于有限状态机的hmi状态迁移方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510559676.9A CN106502770B (zh) | 2015-09-07 | 2015-09-07 | 一种基于有限状态机的hmi状态迁移方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106502770A CN106502770A (zh) | 2017-03-15 |
CN106502770B true CN106502770B (zh) | 2021-09-21 |
Family
ID=58287838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510559676.9A Active CN106502770B (zh) | 2015-09-07 | 2015-09-07 | 一种基于有限状态机的hmi状态迁移方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106502770B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107317866B (zh) * | 2017-06-30 | 2020-07-14 | 昆明自动化成套集团股份有限公司 | 一种基于有限状态自动机架构的智能通讯服务器及其构建方法 |
CN109254763B (zh) * | 2018-09-13 | 2022-02-18 | 中核控制***工程有限公司 | 一种基于有限状态机的核电厂控制软件设计方法 |
CN111026467B (zh) * | 2019-12-06 | 2022-12-20 | 合肥科大智能机器人技术有限公司 | 一种有限状态机的控制方法及有限状态机 |
CN111427633A (zh) * | 2020-02-28 | 2020-07-17 | 惠州市德赛西威汽车电子股份有限公司 | 一种汽车音响状态机及其管理方法 |
CN112860354B (zh) * | 2021-01-29 | 2022-05-17 | 宝宝巴士股份有限公司 | 一种基于Laravel框架的状态机的建模方法及终端 |
CN113986814B (zh) * | 2021-10-15 | 2023-12-01 | 浙江大学 | 一种基于微处理器的状态机通用表示及执行方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993706B2 (en) * | 2002-01-15 | 2006-01-31 | International Business Machines Corporation | Method, apparatus, and program for a state machine framework |
CN102629227A (zh) * | 2012-02-28 | 2012-08-08 | 中科开元信息技术(北京)有限公司 | 一种辅助嵌入式***接口功能验证方法 |
CN103312552A (zh) * | 2012-03-12 | 2013-09-18 | 北京泰乐德信息技术有限公司 | 一种数据仿真方法、仿真机和通信*** |
CN104091092A (zh) * | 2014-07-29 | 2014-10-08 | 上海交通大学 | 大规模电力***小干扰稳定性的特征值分析*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8990768B2 (en) * | 2008-09-30 | 2015-03-24 | Rockwell Automation Technologies, Inc. | Software object property return method and system |
CN103942350A (zh) * | 2013-01-17 | 2014-07-23 | 中国空间技术研究院神舟学院 | 一种基于dsm和工作流的卫星设计数据传递方法 |
-
2015
- 2015-09-07 CN CN201510559676.9A patent/CN106502770B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993706B2 (en) * | 2002-01-15 | 2006-01-31 | International Business Machines Corporation | Method, apparatus, and program for a state machine framework |
CN102629227A (zh) * | 2012-02-28 | 2012-08-08 | 中科开元信息技术(北京)有限公司 | 一种辅助嵌入式***接口功能验证方法 |
CN103312552A (zh) * | 2012-03-12 | 2013-09-18 | 北京泰乐德信息技术有限公司 | 一种数据仿真方法、仿真机和通信*** |
CN104091092A (zh) * | 2014-07-29 | 2014-10-08 | 上海交通大学 | 大规模电力***小干扰稳定性的特征值分析*** |
Non-Patent Citations (3)
Title |
---|
下一代车载信息娱乐***用户界面应用程序框架设计与实现;周剑鸣;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120515;I138-203 * |
周剑鸣.下一代车载信息娱乐***用户界面应用程序框架设计与实现.《中国优秀硕士学位论文全文数据库 信息科技辑》.2012, * |
基于Excel的实时监控人机界面软件的开发与应用;黎藜等;《电子技术应用》;20090606;第50-53页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106502770A (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106502770B (zh) | 一种基于有限状态机的hmi状态迁移方法 | |
US20190392617A1 (en) | Visual workflow model | |
EP3011444B1 (en) | Method and apparatus for code virtualization and remote process call generation | |
US8200807B2 (en) | Non-blocking local events in a state-diagramming environment | |
CN109284184A (zh) | 一种基于容器化技术的分布式机器学习平台的搭建方法 | |
WO2018036342A1 (zh) | 基于csar的模型文件的可视化设计方法及装置 | |
Hamon et al. | Formal description of multi-touch interactions | |
US10459696B2 (en) | Composable action flows | |
CN115292026A (zh) | 容器集群的管理方法、装置、设备及计算机可读存储介质 | |
WO2020168901A1 (zh) | 一种数据计算方法及引擎 | |
CN113656001A (zh) | 平台组件开发方法、装置、计算机设备及存储介质 | |
US20230421489A1 (en) | Discovery and routing service for a cloud infrastructure | |
Bardaro et al. | Using AADL to model and develop ROS-based robotic application | |
CN113190427A (zh) | 卡顿监控方法、装置、电子设备及存储介质 | |
CN111125451B (zh) | 数据生产加工方法、装置、电子设备及存储介质 | |
US10970055B2 (en) | Identifying software and hardware bottlenecks | |
CN115576663A (zh) | 一种边缘控制器的动态部署方法、终端及存储介质 | |
CN111198899B (zh) | 应用程序中实体渲染的开发***及方法 | |
JP5657183B2 (ja) | 第1のコンピュータ・プログラムが第2のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするための方法および装置、第1のコンピュータ・プログラムと第2のコンピュータ・プログラムとのインターフェースをとるためのコンピュータ・プログラム・コードを生成するための方法および装置、コンピュータ・プログラム、ならびに第1のコンピュータ・プログラムが第2のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするためのソフトウェア・インターフェースを提供するための方法(コンピュータ・プログラム・インターフェース) | |
CN112860419A (zh) | 多实例任务的执行方法、装置、终端设备及计算机存储介质 | |
US20060195434A1 (en) | Multiple Invocation Style Integration Framework | |
CN113342413B (zh) | 用于处理组件的方法、装置、设备、介质和产品 | |
CN113590086B (zh) | 快速开发软件的方法、计算机设备、及存储介质 | |
US20230221954A1 (en) | Data model for a cloud application deployment service | |
US11163602B2 (en) | Migration from an asynchronous execution model to a synchronous execution model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |