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); }
public static void Init(IJournal journal, ISignalsFactory signals) { mLevelAlarmMin = signals.GetSignal("tank.level.alarm.min").Value; // Уровень в баке, авария mLevelWarnMin = signals.GetSignal("tank.level.warning.min").Value; // Уровень в баке, предупреждение mTempWarnMax = signals.GetSignal("tank.temperature.warning.max").Value; // Т в баке, предупреждение mTempAlarmMax = signals.GetSignal("tank.temperature.alarm.max").Value; // Т в баке, авария IsNormalState = true; mTankTemperature = new Sensor(SensorName.Tank(SignalName.Temperature), signals); mTankLevel = new Sensor(SensorName.Tank(SignalName.Level), signals) { OnUpdate = value => { if (value <= mLevelAlarmMin) { if (OnError != null) { OnError(SystemStateCodes.Alarm.TankLevelMin); } IsNormalState = false; return; } if (value > mLevelWarnMin) { return; } if (OnWarning != null) { OnWarning(SystemStateCodes.Warning.TankLevelMin); } // датчик температуры конструктивно выполнен в одном корпусе с датчиком уровня, но датчик уровня является приоритетным if (mTankTemperature.IsAvailable) { if (mTankTemperature.Value > mTempAlarmMax) { if (OnError != null) { OnError(SystemStateCodes.Alarm.TankTemperatureMin); } IsNormalState = false; return; } if (mTankTemperature.Value < mTempWarnMax) { return; } if (OnWarning != null) { OnWarning(SystemStateCodes.Warning.TankTemperatureMin); } } IsNormalState = true; } }; }