一种条件触发表式有限状态机实现方法技术

技术编号:36499643 阅读:18 留言:0更新日期:2023-02-01 15:20
本发明专利技术公开了一种条件触发表式有限状态机实现方法,步骤为:S1:设计状态转换结构体用来记录状态转换;S2:定义状态转换表;S3:定义状态机当前状态;S4:根据当前具备的触发条件在S2中进行条件寻找匹配;S5:获取S4中返回的状态转换结构体类型变量中目的状态,将此值赋值到字符型指针变量,表示目的状态;S6:判断S5中态转换结构体类型变量中函数指针是否为空,空则不执行任何操作,不空则根据指针寻址运行此函数。本发明专利技术记录了当前状态、触发条件、切换后状态以及状态切换后的处理操作,对于复杂耦合的系统只需将上述几个状态切换的要素存放在状态转换表中,不需要对原有计算机控制系统做任何更改即可,控制逻辑清晰、节省软硬件资源。源。源。

【技术实现步骤摘要】
一种条件触发表式有限状态机实现方法


[0001]本专利技术属于计算机控制
,涉及一种条件触发表式有限状态机实现方法。

技术介绍

[0002]有限状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型,有限状态机在任何时候只能处于给定的状态中的一个。当接收到一个输入事件时,状态机产生一个输出,同时也可能伴随着状态的转移,并执行相应的功能动作。
[0003]有限状态机常用于在计算机控制系统中,通常把复杂的控制逻辑分解成有限个稳定状态,组成闭环系统,通过事件触发,让状态机按设定的顺序处理事务。
[0004]传统计算机控制领域使用有限状态机通常使用条件语句(switch

case或者if

else),通过改变输入状态,使得程序在不同的状态间进行跳转。对于复杂逻辑处理,通常有较多状态,且状态之间转换耦合性比较强,处理函数比较多,此时使用传统方法耗费更多软硬件资源。

技术实现思路

[0005](一)专利技术目的
[0006]本专利技术的目的是:提供一种条件触发表式有限状态机实现方法,实现多状态切换控制逻辑清晰、节省软硬件资源。
[0007](二)技术方案
[0008]为了解决上述技术问题,本专利技术提供一种条件触发表式有限状态机实现方法,其包括以下步骤:
[0009]S1:设计一个状态转换结构体StateTbl用来记录状态转换;
[0010]S2:定义状态转换表;
[0011]S3:定义状态机的当前状态CurState;
[0012]S4:根据当前具备的触发条件condition在S2中进行条件寻找匹配;
[0013]S5:获取S4中返回的状态转换结构体StateTbl类型变量trantemp中目的状态DstState,将此值赋值到字符型指针变量endState,表示目的状态;
[0014]S6:判断S5中态转换结构体StateTbl类型变量trantemp中函数指针exePtr是否为空,如果为空,则不执行任何操作,如果不为空,则根据指针寻址运行此函数。
[0015](三)有益效果
[0016]上述技术方案所提供的条件触发表式有限状态机实现方法,记录了当前状态、触发条件、切换后状态以及状态切换后的处理操作,对于复杂耦合的系统只需将上述几个状态切换的要素存放在状态转换表中,不需要对原有计算机控制系统做任何更改即可,且控制逻辑清晰、节省软硬件资源。
附图说明
[0017]图1为本专利技术实施例条件触发表式有限状态机实现方法的流程图。
具体实施方式
[0018]为使本专利技术的目的、内容和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。
[0019]如图1所示,本实施例条件触发表式有限状态机实现方法包括以下步骤:
[0020]S1:设计一个状态转换结构体StateTbl用来记录状态转换,结构体共包括四个成员,分别为

源状态SrcState,类型为无符号字符指针型,表示状态机跳转前状态。

目的状态DstState,类型为无符号字符指针型,表示状态机跳转后的状态。

源状态到目的状态的转换条件Cond,类型为枚举类型。

状态转换后需要执行函数的函数指针exePtr。
[0021]S2:定义状态转换表,此表中元素为S1中状态转换结构体StateTbl类型,表中元素个数为N,表示状态转换个数。
[0022]S3:定义状态机的当前状态CurState,此状态为全局变量。
[0023]S4:根据当前具备的触发条件condition在S2中进行条件寻找匹配
[0024]S4_1获取S3中记录的状态转换的当前状态CurState,转到S4_2
[0025]S4_2使用for循环,遍历S2中状态转换表中下标为i(i的初始值为0)的元素,判断i<N(N为状态转换表中元素个数),判断成功,转S4_3。判断失败则返回错误。接收此过程。
[0026]S4_3使用字符串比较函数strcpy对状态转换表中下标为i的元素中源状态SrcState的值和S4_1中获取到的当前状态CurState值进行比较,比较结果相同,则转到S4_4,比较结果不相同,则转到S4_2,此时i的值加一。
[0027]S4_4使用字符串比较函数strcpy对状态转换表中下标为i的元素中转换条件Cond和当前具备的触发条件conditon进行比较,如果比较结果相等,则将状态转换表中下标为i的元素进行返回并赋值到状态转换结构体StateTbl类型变量trantemp,并转到S5。如果比较结果不相等,则转到S4_2,此时i的值加一。
[0028]S5:获取S4中返回的状态转换结构体StateTbl类型变量trantemp中目的状态DstState,将此值赋值到字符型指针变量endState,表示目的状态
[0029]S5_1使用for循环,遍历S2中状态转换表中下标为i(i的初始值为0)的元素,判断i<N(N为状态转换表中元素个数),判断成功,转S5_2。判断失败则返回错误。接收此过程。
[0030]S5_2使用字符串比较函数strcpy对状态转换表中下标为i的元素中源状态SrcState的值和S5中目的状态endState值进行比较,比较结果相同,则转到S5_3,比较结果不相同,则转到S5_1,此时i的值加一。
[0031]S5_3将目的状态endState的值赋值到S3中当前状态机的状态CurState。
[0032]S6:判断S5中状态转换结构体StateTbl类型变量trantemp中函数指针exePtr是否为空,如果为空,则不执行任何操作,如果不为空则,根据指针寻址运行此函数。
[0033]以上所述仅是本专利技术的优选实施方式,应当指出,对于本
的普通技术人员来说,在不脱离本专利技术技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本专利技术的保护范围。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种条件触发表式有限状态机实现方法,其特征在于,包括以下步骤:S1:设计一个状态转换结构体StateTbl用来记录状态转换;S2:定义状态转换表;S3:定义状态机的当前状态CurState;S4:根据当前具备的触发条件condition在S2中进行条件寻找匹配;S5:获取S4中返回的状态转换结构体StateTbl类型变量trantemp中目的状态DstState,将此值赋值到字符型指针变量endState,表示目的状态;S6:判断S5中态转换结构体StateTbl类型变量trantemp中函数指针exePtr是否为空,如果为空,则不执行任何操作,如果不为空,则根据指针寻址运行此函数。2.如权利要求1所述的条件触发表式有限状态机实现方法,其特征在于,步骤S1中,状态转换结构体StateTbl共包括四个成员,分别为:

源状态SrcState,类型为无符号字符指针型,表示状态机跳转前状态;

目的状态DstState,类型为无符号字符指针型,表示状态机跳转后的状态;

源状态到目的状态的转换条件Cond,类型为枚举类型;

状态转换后需要执行函数的函数指针exePtr。3.如权利要求2所述的条件触发表式有限状态机实现方法,其特征在于,步骤S2中,状态转换表中元素为S1中状态转换结构体StateTbl类型,表中元素个数为N,表示状态转换个数。4.如权利要求3所述的条件触发表式有限状态机实现方法,其特征在于,步骤S3中,状态机的当前状态CurState为全局变量。5.如权利要求4所述的条件触发表式有限状态机实现方法,其特征在于,步骤S4包括以下子步骤:S4_1:获取S3中记录的状态转换的...

【专利技术属性】
技术研发人员:王雨龙
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1