ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
13 ноября
1083234 Топик полностью
Cкpипaч, пророк (04.03.2021 21:38 - 21:59, просмотров: 636) ответил IBAH на Ошибка - "действия, выполняемые при попадании в состояние (один раз)", эти действия надо делать в предыдущем состоянии. Когда пишу КА, представляю что пишу на Бейсике, только вместо номера строки состояние автомата. Вот пример светофора:
Мой вариант (прототридс + goto) 
char Svetofor(void){ 
  static uint8_t T; 
  static struct pt proc_rec;

  struct pt *pt = &proc_rec; 
  PT_BEGIN(pt); 

LIGHT_RED: 
  SetLight(Red); 
  T = SystemTime; 
  PT_WAIT_WHILE(pt, T - SystemTime < 30); 
  goto LIGHT_YELLOW; 

LIGHT_YELLOW: 
  SetLight(Yellow); 
  T = SystemTime; 
  PT_WAIT_WHILE(pt, T - SystemTime < 30); 
  goto LIGHT_GREEN; 

LIGHT_GREEN: 
  SetLight(Green); 
  T = SystemTime; 
  PT_WAIT_WHILE(pt, T - SystemTime < 30); 
  goto LIGHT_RED; 

  PT_END(pt); 
}
... но не любой ценой.