首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >状态机如何处理包含值(如楼层编号)的事件?

状态机如何处理包含值(如楼层编号)的事件?
EN

Stack Overflow用户
提问于 2016-04-05 02:12:47
回答 2查看 78关注 0票数 1

我正在使用http://boost-experimental.github.io/msm-lite/tutorial/index.html (标签用于boost-msm,因为没有用于msm-lite的标签,但类似的问题也适用),我有一个问题wrt设计具有许多可能的输入的状态机。

想象一下,你正在为电梯建模。除了像moving,stopped,door_open,door_closed这样明显的状态之外,我想知道如何建模按钮按下(这是一个从-2到39的数字),因为有那么多事件是不可行的(每按下一个按钮就有42个事件)。

EN

回答 2

Stack Overflow用户

发布于 2016-04-05 02:31:06

您可以在转换上使用保护条件。他们看起来像[currentFloor != requested floor]。也许更好的方法是对upper floor selectedlower floor selectedcurrent floor selected等事件进行建模。这就相当整齐地将42个按钮分成了三类。

票数 0
EN

Stack Overflow用户

发布于 2016-04-05 04:58:06

我猜,如果你设计一个有42个按钮的楼层选择,你可能不会把每个按钮都映射到一个单一的输入,而是形成一个矩阵(没有人会把42个按钮放在另一个按钮的上面,对吧?)当然,您不会将每一行都建模为一列,而是只建模两行,这样您就可以显示每行、每列的顺序轮询。也许你现在也可以使用带有微芯片的“智能”按钮,它可以通过串行线发送一些“我被按下了”的信息。或者你引入一个voice recognition

在列出了这几个例子之后,我倾向于以过于宽泛的方式来结束这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36409876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档