Пример #1
0
 /// <summary>
 /// prüft ob der Zug-Typ und die Zug-Länge an diesem Signal zulässig ist
 /// </summary>
 /// <param name="PruefZug">der zu prüfende Zug</param>
 /// <returns>gibt true wenn der Zug am Signal zugelässig ist</returns>
 public bool ZugPruefung(Zug PruefZug)
 {
     if (_zugLaengeMax > 0)
     {
     }
     if (_zugTyp.Count != 0)
     {
         foreach (string x in _zugTyp)
         {
             if (!x.Equals(PruefZug.ZugTyp))
             {
                 return(false);
             }
         }
     }
     return(true);
 }
Пример #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            List <Zug> liste = new List <Zug>();
            Random     ran   = new Random();

            for (int i = 0; i < 100; i++)
            {
                Zug zug = new Zug()
                {
                    Nummer                  = $"ICE {i:0000}",
                    Laenge                  = ran.NextDouble() * 400,
                    AnzahlWagen             = ran.Next(1, 13),
                    Hoechstgeschwindingkeit = ran.Next(150, 300),
                    Wlan    = ran.Next() > int.MaxValue / 2,
                    Baujahr = DateTime.Now.AddYears(-30).AddDays(i * 94)
                };

                liste.Add(zug);
            }

            dataGridView1.DataSource = liste;
        }
Пример #3
0
 /// <summary>
 /// erstellt aus dem Formolar eine neue Liste
 /// </summary>
 private void zugListeNeu()
 {
     _zugListe.Clear();
     foreach (DataGridViewRow zeile in this.dataGridView1.Rows)
     {
         string[] elem = new string[10];
         elem[0] = "Zug";
         elem[1] = (string)zeile.Cells[0].Value; //ID
         elem[2] = (string)zeile.Cells[1].Value; //Signal
         elem[3] = (string)zeile.Cells[3].Value; //Lok
         elem[4] = (string)zeile.Cells[2].Value; //Typ
         elem[5] = (string)zeile.Cells[6].Value; //Geschwindigkeit
         elem[6] = (string)zeile.Cells[4].Value; //Bezeichnung
         elem[7] = "0";                          //Länge
         elem[8] = (string)zeile.Cells[7].Value; //Digitale Addresse
         elem[9] = (string)zeile.Cells[5].Value; //Ankunftszeit
         if (elem[1] != null)
         {
             Zug zug = new Zug(_pa, 0, AnzeigeTyp.Bedienen, elem);
         }
     }
     _pa.ZugDateiSpeichern();
 }
Пример #4
0
        internal Zug Read(Zug p)
        {
            if (p != null)
            {
                foreach (Zug item in p_List)
                {
                    if (((Convert.ToDateTime(item.Datum).ToShortDateString()) == (Convert.ToDateTime(p.Datum).ToShortDateString()))
                    && p.Maschine.Replace("S", "").Replace(" ", "") == item.Maschine.Replace("S","").Replace(" ","")
                    && item.D == p.D
                    )
                    {
                        return item;
                    }
                }

            }

            return null;
        }
Пример #5
0
        public CSV_Reader(string path)
        {
            this.path = path;
            using (TextFieldParser parser = new TextFieldParser(path))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(";");
                while (!parser.EndOfData)
                {
                    //Processing row
                    string[] fields = parser.ReadFields();

                    Zug p = new Zug();

                    try
                    {

                        //if (((DateTime.Parse(fields[0]).ToShortDateString()) == (Convert.ToDateTime(p.Produktionsdatum).ToShortDateString()))
                        //    && fields[1] == "WR"
                        //    && fields[2] == p.Charge
                        //    && fields[4] == p.Bundnummer
                        //    )
                        //{
                        p.Datum = DateTime.Parse(fields[0]);
                        //1 unwichtig
                        p.Maschine = fields[2];
                        p.Mattentyp = fields[3];
                        //4 Durchmesser
                        p.H1m = Convert.ToDouble(fields[5]);
                        p.H2m = Convert.ToDouble(fields[6]);
                        p.H3m = Convert.ToDouble(fields[7]);
                        //p.a4m = Convert.ToDouble(fields[9]);
                        //10 Mittelwert
                        p.H125 = Convert.ToDouble(fields[9]);
                        p.H225 = Convert.ToDouble(fields[10]);
                        p.H325 = Convert.ToDouble(fields[11]);
                        //p.a4_025 = Convert.ToDouble(fields[14]);
                        //15 Mittelwert
                        p.H175 = Convert.ToDouble(fields[13]);
                        p.H275 = Convert.ToDouble(fields[14]);
                        p.H375 = Convert.ToDouble(fields[15]);
                        //p.a4_075 = Convert.ToDouble(fields[19]);
                        //20 Mittelwert
                        p.c1 = Convert.ToDouble(fields[17]);
                        p.c2 = Convert.ToDouble(fields[18]);
                        p.c3 = Convert.ToDouble(fields[19]);
                        //p.c4 = Convert.ToDouble(fields[24]);
                        //25 Mittelwert
                        p.se1 = Convert.ToDouble(fields[21]);
                        p.se2 = Convert.ToDouble(fields[22]);
                        p.se3 = Convert.ToDouble(fields[23]);
                        //p.se4 = Convert.ToDouble(fields[29]);
                        //30 Summe
                        //p.Beta = Convert.ToDouble(fields[36]);
                        //p.Alpha = Convert.ToDouble(fields[37]);
                        p.fR = Convert.ToDouble(fields[32]);
                        //}
                        p_List.Add(p);

                    }
                    catch (Exception)
                    {
                    }
                }

            }
        }
Пример #6
0
        /// <summary>
        /// Umschalten eines Elementes
        /// </summary>
        /// <param name="elementName">Elementtyp</param>
        /// <param name="nr">ID des Elementes, welches geschaltet werden soll</param>
        /// <returns></returns>
        private bool ElementToggelnAusfuehren(string elementName, int nr)
        {
            AnlagenElement el = null;

            switch (elementName)
            {
            case "StartSignalGruppe":
                //StartSignalGruppe ssg = _zeichnenElemente.SsgElemente.Element(nr);
                //int signalId = ssg.FSAuswahl();
                //if (signalId != 0) {
                //	Signal sn = _zeichnenElemente.SignalElemente.Element(signalId);
                //	if (sn != null) {
                //		return FahrstrassenSignalSchalten(sn);
                //	}
                //	FahrstrassenSignalSchalten(signalId);
                //	//el = _zeichnenElemente.FahrstrassenElemente.Fahrstrasse(signalId);
                //	//FahrstrasseSchalten((FahrstrasseN)el, FahrstrassenSignalTyp.StartSignal);
                //	_zeichnenElemente.FSSAktualisieren();
                //	return true;
                //}
                return(false);

            case "FahrstrasseK":
                el = _zeichnenElemente.FahrstrassenKElemente.Element(nr);
                break;

            case "Servo":
                el = _zeichnenElemente.ServoElemente.Element(nr);
                break;

            case "Signal":
                el = _zeichnenElemente.SignalElemente.Element(nr);
                break;

            case "Gleis":
                //el = zeichnenElemente.GleisElemente.Element(nr);
                break;

            case "Schalter":
                el = _zeichnenElemente.SchalterElemente.Element(nr);
                break;

            case "FSS":
                el = _zeichnenElemente.FssElemente.Element(nr);
                break;

            case "Entkuppler":
                el = _zeichnenElemente.EntkupplerElemente.Element(nr);
                break;

            case "Weiche":
                el = _zeichnenElemente.WeicheElemente.Element(nr);
                break;

            case "FahrstrasseN_Ziel":
                el = _zeichnenElemente.FahrstrassenElemente.Fahrstrasse(nr);
                FahrstrasseN fs = (FahrstrasseN)el;
                FahrstrasseSchalten(fs, FahrstrassenSignalTyp.ZielSignal);

                if (fs.EndSignal.AutoStart)
                {
                    if (fs.IsAktiv)
                    {
                        try {
                            Zug zug = fs.StartSignal.Zug;
                            if (zug == null)                                      //suche nach startsignal
                            {
                                FahrstrasseN fsStart = (FahrstrasseN)el;

                                bool startFound;
                                do
                                {
                                    startFound = false;
                                    foreach (AnlagenElement x in _zeichnenElemente.FahrstrassenElemente.AktiveFahrstrassen)
                                    {
                                        if (((FahrstrasseN)x).EndSignal == fsStart.StartSignal)
                                        {
                                            fsStart    = (FahrstrasseN)x;
                                            startFound = true;
                                            break;
                                        }
                                    }
                                } while (startFound && fsStart.StartSignal.Zug == null);
                                //if (fsStart.StartSignal.Zug != null) {
                                zug = fsStart.StartSignal.Zug;
                                //}
                            }
                            if (zug != null)
                            {
                                fs.EndSignal.ZugNr = zug.ID;
                            }
                            List <AnlagenElement> fsListe = FahrstrassenSignalSchalten(fs.EndSignal, true);
                            fs.EndSignal.ZugNr = 0;
                            if (fsListe != null && fsListe.Count > 0)
                            {
                                FahrstrasseN autostartFs = null;
                                foreach (AnlagenElement x in fsListe)
                                {
                                    if (((FahrstrasseN)x).EndSignal.ZugTypString != string.Empty)
                                    {
                                        autostartFs = (FahrstrasseN)x;
                                        break;
                                    }
                                }
                                if (autostartFs == null)
                                {
                                    autostartFs = (FahrstrasseN)fsListe[0];
                                }
                                FahrstrasseSchalten(autostartFs, FahrstrassenSignalTyp.ZielSignal);
                            }
                        }
                        catch (Exception e) {
                        }
                    }
                }
                try {
                    _zeichnenElemente.FSSAktualisieren();
                }
                catch (Exception e) {
                }
                return(true);

            case "FahrstrasseN_Start":
                el = _zeichnenElemente.FahrstrassenElemente.Fahrstrasse(nr);

                FahrstrasseSchalten((FahrstrasseN)el, FahrstrassenSignalTyp.StartSignal);
                _zeichnenElemente.FSSAktualisieren();
                return(true);
            }

            if (el != null)
            {
                bool action = el.AusgangToggeln();
                //if (elementName == "FSS")
                _zeichnenElemente.FSSAktualisieren();
                if (elementName == "Entkuppler")
                {
                    if (el.ElementZustand == Elementzustand.An && EntkupplerAbschaltAutoAktiv)
                    {
                        Thread entkupplerAbschalt = new Thread(this.EntkupplerAbschaltung);
                        entkupplerAbschalt.Start(el);
                    }
                }
                //if (action && _ardController.IsPortOpen())
                //	OnAnlagenzustandChanged(null);
                return(action);
            }

            return(false);
        }