重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
刚好前段时间写了一个简单协议的状态机,代码就不写了,说一下大概吧
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了高明免费建站欢迎大家使用!
1、确定一共有多少种状态,这里的状态有开和关,细分还有say thankyou 和警告
2、确定状态之间的迁移条件
如果按照四种状态:开、关、说谢谢、警告,那么这四种状态之前的迁移条件很明显了
分两个函数:1、检查是否需要迁移状态;2、迁移状态。
遍历各种状态检查是否有状态需要发生迁移。一般用一个switch将各种状态列出,然后在各种状态里面用if检查是否需要迁移状态,如果需要迁移,做好标记。
再次遍历各种状态,检查哪些状态做了标记,迁移到新状态,并做相应的操作,比如进入关的时候,做关门动作
刚才忘记说了,还有一个运转状态机函数,main函数在被触发的情况下调用运转函数,触发条件有:投币,人进入。
C语言中调用函数的方法及步骤:
工具/原料:C语言
1、首先需要输入想要调用的函数。
2、然后当输入一个括号后,即可观察他的参数。
3、接着在对应的参数中输入参数值。
4、然后,系统会发生一个警告。
5、接着需要调用它相应的头文件。
6、最后再次编译,发现没有任何警告和错误即可。
c语言写状态机之前:
1、确定一共有多少种状态,这里的状态有开和关,细分还有say thankyou 和警告
2、确定状态之间的迁移条件
如果按照四种状态:开、关、说谢谢、警告,那么这四种状态之前的迁移条件很明显了
分两个函数:
1、检查是否需要迁移状态;
2、迁移状态.
遍历各种状态检查是否有状态需要发生迁移.一般用一个switch将各种状态列出,然后在各种状态里面用if检查是否需要迁移状态,如果需要迁移,做好标记.
再次遍历各种状态,检查哪些状态做了标记,迁移到新状态,并做相应的操作,比如进入关的时候,做关门动作。
典型的状态机结构:
enum { state_A, state_B, state_C } state = state_A;
while(1)
{
switch ( state )
{
case state_A:
if ( event_A ) // 这里也可以用switch
{
action_1(); // 在某状态下发生某事件执行某个动作,并转入下个状态
state = state_B;
}
else if ( event_B )
{
}
else
{
}
break;
case state_B:
... ...
}
}