2016-04-04 10 views
1

私はhttp://boost-experimental.github.io/msm-lite/tutorial/index.html(tagはmsm-liteのタグがないのでboost-msmですが、同様の質問が適用されます)で遊んでいます。多くの入力が可能な状態機械を設計する質問があります。ステートマシンは、値(階数など)を含むイベントをどのように処理しますか?

エレベーターのモデリングを想像してみてください。移動、停止、door_open、door_closedのような明白な状態の他に、多くのイベント(42のボタンが押されただけで)を実行することは不可能なので、ボタンを押してモデル化する方法(-2から39までの数字です)

+0

質問に対する回答が見つかった場合は、[承諾 it](http://meta.stackexchange.com/q/5234/179419)と投票してください。あなたの質問に対する満足のいく回答が見つからなかった場合は、 コメントを残してください。 –

答えて

0

トランジションにガード条件を使用できます。彼らは[currentFloor != requested floor]のように見えます。おそらく、より良い方法は、upper floor selectedlower floor selectedcurrent floor selectedのようなイベントをモデル化することです。それは42ボタンを3つのカテゴリに崩壊させます。

0

フロア選択を42個のボタンで設計すると、それぞれの入力を1つの入力にマッピングするのではなく、マトリックスを作成することになります(42個のボタンを重ねることはありませんか?もちろん、各行に列をモデル化するのではなく、2つのみをモデル化するので、各行列の順次ポーリングを表示できます。たぶん、今日の「インテリジェントな」ボタンを使うこともできます。マイクロチップでは、「私は押されました」という情報をシリアル回線に送ります。または、voice recognitionを紹介してください。

これらの例はあまり書かれていませんが、私はこの質問をあまりにも広すぎると考える傾向があります。

+0

単純な特定の質問を理解できないということは、それが広すぎるということを意味するものではありません。エレベータは、ステートマシンで何かをモデリングする際の一般的なセットアップの一例です。 – NoSenseEtAl

+0

賛辞をいただきありがとうございます。 –

関連する問題