private void UpdateButton_Fahrstr_GL3_links() { if (Gleis1_nach_links.GetGesetztStatus() || Gleis2_nach_links.GetGesetztStatus() || Gleis4_nach_links.GetGesetztStatus() || Gleis5_nach_links.GetGesetztStatus() || Gleis6_nach_links.GetGesetztStatus() || Block2_nach_Gleis1.GetGesetztStatus() || Block2_nach_Gleis2.GetGesetztStatus() || Block2_nach_Gleis3.GetGesetztStatus() || Block2_nach_Gleis4.GetGesetztStatus() || Block2_nach_Gleis5.GetGesetztStatus() || Block2_nach_Gleis6.GetGesetztStatus()) { Fahrstr_GL3_links.Enabled = false; Fahrstr_GL3_links.BackgroundImage = Properties.Resources.Fahrstrasse_links_deakt; int ListID = Signalliste.IndexOf(new Signal() { Name = "Signal_Ausfahrt_L3" }); if (ListID != -1) { if (Signalliste[ListID].Zustand != 0) { Signalliste[ListID].Schalten(0, z21Start); } } } else { Fahrstr_GL3_links.Enabled = true; Fahrstr_GL3_links.BackgroundImage = Properties.Resources.Fahrstrasse_links; } }
private void UpdateWeiche(int Adresse, int Status) { int index = Weichenliste.FindIndex(x => x.Adresse == Adresse); //Finde Weiche mit dieser Adresse if (index != -1) //Weiche gefunden in der Liste { Weichenliste[index].Schalten(Status); UpdateWeicheImGleisplan(Weichenliste[index]); } else { index = Signalliste.FindIndex(x => x.Adresse == Adresse); if (index != -1)//Signal gefunden in der 1. Adressen { if (!Signalliste[index].Letzte_Adresswahl) { Signalliste[index].MaskenSetzen(Status); UpdateSignalImGleisplan(Signalliste[index]); } } else { index = Signalliste.FindIndex(x => x.Adresse2 == Adresse); if (index != -1)//Signal gefunden in der 2. Adressen { if (Signalliste[index].Letzte_Adresswahl) { Signalliste[index].MaskenSetzen(Status + 4); UpdateSignalImGleisplan(Signalliste[index]); } } } } }
private void GetSignalStatus(string Signalname) { int ListID = Signalliste.IndexOf(new Signal() { Name = Signalname }); //Weiche mit diesem Namen in der Liste suchen if (ListID == -1) { return; //Weiche nicht vorhanden, Funktion abbrechen } int Adresse = Signalliste[ListID].Adresse; //Adresse der Weiche übernehmen z21Start.Z21_GET_WEICHE(Adresse); //paket senden "GET Weiche" Adresse = Signalliste[ListID].Adresse2; //Adresse der Weiche übernehmen z21Start.Z21_GET_WEICHE(Adresse); //paket senden "GET Weiche" }
private void UpdateButton_Fahrstr_Block2_Einfahrt() { if (Gleis1_nach_links.GetGesetztStatus() || Gleis2_nach_links.GetGesetztStatus()) { Block2_Einfaht_GL1.Enabled = false; Block2_Einfaht_GL2.Enabled = false; } else { Block2_Einfaht_GL1.Enabled = true; Block2_Einfaht_GL2.Enabled = true; } if (Gleis3_nach_links.GetGesetztStatus() || Gleis4_nach_links.GetGesetztStatus() || Gleis5_nach_links.GetGesetztStatus() || Gleis6_nach_links.GetGesetztStatus()) { Block2_Einfahrt.Enabled = false; Block2_Einfahrt.BackgroundImage = Properties.Resources.Fahrstrasse_rechts_deakt; int ListID = Signalliste.IndexOf(new Signal() { Name = "Signal_Einfahrt_L" }); if (ListID != -1) { if (Signalliste[ListID].Zustand != 0) { Signalliste[ListID].Schalten(0, z21Start); } } } else { Block2_Einfahrt.Enabled = true; Block2_Einfahrt.BackgroundImage = Properties.Resources.Fahrstrasse_rechts; } }
public void SetupSignalListe() { XElement XMLFile = XElement.Load("Signalliste.xml"); //XML-Datei öffnen var list = XMLFile.Elements("Signal").ToList(); //Alle Elemente des Types Weiche in eine Liste Umwandeln foreach (XElement signal in list) //Alle Elemente der Liste einzeln durchlaufen { int SAdresse = Int16.Parse(signal.Element("Adresse").Value); //Signaladresse des Elements auslesen int SAdresse2; if (signal.Element("Adresse2") == null) { SAdresse2 = 0; //Nicht vorhanden - 2.Adresse 0 eintragen } else { SAdresse2 = Int16.Parse(signal.Element("Adresse2").Value); //2. Signaladresse des Elements auslesen } string SName = signal.Element("Name").Value; //Signal Name des Elements auslesen string STyp = signal.Element("Typ").Value; //Typ des Signals auslesen int SAdr11 = Int16.Parse(signal.Element("Adr1Zustand1").Value); //Zustand bei Signaladresse Schaltung auf 0 int SAdr12 = Int16.Parse(signal.Element("Adr1Zustand2").Value); //Zustand bei Signaladresse Schaltung auf 1 int SAdr21 = Int16.Parse(signal.Element("Adr2Zustand1").Value); //Zustand bei 2. Signaladresse Schaltung auf 0 int SAdr22 = Int16.Parse(signal.Element("Adr2Zustand2").Value); //Zustand bei 2. Signaladresse Schaltung auf 1 Signalliste.Add(new Signal() { Name = SName, Adresse = SAdresse, Adresse2 = SAdresse2, Typ = STyp, Adr1_1 = SAdr11, Adr1_2 = SAdr12, Adr2_1 = SAdr21, Adr2_2 = SAdr22 }); //Mit den Werten eine neue Weiche zur Fahrstr_Weichenliste hinzufügen } }