public static void Init(IJournal journal, ISignalsFactory signals) { mPressureAlarmMin = signals.GetSignal(string.Format("{0}.alarm.min", SensorName.Cabel(SignalName.Pressure))).Value; mPressureAlarmMax = signals.GetSignal(string.Format("{0}.alarm.max", SensorName.Cabel(SignalName.Pressure))).Value; mPressureWarningMax = signals.GetSignal(string.Format("{0}.warning.max", SensorName.Cabel(SignalName.Pressure))).Value; mStartTrackingTimeout = signals.GetSignal("pump.alarm.startup.timeout").Value; // датчик давления в системе рулевого и его обработка mCabelPressure = new Sensor(SensorName.Cabel(SignalName.Pressure), signals) { OnUpdate = value => { if (mStartAt == DateTime.MaxValue) { return; } if (DateTime.Now.Subtract(mStartAt).TotalSeconds < mStartTrackingTimeout) { return; } if (value > mPressureAlarmMax) { if (OnError != null) { OnError(SystemStateCodes.Alarm.CabelPressureMax); } return; } if (value < mPressureAlarmMin) { if (OnError != null) { OnError(SystemStateCodes.Alarm.CabelPressureMin); } return; } if (value > mPressureWarningMax) { return; } if (OnWarning != null) { OnWarning(SystemStateCodes.Warning.CabelPressureMax); } } }; }
private void ConfigureSensors() { mDataStore = DataStoreFactory.CreateDefaultDataStore(0, 0, 1200, 1200); mSensors = new List <Sensor> { new Sensor(SensorName.Filter(SignalName.Pressure), mSignals), new Sensor(SensorName.Steering(SignalName.Pressure), mSignals), new Sensor(SensorName.Cabel(SignalName.Pressure), mSignals), new Sensor(SensorName.Brake(SignalName.Pressure), mSignals), new Sensor(SensorName.Tank(SignalName.Level), mSignals), new Sensor(SensorName.Tank(SignalName.Temperature), mSignals) }; mKeyboard = mSignals.GetSignal(SensorName.Keyboard()); //mSignals.GetSignal(SensorName.Tank(SignalName.Level)).OnUpdate += signal => Console.WriteLine("Level: {0}", signal.Value); Keyboard.Init(mKeyboard); }