pokk 0 Posted December 22, 2021 (edited) · Report post Добрый день, подскажите как правильно разрулить работу устройства по нескольким событиям (из разных модулей) В общем задача такая есть устройство которое может включаться/выключаться по разным событиям 1) пользователь нажал кнопку в web (вкл/выкл) 2) Работа по расписанию (часы реального времени) 3) Защита (превышение параметра выкл, параметр в норме вкл) 4) Детектор сигнала (пропал сигнал выкл, появился сигнал вкл) Как разрулить что бы не было не предвиденного включения т.е пользователь или расписание выключило устройство, а после того как отработала защита либо сработал детектор как заблокировать включение устройства? Так же надо заблокировать сигнал включение из расписания если устройство выключил пользователь. Текущая реализация такая, в каждом модулей сделал свой Callback на событие, а установка всех Callback функций в одном файле в котором производиться логика работы по событиям + запись в журнал. Для разруливания событий думаю добавить в сообщение модуля включения приоритет, MsgDevice(MSG_OFF,1...4), и перед выполнением операции сохранять его, и при следующем включении анализировать сохраненное значение с новым. Как ещё можно это разрулить ? Edited December 22, 2021 by pokk Quote Ответить с цитированием Share this post Link to post Share on other sites
MegaVolt 0 Posted December 22, 2021 · Report post Ничего не понятно :( Можете сформулировать проблемную ситуацию по пунктам по порядку что сработало, что получили, что должно было получиться и т.д. Quote Ответить с цитированием Share this post Link to post Share on other sites
iosifk 0 Posted December 22, 2021 · Report post 5 часов назад, pokk сказал: Добрый день, подскажите как правильно разрулить работу устройства по нескольким событиям (из разных модулей) Как ещё можно это разрулить ? Совершенно стандартно можно сделать так, что каждый модуль на выходе выдаёт флаги своих состояний, которые поступают на вход автомата состояний - fsm, где они и и анализируются... автомат состояний пишется довольно легко.. приоритеты в нем точно так же легко задаются... Quote Ответить с цитированием Share this post Link to post Share on other sites
pokk 0 Posted December 22, 2021 · Report post 3 hours ago, MegaVolt said: Ничего не понятно :( Можете сформулировать проблемную ситуацию по пунктам по порядку что сработало, что получили, что должно было получиться и т.д. Пользователь выключил устройство, потом убрал сигнал, и заново его подал, сработал детектор сигнала и включил устройство, а оно должно быть выключено. Такая же ситуация может произойти если устройство выключилось по расписанию. Quote Ответить с цитированием Share this post Link to post Share on other sites
MegaVolt 0 Posted December 23, 2021 · Report post 20 часов назад, pokk сказал: Пользователь выключил устройство, потом убрал сигнал, и заново его подал, сработал детектор сигнала и включил устройство, а оно должно быть выключено. Такая же ситуация может произойти если устройство выключилось по расписанию. Ну значит при выключении устройства нужно выключать и детектор сигнала (выключать обработку с детектора.) Quote Ответить с цитированием Share this post Link to post Share on other sites
Plain 0 Posted December 23, 2021 · Report post Да не, тут просто нужны, отдельно, флаг действия пользователя, и два переключателя, его и устройства. Quote Ответить с цитированием Share this post Link to post Share on other sites
Ruslan1 0 Posted December 23, 2021 · Report post On 12/22/2021 at 5:22 AM, pokk said: Как ещё можно это разрулить ? Нарисовать блок-схему. В которой показать, что от чего зависит и поведение в любой из ситуаций в зависимости от уже достигнутого состояния. После чего обычно уже и спрашивать не нужно, все становится понятно. :) Quote Ответить с цитированием Share this post Link to post Share on other sites
jcxz 0 Posted December 23, 2021 · Report post 37 минут назад, Ruslan1 сказал: Нарисовать блок-схему. В которой показать, что от чего зависит и поведение в любой из ситуаций в зависимости от уже достигнутого состояния. Самый толковый совет. А то похоже и сам ТС не понимает этого алгоритма. А уж посторонним, из такого невнятного описания, вообще ничего не понятно. Quote Ответить с цитированием Share this post Link to post Share on other sites