1

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

想象一下,您正在为电梯建模。除了像移动、停止、door_open、door_close 这样的明显状态之外,我想知道如何模拟按钮按下(这是一个从 -2 到 39 的数字),因为拥有这么多事件是不可行的(每个按钮按下 42 个)。

4

2 回答 2

0

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

于 2016-04-04T18:31:06.117 回答
0

我想如果你设计一个有 42 个按钮的楼层选择,你可能不会将它们每个都映射到一个输入,而是制作一个矩阵(没有人会把 42 个按钮放在一起,对吗?)。然后,当然您不会将每一行建模为一列,而只建模两列,这样您就可以显示每一行列的顺序轮询。也许您今天也可以使用带有微芯片的“智能”按钮,该微芯片通过串行线路发送一些“我被按下”信息。或者你引入语音识别

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

于 2016-04-04T20:58:05.810 回答