Повышение МСМ - понятнее


Вопрос Newbi pleasee голые со мной, как я с этим борюсь.

Я хочу использовать boost msm state machine, но мне трудно представить, как это работает. Допустим, у нас есть только 2 состояния (s1, s2), и чтобы перейти из s1 в s2, вам нужно событие e1, которое будет запущено, а чтобы вернуться обратно, вам нужно еще одно e2. E1 и e2 могут быть выпущены только изнутри s1 и s2 соответственно.

Теперь в main () я начинаю с запуска statemachine (start ()), затем у меня есть цикл while, который будет проходить каждые 1 минуту вернемся к государственной машине, но придется забрать оттуда, откуда она ушла.то есть

main()
{
 MSM.start(); //start state machine

 while (a_condition)
 {
 ProcessInputsfromIO();
 Go_backtoStatemachine(); //how can i do this?
 delay(1min)
 }
 MSM.stop();
}

Таким образом, в основном, когда состояние завершает выполнение, statemachine выйдет, тогда у меня будет задержка в 1 минуту, тогда цикл while должен будет вернуть меня в состояние, в котором я был до выхода, или я думаю, что именно так мы должны реализовать state machine.

Является ли то, о чем я прошу, необычным? Если да, то как люди реализуют неблокирующую государственную машину? если нет, то как я могу реализовать Go_backtoStatemachine()?
1 2

1 ответ: