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); } }
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); } }
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); }