public static void Init(IJournal journal, ISignalsFactory signals) { mRelay = new Relay(journal, RelayName.Kv4, signals); mOnTimeout = signals.GetSignal("soundalarm.on.timeout"); mOnTimeout.OnUpdate += signal => { var rv = signal.ValueAsInt < 1500 ? 1500 : signal.ValueAsInt > 6000 ? 6000 : signal.ValueAsInt; journal.Debug(string.Format("Таймер вкл. сирены установлен в {0} мс", rv), MessageLevel.System); mTask.SetTimeout(rv); }; mOffTimeout = signals.GetSignal("soundalarm.off.timeout"); mOffTimeout.OnUpdate += signal => { var rv = signal.ValueAsInt < 2500 ? 2500 : signal.ValueAsInt > 10000 ? 10000 : signal.ValueAsInt; journal.Debug(string.Format("Таймер выкл. сирены установлен в {0} мс", rv), MessageLevel.System); mUnlockInterval = rv; }; // values by default mTask = new DelayedTask(mOnTimeout.ValueAsInt); // 1500 mUnlockInterval = mOffTimeout.ValueAsInt; // 5000 mTask.OnTimeout += ProcessTimerEvent; }
public Relay(IJournal journal, RelayName name, ISignalsFactory signals) { mJournal = journal; mOutput = signals.GetSignal(SensorName.Relay(name)); // TODO: uncomment mFeedback = signals.GetSignal(SensorName.Relay(name, SignalName.Feedback)); if (mFeedback != null) { mFeedback.OnChange += FeedbackOnChange; } if (mOnTimeout == null) { mOnTimeout = signals.GetSignal("relay.feedback.on.timeout"); } if (mFeedback != null) { mOnTimeout.OnUpdate += signal => { var rv = signal.ValueAsInt < 1500 ? 1500 : signal.ValueAsInt > 6000 ? 6000 : signal.ValueAsInt; mJournal.Debug(string.Format("Таймер реле (ОС) установлен в {0} мс для {1}", rv, mOutput.Specification.Id), MessageLevel.System); mTask.SetTimeout(rv); }; } // задержка на контроль обратной связи по контактору по умолчанию mTask = new DelayedTask(mOnTimeout == null ? 3000 : mOnTimeout.ValueAsInt < 1500 ? 1500 : mOnTimeout.ValueAsInt > 6000 ? 6000 : mOnTimeout.ValueAsInt); mTask.OnTimeout += Checkout; }
/// <summary> /// Останавливаем насос и частотники /// </summary> /// <param name="timeout">Задержка перед отключением насоса</param> public static void Stop(ushort timeout = 0) { SoundAlarm.Off(); if (OnStop != null) { OnStop(mState); } mTaskPumpStop.SetTimeout(timeout); mTaskPumpStop.Start(); }
public static void Stop(ushort timeout = 0) { mTaskEngineStop.SetTimeout(timeout); mTaskEngineStop.Start(); }