private bool Ausfuehren_Loeschen() { switch (_elementTyp) { case ElementTyp.Gleis: Gleis gleis = (Gleis)_element; foreach (Signal el in gleis.Signale) { _anlagenElemente.SignalElemente.Löschen(el); } foreach (Entkuppler el in gleis.Entkuppler) { _anlagenElemente.EntkupplerElemente.Löschen(el); } if (gleis.Fss != null) { _anlagenElemente.FssElemente.Löschen(gleis.Fss); } if (gleis.Schalter != null) { _anlagenElemente.SchalterElemente.Löschen(gleis.Schalter); } _anlagenElemente.GleisElemente.Löschen(gleis); int index = gleis.StartKn.GetGleisAnschlussNr(gleis); gleis.StartKn.Gleise[index] = null; if (index < 2) { if (gleis.StartKn.Weichen[0] != null) { _anlagenElemente.WeicheElemente.Löschen(gleis.StartKn.Weichen[0]); gleis.StartKn.Weichen[0] = null; } } else { if (gleis.StartKn.Weichen[1] != null) { _anlagenElemente.WeicheElemente.Löschen(gleis.StartKn.Weichen[1]); gleis.StartKn.Weichen[1] = null; } } int count = 0; foreach (Gleis gl in gleis.StartKn.Gleise) { if (gl != null) { count++; } } if (count == 0) { _anlagenElemente.KnotenElemente.Löschen(gleis.StartKn); } index = gleis.EndKn.GetGleisAnschlussNr(gleis); gleis.EndKn.Gleise[index] = null; if (index < 2) { if (gleis.EndKn.Weichen[0] != null) { gleis.EndKn.Weichen[0] = null; _anlagenElemente.WeicheElemente.Löschen(gleis.EndKn.Weichen[0]); } } else { if (gleis.EndKn.Weichen[1] != null) { gleis.EndKn.Weichen[1] = null; _anlagenElemente.WeicheElemente.Löschen(gleis.EndKn.Weichen[1]); } } count = 0; foreach (Gleis gl in gleis.EndKn.Gleise) { if (gl != null) { count++; } } if (count == 0) { _anlagenElemente.KnotenElemente.Löschen(gleis.EndKn); } break; case ElementTyp.Signal: Signal sig = (Signal)_element; _anlagenElemente.SignalElemente.Löschen(sig); sig.AnschlussGleis.GleisElementAustragen(sig); break; case ElementTyp.Entkuppler: Entkuppler entkuppler = (Entkuppler)_element; _anlagenElemente.EntkupplerElemente.Löschen(entkuppler); entkuppler.AnschlussGleis.GleisElementAustragen(entkuppler); break; case ElementTyp.FSS: FSS fss = (FSS)_element; _anlagenElemente.FssElemente.Löschen(fss); fss.AnschlussGleis.GleisElementAustragen(fss); break; case ElementTyp.Schalter: Schalter schalter = (Schalter)_element; _anlagenElemente.SchalterElemente.Löschen(schalter); schalter.AnschlussGleis.GleisElementAustragen(schalter); break; case ElementTyp.InfoElement: InfoFenster infoFenster = (InfoFenster)_element; _anlagenElemente.InfoElemente.Löschen(infoFenster); infoFenster.AnschlussGleis.GleisElementAustragen(infoFenster); break; case ElementTyp.Knoten: break; } return(true); }
/// <summary> /// Liest ankommende Befehle vom ArduinoController und verarbeitet diese weiters /// </summary> /// <param name="sender"></param> /// <param name="a"></param> private void _ardController_BefehlReceived(object sender, BefehlEventArgs a) { byte[] befehl = a.Befehl; string befehlS = String.Empty; foreach (byte b in befehl) { befehlS += b + " "; } Debug.Print("Befehl von Arduino: " + befehlS); if (befehl.Length == 5) { Arduino arduino = this._zeichnenElemente.AnlagenZustand.GetArduino(befehl[0]); if (arduino != null) { switch (befehl[1]) { case 10: arduino.Rueckmeldung[0] = (ushort)(befehl[2] + befehl[3] * 256); break; case 11: arduino.Rueckmeldung[1] = (ushort)(befehl[2] + befehl[3] * 256); break; case 19: aktiveFSZielgleisPruefen(); OnArduinoRueckmeldungReceived(); //OnAnlageNeuZeichnen();//Todo: zeile entfernen oder auskommentieren break; case 40: arduino.Ausgaenge[0] = (ushort)(befehl[2] + befehl[3] * 256); OnArduinoRueckmeldungReceived(); break; case 41: arduino.Ausgaenge[1] = (ushort)(befehl[2] + befehl[3] * 256); OnArduinoRueckmeldungReceived(); break; case 42: arduino.Ausgaenge[2] = (ushort)(befehl[2] + befehl[3] * 256); OnArduinoRueckmeldungReceived(); break; case 49: AlleAusgaengeSenden(); break; case 99: InfoFenster sysZeit = this._zeichnenElemente.InfoElemente.Element(99); int zeit = befehl[2] + befehl[3] * 256; string txt = "Ard-Zeit: "; txt = txt + zeit + "_"; // Convert.ToString( zeit); try { if (sysZeit != null) { sysZeit.Text = txt; } } catch (Exception e) { Logging.Log.Schreibe(e.Message); } OnArduinoRueckmeldungReceived(); break; } if (befehl[1] > 99 && befehl[1] < 122) { int id = befehl[1] - 100; Haltestelle haltestelle = this._zeichnenElemente.HaltestellenElemente.Element(id); try { if (haltestelle != null) { haltestelle.InfoBefehl(befehl); } } catch (Exception e) { Logging.Log.Schreibe(e.Message); } OnArduinoRueckmeldungReceived(); } } } }