嵌入式设备的有限状态机

时间:2011-07-18 04:28:41

标签: c++ embedded finite-automata state-machine

我使用FSM制作了几个菜单,但界面非常笨重。我花了一年的时间休息,从编程到促进搬迁,今晚重新写了我的旧FSM代码。

可以看到HERE

我的代码存在的问题是,每当您更改实现时,都需要对StateMachine类和事件处理器进行大量返工。由于这是在嵌入式设备上,我不能使用BOOST :: FSM所以我想编写自己的类,它足够强大,可以处理菜单和编程反对象(例如PIC的ICSP是一个简单的FSM)

你们怎么建议我让我的状态机更有用?

1 个答案:

答案 0 :(得分:1)

如果你正在编写自己的类 - 考虑实现一个通用的FSM,然后用状态和事件填充它。

基本上它是一个简单的界面,类似于这样的方法:

create();
addState(someState, stateFunction);
addEdge(someStateOrig, someStateDest, event);
processEvent(event);
start(startFromState);

那应该涵盖它。然后,当您创建FSM时 - 将其与状态一起提供,并在到达状态时执行函数,以及使FSM从一种状态移动到另一种状态的事件。

然后,您只需在某个状态启动FSM,这将成为启动状态,并提供事件。

如果您需要更改事件,函数或状态 - FSM实现保持不变,您可以更改使用它的代码。

这或多或少是Boost.FSM给你的,但是你说你不能使用它 - 所以自己动手: - )