Перейти к содержанию
    

Вкл/выкл устройство по разным событиям, алгоритм.

Добрый день, подскажите как правильно разрулить работу устройства по нескольким событиям (из разных модулей)

В общем задача такая есть устройство которое может включаться/выключаться по разным событиям

1) пользователь нажал кнопку в web (вкл/выкл)

2) Работа по расписанию (часы реального времени)

3) Защита (превышение параметра выкл, параметр в норме вкл)

4) Детектор сигнала (пропал сигнал выкл, появился сигнал вкл)

 

Как разрулить что бы не было не предвиденного включения т.е пользователь или расписание выключило устройство, а после того как отработала защита либо сработал детектор как заблокировать включение устройства?

 

Так же надо заблокировать сигнал включение из расписания если устройство выключил пользователь.

 

Текущая реализация такая, в каждом модулей сделал свой Callback на событие, а установка всех Callback функций в одном файле в котором производиться логика работы по событиям + запись в журнал.

 

Для разруливания событий думаю добавить в сообщение модуля включения приоритет, MsgDevice(MSG_OFF,1...4), и перед выполнением операции сохранять его, и при следующем включении анализировать сохраненное значение с новым.

 

Как ещё можно это разрулить ?

Изменено пользователем pokk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничего не понятно :( Можете сформулировать проблемную ситуацию по пунктам по порядку что сработало, что получили, что должно было получиться и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, pokk сказал:

Добрый день, подскажите как правильно разрулить работу устройства по нескольким событиям (из разных модулей)

Как ещё можно это разрулить ?

Совершенно стандартно

 можно сделать так, что каждый модуль на выходе выдаёт флаги своих  состояний, которые поступают на вход автомата состояний - fsm,  где они и и анализируются... автомат состояний пишется довольно легко..  приоритеты в нем точно так же легко задаются...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, MegaVolt said:

Ничего не понятно :( Можете сформулировать проблемную ситуацию по пунктам по порядку что сработало, что получили, что должно было получиться и т.д.

Пользователь выключил устройство,  потом убрал сигнал, и заново его подал, сработал детектор сигнала и включил устройство, а оно должно быть выключено. Такая же ситуация может произойти если  устройство выключилось по расписанию. 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 часов назад, pokk сказал:

Пользователь выключил устройство,  потом убрал сигнал, и заново его подал, сработал детектор сигнала и включил устройство, а оно должно быть выключено. Такая же ситуация может произойти если  устройство выключилось по расписанию. 

Ну значит при выключении устройства нужно выключать и детектор сигнала (выключать обработку с детектора.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да не, тут просто нужны, отдельно, флаг действия пользователя, и два переключателя, его и устройства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/22/2021 at 5:22 AM, pokk said:

Как ещё можно это разрулить ?

Нарисовать блок-схему. В которой показать, что от чего зависит и поведение в любой из ситуаций в зависимости от уже достигнутого состояния.

После чего обычно уже и спрашивать не нужно, все становится понятно. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 минут назад, Ruslan1 сказал:

Нарисовать блок-схему. В которой показать, что от чего зависит и поведение в любой из ситуаций в зависимости от уже достигнутого состояния.

:good2: Самый толковый совет.

А то похоже и сам ТС не понимает этого алгоритма. А уж посторонним, из такого невнятного описания, вообще ничего не понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...