【发布时间】: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