Beispiel #1
0
        public void Z21_GET_LOCO_INFO(int Adresse)
        {
            byte Header = 0xE3;
            byte DB0    = 0xF0;
            byte DB1    = LokFahrstufen.Addr_High(Adresse);
            byte DB2    = LokFahrstufen.Addr_Low(Adresse);
            byte XOR    = (byte)(Header ^ DB0 ^ DB1 ^ DB2);

            byte[] SendBytes = { 0x09, 0x00, 0x40, 0x00, Header, DB0, DB1, DB2, XOR };
            if (Connected)
            {
                Client.Send(SendBytes, 9);
            }
        }
Beispiel #2
0
        public void Z21_SET_LOCO_FUNCTION(int Adresse, byte Zustand, byte Funktion)
        {
            Zustand  = (byte)(Zustand & 0x3);
            Funktion = (byte)(Funktion & 0x3F);
            byte Header = 0xE4;
            byte DB0    = 0xF8;
            byte DB1    = LokFahrstufen.Addr_High(Adresse);
            byte DB2    = LokFahrstufen.Addr_Low(Adresse);
            byte DB3    = (byte)((Zustand << 6) + Funktion);
            byte XOR    = (byte)(Header ^ DB0 ^ DB1 ^ DB2 ^ DB3);

            byte[] SendBytes = { 0x0A, 0x00, 0x40, 0x00, Header, DB0, DB1, DB2, DB3, XOR };
            if (Connected)
            {
                Client.Send(SendBytes, 10);
            }
        }
Beispiel #3
0
        public void Z21_SET_LOCO_DRIVE(int Adresse, int Geschwindigkeit, int Richtung, int Fahrstufe)
        {
            int SendeFahrStufe = Fahrstufe;

            if (SendeFahrStufe == 4)
            {
                SendeFahrStufe = 3;                       //Umwandeln der Fahrstufe in Sendeformat
            }
            byte Header = 0xE4;
            byte DB0    = (byte)(0x10 + SendeFahrStufe);
            byte DB1    = LokFahrstufen.Addr_High(Adresse);
            byte DB2    = LokFahrstufen.Addr_Low(Adresse);
            byte DB3    = LokFahrstufen.FahrstufeToProtokol(Geschwindigkeit, Richtung, Fahrstufe);
            byte XOR    = (byte)(Header ^ DB0 ^ DB1 ^ DB2 ^ DB3);

            byte[] SendBytes = { 0x0A, 0x00, 0x40, 0x00, Header, DB0, DB1, DB2, DB3, XOR };
            if (Connected)
            {
                Client.Send(SendBytes, 10);
            }
        }
        private void UpdateLok(int ParamterCount, int Adresse, bool Besetzt, byte FahrstufenInfo, bool Richtung,
                               byte Fahrstufe, bool Doppeltraktio, bool Smartsearch, bool[] Funktionen)
        {
            int index = -1;

            for (int i = 0; i < AktiveLoks.Length; i++)
            {
                if (AktiveLoks[i] != null)
                {
                    if (AktiveLoks[i].Adresse == Adresse)
                    {
                        index = i;
                    }
                }
            }
            if (index == -1)
            {
                return;
            }

            if (ParamterCount >= 3)
            {
                AktiveLoks[index].FahrstufenInfo = FahrstufenInfo;
            }
            if (ParamterCount >= 4)
            {
                int FahrRichtung = LokFahrstufen.Vorwaerts;
                if ((Richtung == true) && (AktiveLoks[index].LokUmgedreht == false))
                {
                    FahrRichtung = LokFahrstufen.Vorwaerts;
                }
                if ((Richtung == true) && (AktiveLoks[index].LokUmgedreht == true))
                {
                    FahrRichtung = LokFahrstufen.Rueckwaerts;
                }
                if ((Richtung == false) && (AktiveLoks[index].LokUmgedreht == false))
                {
                    FahrRichtung = LokFahrstufen.Rueckwaerts;
                }
                if ((Richtung == false) && (AktiveLoks[index].LokUmgedreht == true))
                {
                    FahrRichtung = LokFahrstufen.Vorwaerts;
                }
                AktiveLoks[index].Richtung  = FahrRichtung;
                AktiveLoks[index].Fahrstufe = LokFahrstufen.ProtokolToFahrstufe(Fahrstufe, FahrstufenInfo);
            }
            if (ParamterCount >= 5)
            {
                AktiveLoks[index].AktiveFunktion[0] = Funktionen[0];
                AktiveLoks[index].AktiveFunktion[1] = Funktionen[1];
                AktiveLoks[index].AktiveFunktion[2] = Funktionen[2];
                AktiveLoks[index].AktiveFunktion[3] = Funktionen[3];
                AktiveLoks[index].AktiveFunktion[4] = Funktionen[4];
            }
            if (ParamterCount >= 6)
            {
                AktiveLoks[index].AktiveFunktion[5]  = Funktionen[5];
                AktiveLoks[index].AktiveFunktion[6]  = Funktionen[6];
                AktiveLoks[index].AktiveFunktion[7]  = Funktionen[7];
                AktiveLoks[index].AktiveFunktion[8]  = Funktionen[8];
                AktiveLoks[index].AktiveFunktion[9]  = Funktionen[9];
                AktiveLoks[index].AktiveFunktion[10] = Funktionen[10];
                AktiveLoks[index].AktiveFunktion[11] = Funktionen[11];
                AktiveLoks[index].AktiveFunktion[12] = Funktionen[12];
            }
            if (ParamterCount >= 7)
            {
                AktiveLoks[index].AktiveFunktion[13] = Funktionen[13];
                AktiveLoks[index].AktiveFunktion[14] = Funktionen[14];
                AktiveLoks[index].AktiveFunktion[15] = Funktionen[15];
                AktiveLoks[index].AktiveFunktion[16] = Funktionen[16];
                AktiveLoks[index].AktiveFunktion[17] = Funktionen[17];
                AktiveLoks[index].AktiveFunktion[18] = Funktionen[18];
                AktiveLoks[index].AktiveFunktion[19] = Funktionen[19];
                AktiveLoks[index].AktiveFunktion[20] = Funktionen[20];
            }
            if (ParamterCount >= 8)
            {
                AktiveLoks[index].AktiveFunktion[21] = Funktionen[21];
                AktiveLoks[index].AktiveFunktion[22] = Funktionen[22];
                AktiveLoks[index].AktiveFunktion[23] = Funktionen[23];
                AktiveLoks[index].AktiveFunktion[24] = Funktionen[24];
                AktiveLoks[index].AktiveFunktion[25] = Funktionen[25];
                AktiveLoks[index].AktiveFunktion[26] = Funktionen[26];
                AktiveLoks[index].AktiveFunktion[27] = Funktionen[27];
                AktiveLoks[index].AktiveFunktion[28] = Funktionen[28];
            }
            if (!AktiveLoks[index].Steuerpult.IsDisposed)
            {
                AktiveLoks[index].Steuerpult.UpdateLokDaten();
            }
            //int index = Lokliste.FindIndex(x => x.Adresse == Adresse);
        }