【问题标题】:State duplication in FSMFSM中的状态重复
【发布时间】:2014-09-17 13:41:29
【问题描述】:

我正在尝试实现一个 FSM,它以下列方式处理按钮:

在待机模式下,它只是等待按钮被按下。

当它被按下时,它会进入 intButtonPress 状态,此时会启动一个 2 秒的计时器。如果超时,则表示该按钮被按住了 2 秒,并且下一个状态必须是 Action。如果按钮在超时之前被释放,状态会返回到待机状态,因为按钮没有保持足够长的时间。

在动作模式下,会执行一些动作,但可以通过按下按钮来中断。问题是我不能重用 intButtonPress 状态,因为它的超时转换会导致返回到 Action 状态,所以一个明显的解决方案是使用相同的状态,唯一的区别是它会导致 Standby 状态,但它很难看。

有没有更好的方法来处理这个问题?

FSM 在这里:http://i.imgur.com/m57yaMw.png(无法嵌入图片)

【问题讨论】:

    标签: button timer interrupt fsm


    【解决方案1】:

    回答我自己的问题 - 使用分层状态机:http://i.imgur.com/DzBApeY.png

    超级待机状态并不是严格需要的。

    【讨论】:

    • 您打算实际编写分层状态机的代码还是只是一个理论练习?
    • 是的,使用hsm-statechart,虽然我还没有使用它。
    猜你喜欢
    • 2012-10-11
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2013-08-28
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多