科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道为Linux应用构造有限状态机方法(5)

为Linux应用构造有限状态机方法(5)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

有限自动机(Finite Automata Machine)是计算机科学的重要基石,它在软件开发领域内通常被称作有限状态机(Finite State Machine),是一种应用非常广泛的软件设计模式(Design Pattern)。

作者:shenhuo 来源:赛迪网 2007年9月13日

关键字: 有限状态机 操作系统 Linux

  • 评论
  • 分享微博
  • 分享邮件

要在FSME中添加这样一个转换,首先需要在界面左边的树形列表中选" "States"下的"Opened"项,然后按下键盘上的Insert键来添加一个新的转换,接着在右下角的"Name"文本框中输入转换的名字"closeDoor",在"Condition"文本框中输入"Close"表明触发该转换的条件是事件Close的产生,在"Target"下拉框中选择"Closed"项表明该转换发生后状态机将被切换到Closed状态,最后再单击"Apply"按钮,一个新的状态转换关系就定义好了,如图5所示。用同样的办法可以添加状态机所需要的所有转换。

图5 转换建模

3.2 生成状态机框架

使用FSME不仅能够进行可视化的状态机建模,更重要的是它还可以根据得到的模型自动生成用C++或者Python实现的状态机框架。首先在FSME界面左边的树形列表中选择"Root"项,然后在右下角的"Name"文本框中输入状态机的名字"DoorFSM",再从"Initial State"下拉列表中选择状态"Opened"作为状态机的初始化状态。

图6 设置初始属性

在将状态机模型保存为door.fsm文件之后,使用下面的命令可以生成包含有状态机定义的头文件:

  [xiaowp@linuxgam" code]$ fsmc door.fsm -d -o DoorFSM.

进一步还可以生成包含有状态机实现的框架代码:

  [xiaowp@linuxgam code]$ fsmc door.fsm -d -impl DoorFSM.h -o DoorFSM.cpp
  

如果想对生成的状态机进行验证,只需要再手工编写一段用于测试的代码就可以了:

  /* 
   * TestFSM.cpp
   * 测试生成的状态机框架
   */
  
  #include "DoorFSM.h"
  
  int main() 
  {
   DoorFSM door;
   door.A(DoorFSM::Close);
   door.A(DoorFSM::Lock);
   door.A(DoorFSM::Unlock);
   door.A(DoorFSM::Open);
  }
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章