예제 #1
0
        private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            DataGridViewRow row = dataGridView1.CurrentRow;

            if (row != null)
            {
                int id = (int)row.Cells[0].Value;
                if (id != _ausgewählteFahrstrasse)
                {
                    _ausgewählteFahrstrasse = id;
                    foreach (FahrstrasseN el in _model.ZeichnenElemente.FahrstrassenElemente.AuswahlFahrstrassen)
                    {
                        el.Selektiert = false;
                    }
                    _model.ZeichnenElemente.FahrstrassenElemente.AuswahlFahrstrassen.Clear();
                    FahrstrasseN fahrstrasse = _model.ZeichnenElemente.FahrstrassenElemente.Fahrstrasse(_ausgewählteFahrstrasse);
                    if (fahrstrasse != null)
                    {
                        fahrstrasse.Selektiert = true;
                        _model.ZeichnenElemente.FahrstrassenElemente.AuswahlFahrstrassen.Add(fahrstrasse);
                        _model.OnAnlageNeuZeichnen();
                    }
                }
            }
            else
            {
            }
        }
예제 #2
0
        private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            int column = e.ColumnIndex;

            if (column > 2)
            {
                DataGridViewRow  row    = ((DataGridView)sender).Rows[e.RowIndex];
                DataGridViewCell idCell = row.Cells[0];
                int id = (int)idCell.Value;

                FahrstrasseN fs = null;
                foreach (FahrstrasseN el in _fahrstrassenAnzeige.Fahrstrassen)
                {
                    if (el.ID == id)
                    {
                        fs = el;
                        break;
                    }
                }

                if (fs != null)
                {
                    BefehlsListe bListe = null;
                    Form         frm    = null;
                    if (column == 3)
                    {
                        bListe = new BefehlsListe(_model.ZeichnenElemente, false, (string)row.Cells[3].Value);
                        frm    = new FrmBefehlsliste(bListe, "Start Befehle");
                    }
                    else if (column == 4)
                    {
                        bListe = new BefehlsListe(_model.ZeichnenElemente, false, (string)row.Cells[4].Value);
                        frm    = new FrmBefehlsliste(bListe, "End Befehle");
                    }

                    if (bListe != null && frm != null)
                    {
                        FahrstrasseK fskAlt = _model.ZeichnenElemente.FahrstrassenKElemente.Element(_ausgewählteKombiFahrstrasse);
                        if (fskAlt != null)
                        {
                            fskAlt.Selektiert = false;
                        }
                        //this.dataGridView2_SelectionChanged(this.dataGridView2, null);
                        _model.OnAnlageNeuZeichnen();
                        frm.ShowDialog();
                        string newValue = bListe.ListenString.Trim().Replace(";", "");
                        if (column == 3)
                        {
                            row.Cells[3].Value = newValue.Replace(" ", "; ");
                        }
                        else if (column == 4)
                        {
                            row.Cells[4].Value = newValue.Replace(" ", "; ");;
                        }
                    }
                }
            }
        }
예제 #3
0
        private void FahrstraßeStarten(object fahrstraße)
        {
            FahrstrasseN fs = (FahrstrasseN)fahrstraße;

            //Adresse adrStartGleis = fs.adrStartGleis;
            Thread.Sleep(this.FahrstraßenStartVerzögerung);
            if (/*adrStartGleis != null && */ fs.IsAktiv)
            {
                fs.StartGleisEinschalten();
                //adrStartGleis.IsLocked = true;

                this.OnAnlageNeuZeichnen();
                this.OnAnlagenzustandChanged(null);
            }
        }
예제 #4
0
        public bool FahrstrasseSchalten(FahrstrasseN el, FahrstrassenSignalTyp signal, bool verlaengern)
        {
            bool action = false;

            if (this.AppTyp == AppTyp.Master)
            {
                _model.ElementToggeln(
                    signal == FahrstrassenSignalTyp.StartSignal ? "FahrstrasseN_Start" : "FahrstrasseN_Ziel", el.ID
                    );
                //action = _model.FahrstrasseSchalten(el, signal);
                //if (master != null) {
                //	master.SendeAnlageZustandsDatenAnAlle(this._model.AnlagenZustandsDatenAuslesen());
                //}
            }
            if (this.AppTyp == AppTyp.Slave)
            {
                if (signal == FahrstrassenSignalTyp.ZielSignal)
                {
                    if (slave != null)
                    {
                        try {
                            slave.SlaveAnMasterMouseClick(el.GetType().Name + "_Ziel", el.ID);
                        }
                        catch (Exception e) {
                        }
                    }
                }
                else
                {
                    if (slave != null)
                    {
                        try {
                            slave.SlaveAnMasterMouseClick(el.GetType().Name + "_Start", el.ID);
                        }
                        catch (Exception e) {
                        }
                    }
                }
                return(true);
            }
            return(action);
        }
예제 #5
0
 public bool FahrstrasseSchalten(FahrstrasseN el, FahrstrassenSignalTyp signalTyp)
 {
     if (el != null)
     {
         bool verlaengern = el.StartSignal.IsLocked;
         if (!el.IsAktiv && !verlaengern)
         {
             Thread fahrstraßenStartThread = new Thread(this.FahrstraßeStarten);
             fahrstraßenStartThread.Start(el);
         }
         bool action = el.AusgangToggeln(signalTyp, verlaengern && !el.StartSignal.AutoStart);
         //if (action && _ardController.IsPortOpen())
         //	OnAnlagenzustandChanged(el.Ausgang);
         if (signalTyp == FahrstrassenSignalTyp.ZielSignal)
         {
             this.ZeichnenElemente.ZugDateiSpeichern();
             OnZugListeChanged();
         }
         return(action);
     }
     return(false);
 }
예제 #6
0
        private void fahrstraßenSpeichernToolStripMenuItem_Click(object sender, EventArgs e)
        {
            List <int> ids = new List <int>();

            foreach (DataRow row in _tabelle.Rows)
            {
                FahrstrasseN fs = null;
                int          id = (int)row[0];       //Convert.ToInt32(row[0]);
                ids.Add(id);

                foreach (FahrstrasseN el in _fahrstrassenAnzeige.Fahrstrassen)
                {
                    if (el.ID == id)
                    {
                        fs = el;
                        break;
                    }
                }

                fs.StartBefehleString = (string)row[3];
                fs.EndBefehleString   = (string)row[4];
            }

            for (int i = 0; i < _fahrstrassenAnzeige.Fahrstrassen.Count;)
            {
                if (ids.Contains(_fahrstrassenAnzeige.Fahrstrassen[i].ID))
                {
                    i++;
                }
                else
                {
                    _fahrstrassenAnzeige.Fahrstrassen.RemoveAt(i);
                }
            }

            List <int> kIds = new List <int>();

            foreach (DataRow row in _tabelleK.Rows)
            {
                FahrstrasseK fs = null;
                if ((string)row[3] == "")
                {
                    continue;
                }

                if (row[0].ToString() != "")
                {
                    int id = (int)row[0];                    //Convert.ToInt32(row[0]);
                    kIds.Add(id);

                    foreach (FahrstrasseK el in _fahrstrassenKAnzeige.Fahrstrassen)
                    {
                        if (el.ID == id)
                        {
                            fs = el;
                            break;
                        }
                    }
                    fs.FahrstrassenString = " FahrstrassenListe\t" + (string)row[3];
                    fs.BefehleString      = (string)row[4];
                }
                else
                {
                    int id = _model.ZeichnenElemente.FahrstrassenKElemente.SucheFreieNummer();
                    fs = new FahrstrasseK(
                        _model.ZeichnenElemente,
                        _model.ZeichnenElemente.Zoom,
                        MoBaSteuerung.Anlagenkomponenten.Enum.AnzeigeTyp.Bearbeiten,
                        new string[] { "", id.ToString() },
                        " FahrstrassenListe\t" + ((string)row[3]).Trim().Replace(";", "\t"),
                        " Befehle\t" + ((string)row[3]).Trim().Replace(";", "\t")
                        );
                    if (fs.StartSignal != null)
                    {
                        row[0] = id;
                        row[1] = fs.StartSignal.ID;
                        row[2] = fs.EndSignal.ID;

                        kIds.Add(id);
                    }
                }
            }

            for (int i = 0; i < _fahrstrassenKAnzeige.Fahrstrassen.Count;)
            {
                if (kIds.Contains(_fahrstrassenKAnzeige.Fahrstrassen[i].ID))
                {
                    i++;
                }
                else
                {
                    _fahrstrassenKAnzeige.Fahrstrassen.RemoveAt(i);
                }
            }
        }
예제 #7
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);
        }