FSM状态机示例代码
时间: 2023-10-27 09:07:31 浏览: 109
下面是一个简单的FSM状态机示例代码(使用Python编写):
```python
class State:
def __init__(self, name):
self.name = name
def on_enter(self):
pass
def on_exit(self):
pass
def handle_event(self, event):
pass
class StateMachine:
def __init__(self, initial_state):
self.current_state = initial_state
def transition_to(self, new_state):
self.current_state.on_exit()
self.current_state = new_state
self.current_state.on_enter()
def handle_event(self, event):
self.current_state.handle_event(event)
# 示例状态
class IdleState(State):
def on_enter(self):
print("进入空闲状态")
def on_exit(self):
print("退出空闲状态")
def handle_event(self, event):
if event == "start":
print("开始任务")
return "running"
return self.name
class RunningState(State):
def on_enter(self):
print("进入运行状态")
def on_exit(self):
print("退出运行状态")
def handle_event(self, event):
if event == "stop":
print("停止任务")
return "idle"
return self.name
# 创建状态机并设置初始状态为IdleState
state_machine = StateMachine(IdleState())
# 处理事件
state_machine.handle_event("start") # 输出: 进入空闲状态
# 开始任务
state_machine.transition_to(RunningState()) # 输出: 退出空闲状态
# 进入运行状态
state_machine.handle_event("stop") # 输出: 停止任务
# 退出运行状态
# 进入空闲状态
```
以上示例代码展示了一个简单的状态机,其中包括两个状态,即"空闲"和"运行"。状态之间的切换由事件触发,例如"start"事件将从"空闲"状态切换到"运行"状态,"stop"事件将从"运行"状态切换回"空闲"状态。每个状态都有进入(on_enter)和退出(on_exit)方法,在切换到新状态时会调用这些方法。
阅读全文