ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 мая
1083415 Топик полностью
VLLV (05.03.2021 10:59, просмотров: 363) ответил IBAH на Ошибка - "действия, выполняемые при попадании в состояние (один раз)", эти действия надо делать в предыдущем состоянии. Когда пишу КА, представляю что пишу на Бейсике, только вместо номера строки состояние автомата. Вот пример светофора:
Это неудобно. Я искусственно генерирую событие при смене состояния, тогда обработка состояния выглядит так: 
...

if (state == WAITING)

{  switch (event)

   {   case evNEW: //  здесь действия при входе в состояние

              break;

      case evKEY:  // здесь действия при нажатии на кнопку

                state = STOP;

                break;

      case evTIMER: // здесь действия при сработке таймера

              break;

    }

    // здесь действия при каждом цикле

}





Но можно и без событий

    if (state-old_state)

         // делаем один раз