Table of Contents WTF? Nützliches Steuerrechner Lawo Iluminator-Software Topographie Definitionen Ersetzungen Rahmenzeichen Längenbyte Steuerbyte Slaveadresse Informationsbyte Funktionsgruppe Datensatzlänge Datensatzkennung (alles Funktionsgruppe 0xB9) 0x30 Textausgabe 0x32 Zeichensatzauswahl 0x50 Uhrzeit- und Datumsübertragung Prüfsumme Datenblöcke Block 1 Block 2 WTF? Die HFG-Treppe (siehe auch: https://entropia.de/HFG-Treppe) kann über eine gar schreckliche Software vom Hersteller auf einem verranzt-altem Rechner gesteuert werden. Praktischerweise gibt es aber vom Hersteller auch eine Dokumentation zu dem Protokoll, was der Rechner über Seriell mit dem Modem spricht, welche dann die Kommandos zum “Stationsrechner” schickt. Da das Dokument aber nur schwerlich zu verdauen ist, hier eine Aufschlüsselung von Kommunikation, die das etwas einfacher machen sollte. Außerdem gibt es auch eine Python-Library, mit der alles besser werden soll™: https://github.com/pc-coholic/libLLE57 Nützliches Steuerrechner User ist Administrator (bzw. das letzte was im Anmeldedialog steht). Passwort: foo5bar (steht auch mit Bleistift auf der Tastatur) Lawo Iluminator-Software User: Administrator Passwort: admin Gibt auch noch eine Hand voll weiterer User mit unbekanntem Passwort Topographie Ein Steuerrechner an der Treppe 3 Slaves 1 (0x01) oben 11 Zeilen 2 (0x02) mitte 11 Zeilen 3 (0x03) unten 10 Zeilen (!) Jedes Panel hat 7 x 112 Pixel Am PC ist noch eine Anzeige 4 definiert, welche aber als Dummy agiert und nicht aktiv angesteuert wird. Definitionen Ersetzungen Austauschzeichen 0x7D XOR 0x20 Rahmenzeichen wird nicht ersetzt 0x7D → 0x7D 0x5D 0x7E → 0x7D 0x5E Rahmenzeichen Rahmen beginnt und endet mit 7E wird nie ersetzt Längenbyte Länge des kompletten Telegrams von Steuerbyte (inkl.) bis Prüfsumme (exkl.) Steuerbyte 0x43 Datentelegramm Slaveadresse 0x01 bis 0xFE 0xFF alle Anzeigen (Broadcast, keine Antworten!) 0x00 nicht verwenden Informationsbyte Anzahl der Datensätze im Datenfeld 0x00 bis 0x3F maximal 63 Datensätze mit insgesamt max. 251 Bytes) vgl. Kapitel 3 Funktionsgruppe 0xB9 Datensätze mit Text-, Zeichensatz- oder Graphikinformationen vgl. Kapitel 3.2 0x04 Datensätze mit Wechselverkehrszeichen mit Textreferenznummern vgl. Kapitel 3.7 Datensatzlänge von Interne Adresse (inkl.) bis Ende des Datensatzes Datensatzkennung (alles Funktionsgruppe 0xB9) 0x32 Zeichensatzauswahl (vgl. Kapitel 3.2) 0x30 Textausgabe (vgl. Kapitel 3.3.1) 0x31 Graphikausgabe (vgl. Kapitel 3.4) 0x40 Steuerung Ausgabeport (vgl. Kapitel 3.5) 0x50 Uhrzeit- und Datumsübertragung (vgl. Kapitel 3.6) 0x30 Textausgabe 11 Datensatzlänge (17 Bytes) 01 Interne Adresse 30 Datensatzkennung (Textausgabe) XX Textsteuerbyte Bit Anzeigenspeicher Ausgabensteuerung Dez Hex 7654 3210 7-4 16 0x10 0001 0000 1 0x0 Löschen vor Beschreiben, anzeigen 17 0x11 0001 0001 1 0x1 Nicht löschen vor Beschreiben, anzeigen 18 0x12 0001 0010 1 0x2 Nicht löschen vor Beschreiben, nicht anzeigen 19 0x13 0001 0011 1 0x3 Löschen vor Beschreiben, nicht anzeigen 20 0x14 0001 0100 1 0x4 Gelb vor Beschreiben, nicht anzeigen 21 0x15 0001 0101 1 0x5 Schachbrett vor Beschreiben, nicht anzeigen YY YY Horizontale Feldposition (y), 0x0000 bis 0xFFFF XX XX Vertikale Feldposition (x), 0x0000 bis 0xFFFF BB BB Feldbreite (b), 0x0000 bis 0xFFFF HH Feldhöhe (h), 0x00 bis 0xFF AA Feldattribut 0x00 Links und oben bündig 0x10 Links und oben bündig, aber blinkend 0x20 Lauftext LL Textlänge (max. 127 Zeichen), 0x00 bis 0xFF BB Buchstabe BB Buchstabe […] 0x32 Zeichensatzauswahl 0x03 Datensatzlänge (3) 0x01 Interne Adresse 0x32 Datensatzkennung (Zeichensatzauswahl) 0xZZ Zeichensatznummer + Spacing + Transparenz Bitpositionen: 76543210 (siehe auch 0x030 Textausgabe) Bit 7: Transparenz 1 Textzeichen sind transparent, darunterliegende Zeichen bleiben sichtbar (Take this one!) 0 Nicht transparent, darunterliegende Zeichen werden (viereckig) überdeckt Bit 65: Spacing Abstand zwischen zwei Zeichen + 1 00 (0x0) eine Leerspalte zwischen zwei Zeichen 01 (0x1) zwei Leerspralten zwischen zwei Zeichen 10 (0x2) drei Leerspralten zwischen zwei Zeichen 11 (0x3) vier Leerspralten zwischen zwei Zeichen Bit 43210: Nummer des Zeichensatzes in der Anzeige 00000 (0x00) bis 11111 (0x1F) Liste der Zeichensätze muss bei LLE angefordert werden 0x50 Uhrzeit- und Datumsübertragung 0x09 Datensatzlänge 0x01 Interne Adresse 0x50 Datensatzkennung 0xYYYY Jahr, 0000 bis 65536, 0x00 bis 0xFFFF, 2 Bytes! 0xMM Monat, 1 bis 12, 0x01 bis 0x0C 0xDD Tag, 1 bis 31, 0x01 bis 0x1F 0xHH Stunden, 0 bis 23, 0x00 bis 0x17 0xMM Minuten, 0 bis 59, 0x00 bis 0x3B 0xSS Sekunden, 0 bis 59, 0x00 bis 0x3B Prüfsumme Addition aller Bytes im Telegram ab dem Steuerbyte (inkl.) bis ausschließlich der Prüfsumme selbst, moduloa 0x100 7E 68 0F 0F 68 43 FF 00 01 B9 09 01 50 DC 07 06 0A 05 1C 15 7F 16 7E (43+FF+00+01+B9+09+01+50+DC+07+06+0A+05+1C+15) mod 100 Datenblöcke Block 1 7E 68 0F 0F 68 43 FF 00 01 B9 09 01 50 DC 07 06 0A 05 1C 15 7F 16 7E 7E Rahmenzeichen 68 Startzeichen 0F Längenbyte (15 Bytes) 0F Längenbyte Wiederholung 68 Startzeichen 43 Steuerbyte FF Slaveadresse (Alle) 00 OSI3-Byte (fix) 01 Informationsbyte Anzahl der Datensätze im Datenfeld (1 Datensatz) B9 Funktionsgruppe (Text/Zeichen/Graphik) 09 Datensatzlänge (9 Byte) 01 Interne Adresse 50 Datensatzkennung (Uhrzeit- und Datumsübertragung) DC 07 Jahr 06 Monat 0A Tag 05 Stunden 1C Minuten 15 Sekunden 7F Prüfsumme 16 Stopzeichen 7E Rahmenzeichen Block 2 7E 68 A6 A6 68 43 01 00 0A B9 03 01 32 87 11 01 30 13 00 00 00 00 1C 0007 00 05 6F 62 65 6E 31 11 01 30 12 00 00 07 00 1E 00 07 00 05 6F 62 656E 32 11 01 30 12 00 00 0E 00 1D 00 07 00 05 6F 62 65 6E 33 11 01 30 1200 00 15 00 1E 00 07 00 05 6F 62 65 6E 34 11 01 30 12 00 00 1C 00 1E 0007 00 05 6F 62 65 6E 35 11 01 30 12 00 00 23 00 1E 00 07 00 05 6F 62 656E 36 11 01 30 12 00 00 2A 00 1E 00 07 00 05 6F 62 65 6E 37 11 01 30 1200 00 31 00 1E 00 07 00 05 6F 62 65 6E 38 0C 01 30 11 00 00 00 00 00 0000 00 00 88 16 7E 7E Rahmenzeichen 68 Startzeichen A6 Längenbyte A6 Längenbyte Wiederholung 68 Startzeichen 43 Steuerbyte 01 Slaveadresse (Anzeige 1) 00 OSI-Byte (fix) 0A Informationsbyte Anzahl der Datensätze im Datenfeld (10 Datensätze) B9 Funktionsgruppe (Text/Zeichen/Graphik) (Datensatz 1) 03 Datensatzlänge (3 Byte) 01 Interne Adresse 32 Datensatzkennung (Zeichensatzauswahl) 87 Zeichensatznummer + Spacing + Transparenz (Datensatz 2) 11 Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 13 Textsteuerbyte (Löschen vor Beschreiben, nicht anzeigen) 00 00 Horizontale Feldposition (y = 0) 00 00 Vertikale Feldposition (x = 0) 1C 00 Feldbreite (b = 7168) 07 Feldhöhe (h = 7) 00 Feldattribut (links und oben bündig) 05 Textlänge (5 Zeichen) 6F o 62 b 65 e 6E n 31 1 (Datensatz 3) 11 Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 12 Textsteuerbyte (Nicht löschen vor Beschreiben, nicht anzeigen) 00 00 Horizontale Feldposition (y = 0) 07 00 Vertikale Feldposition (x = 1792) 1E 00 Feldbreite (b = 7680) 07 Feldhöhe (h = 7) 00 Feldattribut (links und oben bündig) 05 Textlänge (5 Zeichen) 6F o 62 b 65 e 6E n 32 2 (Datensatz 4) 11 Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 12 Textsteuerbyte (Nicht löschen vor Beschreiben, nicht anzeigen) 00 00 Horizontale Feldposition (y = 0) 0E 00 Vertikale Feldposition (x = 3584) 1D 00 Feldbreite (b = 7424) 07 Feldhöhe (h = 7) 00 Feldattribut (links und oben bündig) 05 Textlänge (5 Zeichen) 6F o 62 b 65 e 6E n 33 3 (Datensatz 5) 11 Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 12 Textsteuerbyte (Nicht löschen vor Beschreiben, nicht anzeigen) 00 00 Horizontale Feldposition (y = 0) 15 00 Vertikale Feldposition (x = 5376) 1E 00 Feldbreite (b = 7680) 07 Feldhöhe (h = 7) 00 Feldattribut (links und oben bündig) 05 Textlänge (5 Zeichen) 6F o 62 b 65 e 6E n 34 4 (Datensatz 6) 11 Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 12 Textsteuerbyte (Nicht löschen vor Beschreiben, nicht anzeigen) 00 00 Horizontale Feldposition (y = 0) 1C 00 Vertikale Feldposition (x = 7168) 1E 00 Feldbreite (b = 7680) 07 Feldhöhe (h = 7) 00 Feldattribut (links und oben bündig) 05 Textlänge (5 Zeichen) 6F o 62 b 65 e 6E n 35 5 (Datensatz 7) 11 Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 12 Textsteuerbyte (Nicht löschen vor Beschreiben, nicht anzeigen) 00 00 Horizontale Feldposition (y = 0) 23 00 Vertikale Feldposition (x = 8960) 1E 00 Feldbreite (b = 7680) 07 Feldhöhe (h = 7) 00 Feldattribut (links und oben bündig) 05 Textlänge (5 Zeichen) 6F o 62 b 65 e 6E n 36 6 (Datensatz 11 Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 12 Textsteuerbyte (Nicht löschen vor Beschreiben, nicht anzeigen) 00 00 Horizontale Feldposition (y = 0) 2A 00 Vertikale Feldposition (x = 10752) 1E 00 Feldbreite (b = 7680) 07 Feldhöhe (h = 7) 00 Feldattribut (links und oben bündig) 05 Textlänge (5 Zeichen) 6F o 62 b 65 e 6E n 37 7 (Datensatz 9) 11 Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 12 Textsteuerbyte (Nicht löschen vor Beschreiben, nicht anzeigen) 00 00 Horizontale Feldposition (y = 0) 31 00 Vertikale Feldposition (x = 12544) 1E 00 Feldbreite (b = 7680) 07 Feldhöhe (h = 7) 00 Feldattribut (links und oben bündig) 05 Textlänge (5 Zeichen) 6F o 62 b 65 e 6E n 38 8 (Datensatz 10) 0C Datensatzlänge 01 Interne Adresse 30 Datensatzkennung (Textausgabe) 11 Textsteuerbyte (Nicht löschen vor Beschreiben, anzeigen) 00 00 Horizontale Feldposition (y = 0) 00 00 Vertikale Feldposition (x = 0) 00 00 Feldbreite (b = 0) 00 Feldhöhe (h = 0) 00 Feldattribut (links und oben bündig) 05 Textlänge (0 Zeichen) 88 Prüfsumme 16 Stopzeichen 7E Rahmenzeichen projekte/hfg-treppe.txt Last modified: 2021/04/18 12:35(external edit)