Python使用Transitions库实现有限状态机

2019-12-26  本文已影响0人  zzl灬

有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。一般来说,除了输入部分和输出部分外,有限状态机还含有一组具有“记忆”功能的寄存器,这些寄存器的功能是记忆有限状态机的内部状态,它们常被称为状态寄存器。在有限状态机中,状态寄存器的的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。其中,寄存器逻辑的功能是存储有限状态机的内部状态;而组合逻辑又可以分为次态逻辑和输出逻辑两部分,次态逻辑的功能是确定有限状态机的下一个状态,输出逻辑的功能是确定有限状态机的输出。

demo

# -*- coding: utf-8 -*-
from transitions import Machine
#先定义一个类
class Work(object):
    pass

model=Work()
#定义状态
states=['start','pause','stop']
#定义状态转移
transitions=[
    {'trigger':'start','source':['pause','start'],'dest':'start'},
    {'trigger':'pause','source':'start','dest':'pause'},
    {'trigger':'stop','source':['start','pause'],'dest':'stop'}
]
#初始化状态机
machine = Machine(model=model, states=states, transitions=transitions, initial='start')
#根据输入的命令转换状态
while True:
    print '当前状态:',model.state
    command = raw_input("请输入指令:")
    if command=='start':
        model.start()
        print '改变后状态:', model.state,'\n'
    elif command=='pause':
        model.pause()
        print '改变后状态:', model.state,'\n'
    elif command=='stop':
        model.stop()
        print '改变后状态:', model.state,'\n'
        break
    else:
        print "指令输入错误\n"

运行结果

图片.png
上一篇下一篇

猜你喜欢

热点阅读