ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
13 ноября
1083470 Топик полностью
IBAH (05.03.2021 14:06, просмотров: 369) ответил Cкpипaч на Универсальных решений небывает.
Зачем убивать?! просто не вызывать. Мой подход: 

Каждый автомат содержит функции

1 Конструктор, вызывается до главного цикла, в конструкторе вызываются конструкторы вложенных автоматов

2 Методы управления, отправка сообщений автомату

3 Главный метод, вызывается в главном цикле, из него вызываются главные методы вложенных автоматов


Для примера, интерфейс автомата управления реверсивным контактором:

typedef struct
  {
  Timer_t       Tim1;//таймер переключения 1
  Timer_t       Tim2;//таймер переключения 2
  unsigned long ZadPerkl;//задержка переключения
  unsigned char Out1;//выходной порт 1
  unsigned char Out2;//выходной порт 2
  unsigned char In1;//входной порт 1
  unsigned char In2;//входной порт 2
  unsigned char raz1;//разрешения включения 1
  unsigned char raz2;//разрешения включения 2
  }
  ReversKontakt_t;

//Инициализация контактора
void ReversKontaktInit(ReversKontakt_t* s,unsigned long ZadPerkl);
//Включить контакт 1
void ReversKontaktOn1(ReversKontakt_t* s);
//Включить контакт 2
void ReversKontaktOn2(ReversKontakt_t* s);
//Выключить контакты
void ReversKontaktOff(ReversKontakt_t* s);
//Главный метод контактора
void ReversKontakt(ReversKontakt_t* s);