public void learnValveManual(IValve valv) { object result = valv; if (result is string) { textBoxID.BackColor = Color.Red; textBoxID.Text = result as string; //toolStripStatusLabel1.Text += " [FAILED]"; } else { IValve valve = result as IValve; textBoxID.BackColor = Color.YellowGreen; textBoxID.Text = valve.ValveID.ToString("X8"); Heater.Valve = valve; //FormMain.calibration.openValve(valve); isTemp.Text = String.Format("{0:F1} °C", Heater.Valve.Temperature); isValue.Text = String.Format("{0} %", Heater.Valve.Value); //toolStripStatusLabel1.Text += " [OK]"; } buttonDelete.Enabled = true; buttonLearn.Enabled = true; HeaterPanelLearningEventHandler eventHandler = HeaterPanelLearning; if (eventHandler != null) { eventHandler(false); } }
public void Connect(IValve v) { Valve = v; if (v != null) { v.StateChanged += StateChanged; StateChanged(); } }
/// <summary> /// Adds a <see cref="IValve" /> to a <see cref="Valve" /> collection /// </summary> /// <param name="coll">the target <see cref="Valve" /> collection</param> /// <param name="valve">the <see cref="IValve" /> to add</param> /// <param name="settings">any settings that should be passed to the valve</param> public static void Add(this ICollection <Valve> coll, IValve valve, params Setting[] settings) { coll.Add( new Valve { Key = valve.Id, Settings = settings == null ? new List <Setting>() : settings.ToList() }); }
private void learnValveComplete(Object sender, RunWorkerCompletedEventArgs e) { object result = e.Result; if (result is string) { textBoxID.BackColor = Color.Red; textBoxID.Text = result as string; //toolStripStatusLabel1.Text += " [FAILED]"; } else { IValve valve = result as IValve; textBoxID.BackColor = Color.YellowGreen; textBoxID.Text = valve.ValveID.ToString("X8"); Heater.Valve = valve; Heater.Valve.DesiredValue = Convert.ToInt32(numericSoll.Value); //FormMain.calibration.openValve(valve); isTemp.Text = String.Format("{0:F1} °C", Heater.Valve.Temperature); isValue.Text = String.Format("{0} %", Heater.Valve.Value); //toolStripStatusLabel1.Text += " [OK]"; } buttonDelete.Enabled = true; buttonLearn.Enabled = true; HeaterPanelLearningEventHandler eventHandler = HeaterPanelLearning; if (eventHandler != null) { eventHandler(false); } }
private FormValveInfo(IValve valve) { InitializeComponent(); valve.PropertyChanged += new PropertyChangedEventHandler(valveChanged); this.valve = valve; showValues(); }
private void learnValve(object source, DoWorkEventArgs arguments) { string error = null; IValve valve = null; try { valve = Data.calibration.anlernen(120000); } catch (CalibrationException exception) { switch (exception.error) { case Error.NO_FREE_IDS: error = "Keine freien IDs vorhanden"; break; case Error.NO_LEARN_MESSAGE: error = "Kein Anlerntelegramm empfangen"; break; default: Console.WriteLine("Unknown exception: {0}", exception.error); error = "Unbekannter Fehler"; break; } arguments.Result = error; return; } arguments.Result = valve; }
public PressureController() { timer = new System.Timers.Timer(1000); // 1 sec timer timer.Elapsed += OnTimedEvent; timer.AutoReset = true; Vessel = new ReactorVessel(); fissionChamber = new FissionChamber(Vessel, this); pSensor = new PressureSensor(); pSensor.SetVessel(Vessel); valve = new Valve(this); valve.SetVessel(Vessel); valve.NotifyValveAction += OnValveActivation; }
internal static void close(IValve valve) { if (valve == null) { return; } if (!dictionary.ContainsKey(valve)) { return; } FormValveInfo formValveInfo = dictionary[valve]; formValveInfo.Close(); }
internal static FormValveInfo show(IValve valve) { FormValveInfo formValveInfo; if (dictionary.ContainsKey(valve)) { formValveInfo = dictionary[valve]; formValveInfo.BringToFront(); } else { formValveInfo = new FormValveInfo(valve); formValveInfo.Show(); dictionary.Add(valve, formValveInfo); } return(formValveInfo); }
public void addValve(IValve valve) { if (first == null) { first = valve; valve.setNext(basic); } else { IValve current = first; while (current != null) { if (current.GetNext() == basic) { current.setNext(valve); valve.setNext(basic); break; } current = current.GetNext(); } } }
private void valveChanged(object sender, PropertyChangedEventArgs args) { // Alles im try Block, da trotz des Entfernens des EventHandlers try { //Alles im GUI-Thread ausführen Invoke((MethodInvoker) delegate { IValve valve = sender as IValve; switch (args.PropertyName) { case "Value": textBoxValue.Text = String.Format("{0} %", valve.Value); break; case "Temperature": textBoxTemp.Text = String.Format("{0:F2} °C", valve.Temperature); break; case "Signal": textBoxSignal.Text = String.Format("-{0} dB", valve.Signal); break; case "Battery": checkBoxBattOK.Checked = valve.Battery; break; case "KommunikationOK": checkBoxCommunicationOK.Checked = valve.KommunikationOK; break; } }); } catch (Exception) { Console.WriteLine("Exception"); } }
internal static bool settingsValid(ref List <String> fehler) { if (fehler == null) { fehler = new List <string>(); } // Empfänger prüfen ... if (calibration == null) { fehler.Add(String.Format("Fehler {0:3} - Die Bibliothek FlowCalibration.dll wurde nicht geladen.", fehler.Count + 1)); } else if (!calibration.Initialized) { fehler.Add(String.Format("Fehler {0:000} - Der EnOcean-Empfänger wurde nicht initialisiert.", fehler.Count + 1)); } if (Rooms.Count == 0) { fehler.Add(String.Format("Fehler {0:000} - Es wurde kein Raum angelegt.", fehler.Count + 1)); } List <IValve> valves = new List <IValve>(); // Einstellungen der Ventile prüfen ... foreach (Room room in rooms) { if (room.Heaters.Count == 0) { fehler.Add(String.Format("Fehler {0:000} - Im Raum {1:000} wurde kein Heizkörper angelegt.", fehler.Count + 1, room.Name)); } foreach (Heater heater in room.Heaters) { ValveInfo valveInfo = heater.ValveInfo; if (valveInfo == null) { fehler.Add(String.Format("Fehler {0:000} - Dem Heizkörper {1:000} im Raum {2:000} wurde kein Ventil zugewiesen.", fehler.Count + 1, heater.ID + 1, room.Name)); } else { IValve valve = heater.Valve; if (valve == null) { fehler.Add(String.Format("Fehler {0:000} - Das Ventil am Heizkörper {1:000} im Raum {2:000} wurde nicht angelernt.", fehler.Count + 1, heater.ID + 1, room.Name)); } else { valves.Add(valve); if (!valve.Battery) { fehler.Add(String.Format("Fehler {0:000} - Die Ladung der Batterien des Ventils am Heizkörper {1:000} im Raum {2:000} ist unter 20 %.", fehler.Count + 1, heater.ID + 1, room.Name)); } if (!valve.KommunikationOK) { fehler.Add(String.Format("Fehler {0:000} - Die Kommunikation mit dem Ventil am Heizkörper {1:000} im Raum {2:000} ist unterbrochen.", fehler.Count + 1, heater.ID + 1, room.Name)); } if (valve.Signal > 85) { fehler.Add(String.Format("Fehler {0:000} - Die Signalstärke des Ventils am Heizkörper {1:000} im Raum {2:000} ist nicht ausreichend.", fehler.Count + 1, heater.ID + 1, room.Name)); } } } } } return(fehler.Count == 0); }
public ValveController() { this.Valves = new Valves(); }
public void setNext(IValve valve) { this.next = valve; }
public void setBasic(IValve valve) { basic = valve; }
public Heater(IValve valve) { this.Valve = valve; }
public ValveController(IValve Valves) { this.Valves = Valves; }
private void FormValveInfo_FormClosing(object sender, FormClosingEventArgs e) { valve.PropertyChanged -= new PropertyChangedEventHandler(valveChanged); dictionary.Remove(valve); valve = null; }
private void heaterPropertyChanged(object sender, PropertyChangedEventArgs e) { if (sender is IValve) { IValve valve = sender as IValve; switch (e.PropertyName) { // Die Voreinstellung wird von einem anderen Thread eingestellt, // deshalb muss hier mit BeginInvoke gearbeitet werden // Vielleicht von anderer Stelle aus erledigen case "Voreinstellung": this.BeginInvoke(((MethodInvoker) delegate { //textBoxVE.Text = String.Format("{0:0.0}", valve.Voreinstellung); })); break; case "KommunikationOK": case "Battery": case "Signal": this.BeginInvoke(((MethodInvoker) delegate { if (valve.Battery && valve.KommunikationOK && valve.Signal < 85) { textBoxID.BackColor = Color.YellowGreen; } else if (valve.Battery && valve.KommunikationOK) { textBoxID.BackColor = Color.Orange; } else { textBoxID.BackColor = Color.Red; } })); break; case "Value": this.BeginInvoke(((MethodInvoker) delegate { isValue.Text = String.Format("{0} %", valve.Value); })); break; case "Temperature": this.BeginInvoke(((MethodInvoker) delegate { isTemp.Text = String.Format("{0:F1} °C", valve.Temperature); })); break; case "Valve": this.BeginInvoke(((MethodInvoker) delegate { if (valve.Battery && valve.KommunikationOK && valve.Signal < 85) { textBoxID.BackColor = Color.YellowGreen; } else if (valve.Battery && valve.KommunikationOK) { textBoxID.BackColor = Color.Orange; } else { textBoxID.BackColor = Color.Red; } isValue.Text = String.Format("{0} %", valve.Value); isTemp.Text = String.Format("{0:F1} °C", valve.Temperature); })); break; case "DesiredValue": this.BeginInvoke(((MethodInvoker) delegate { numericSoll.Value = valve.DesiredValue; numericSoll.Text = String.Format("{0:F2}", valve.DesiredValue); })); break; case "True": numericSoll.ReadOnly = false; numericSoll.Increment = 1; break; case "False": numericSoll.ReadOnly = true; numericSoll.Increment = 0; break; } } else { switch (e.PropertyName) { case "ID": label1.Text = String.Format("{0}", Heater.ID + 1); break; case "DesiredVolumeFlow": //textBoxSoll.Text = String.Format("{0:0}", Heater.DesiredVolumeFlow); break; case "True": numericSoll.ReadOnly = false; numericSoll.Increment = 1; break; case "False": numericSoll.ReadOnly = true; numericSoll.Increment = 0; break; case "Valve": if (Heater.Valve == null) { if (formValveInfo != null) { formValveInfo.Close(); } buttonLearn.Enabled = true; textBoxID.Text = ""; textBoxID.BackColor = System.Drawing.SystemColors.Window; } break; } } }
/// <summary> /// Adds a valve to an <see cref="IConfigurable" /> with the given <see cref="Setting" />s /// </summary> /// <param name="configurable">the target <see cref="IConfigurable" /></param> /// <param name="valve">the valve to add</param> /// <param name="settings">the associated settings</param> public static void AddValve(this IConfigurable configurable, IValve valve, params Setting[] settings) { configurable.Valves.Add(valve, settings); }