LTF Forum
Beispiellisting zum Einlesen einer LTF Datei in Pascal:
{---------------------------------------------------------}
Procedure Lese_Dateikopf;
Begin
Lese_16_Byte_aus_File_oder_Array;
end;
{---------------------------------------------------------}
Procedure Lese_Datei;
Begin
Repeat
TagId = Lese_Byte_aus_File_oder_Array;
TagLen = Lese_Byte_aus_File_oder_Array;
if=255 Taglen:=Lese_Longint_aus_File_oder_Array; (DWord in Delphi)
Case Tagid of
TagColorTable :Lese_und_Setze_Farbpalette; {1}
TagHersteller :Lese_Herstellerdaten; {2}
TagImageName: :Lese_Frame_Name; {3}
TagSetPPS :Lese_und_Setze_PPS; {4}
TagImage1 :Lese_und_Schicke_Framedaten_an_Laser; {10}
Else Tag_unbekannt_einlesen_und_ignorieren
end;
until Tagid=TagEnd; {0=Ende}
{---------------------------------------------------------}
Begin {Programstart}
Lese_Dateikopf;
Lese_Datei;
end.
{------------------------ Ende Pascal---------------------}
| Type | Beschreibung - Reihenfolge |
|---|---|
| U8 | 8 Bit ohne vorzeichen, 0..255 |
| S8 | 8 Bit mit vorzeichen, -128..127 |
| U16 | 16 Bit ohne vorzeichen, 0..65535 (2 Bytes MSB/LSB) |
| S16 | 16 Bit mit vorzeichen, -32768..32767 (2 Bytes MSB/LSB) |
| U32 | 32 Bit ohne vorzeichen (4 Bytes UpperMSB/UpperLSB/LowerMSB/LowerLSB) |
| S32 | 32 Bit mit vorzeichen (4 Bytes UpperMSB/UpperLSB/LowerMSB/LowerLSB) |
| STRING | ASCII-String im C-Format (nullterminiert) |
| ByteOffset | Länge/Type | Beschreibung |
|---|---|---|
| 0 | 3 - char | "L","T","F" - ASCII-"LTF" |
| 3 | U8 | Versionsnummer (aktuell 0) |
| 4 | U32 | Total_Tags: Anzahl Tags in dieser Datei(nur zur Info, nicht bindend) |
| 8 | U32 | TagImage1count: Anzahl TagImage1 in dieser Datei |
| 12 | U32 | Reserviert, muss 0 sein ! |
| ByteOffset | Länge/Type | Beschreibung |
|---|---|---|
| 0 | U8 | TagId: Type des Tag's (z.b. 0=EndTag) |
| 1 | U8 | TagSLen: Länge in Bytes der Tagdaten(0..254),wenn = 255 dann folgender Eintrag |
| 2 | U32 | TagLLen: Länge in Bytes der Tagdaten. <-- ACHTUNG: nur wenn TagSLen = 255 |
| 2/6 | ?? | TagDaten |
| ByteOffset | Länge/Type | Wert - Beschreibung |
|---|---|---|
| 0 | U8 | TagId = 0 |
| 1 | U8 | TagSLen = 0 |
| ByteOffset | Länge/Type | Wert - Beschreibung |
|---|---|---|
| 0 | U8 | TagId = 1 |
| 1 | U8 | TagSLen = 255 |
| 2 | U32 | TagLLen: Länge der folgenden Daten in Bytes (2 + ColTabsize * 3). |
| 6 | U16 | ColTabsize: anzahl der Farbregister (1..65535) |
| 8.. | U8 | Rot 0..255 |
| 9.. | U8 | Grün 0..255 |
| 10.. | U8 | Blau 0..255 |
| ByteOffset | Länge/Type | Wert - Beschreibung |
|---|---|---|
| 0 | U8 | TagId = 2 |
| 1 | U8 | TagSLen: Länge der folgenden Daten in Bytes(max.254) |
| 2 | STRING | Hersteller |
| ByteOffset | Länge/Type | Wert - Beschreibung |
|---|---|---|
| 0 | U8 | TagId = 3 |
| 1 | U8 | TagSLen: Länge der folgenden Daten in Bytes(max.254) |
| 2 | U16 | Frame_nr: Name für welches Image. |
| 4 | STRING | ImageName |
| ByteOffset | Länge/Type | Wert - Beschreibung |
|---|---|---|
| 0 | U8 | TagId = 4 |
| 1 | U8 | TagSLen = 4 |
| 2 | U32 | PPS: Punkte pro Sekunde - Points per Second |
| ByteOffset | Länge/Type | Wert - Beschreibung |
|---|---|---|
| 0 | U8 | TagId = 10 |
| 1 | U8 | TagSLen = 255 |
| 2 | U32 | TagLLen: Länge der folgenden Daten in Bytes. |
| 6 | U16 | Image_Nr: Nummer des Images in dieser Datei (0...65535) |
| 8 | U16 | Points_Total: Anzahl Punkte (1...65535) in diesem Image. |
| 10 | U8 | Frame_Repeat: (0 = einmal, kann ignoriert werden) |
| 11 | U8 | Punkttype (siehe Unten) |
| 12.. | LTF-Punkt | LTF-Punkt[Points_Total] |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S8 | X-Koord, Bit7 ist Vorzeichen |
| 1 | S8 | Y-Koord, Bit7 ist Vorzeichen |
| 2 | S8 | Z-Koord, Bit7 ist Vorzeichen |
| 3 | U8 | Attribut: Bit 7=1=Blank(0=Light) die Bit's 6..0 ergeben die Farbregisternummer 0..127 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S8 | X-Koord, Bit7 ist Vorzeichen |
| 1 | S8 | Y-Koord, Bit7 ist Vorzeichen |
| 2 | U8 | Attribut: Bit 7=1=Blank(0=Light) die Bit's 6..0 ergeben die Farbregisternummer 0..127 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S8 | X-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 1 | S8 | Y-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 2 | S8 | Z-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 3 | U8 | Bits 7..4 untere 4 Bit der X-Koord, Bits 3..0 untere 4 Bit der Y-Koord. |
| 4 | U8 | Bits 7..4 untere 4 Bit der Z-Koord, Bits 3..0 sind reserviert und müssen 0 sein. |
| 5 | U8 | Attribut: Bit 7=1=Blank(0=Light) die Bit's 6..0 ergeben die Farbregisternummer 0..127 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S8 | X-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 1 | S8 | Y-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 2 | U8 | Bits 7..4 untere 4 Bit der X-Koord, Bits 3..0 untere 4 Bit der Y-Koord. |
| 3 | U8 | Attribut: Bit 7=1=Blank(0=Light) die Bit's 6..0 ergeben die Farbregisternummer 0..127 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S16 | X-Koord, Bit15 ist Vorzeichen |
| 2 | S16 | Y-Koord, Bit15 ist Vorzeichen |
| 4 | S16 | Z-Koord, Bit15 ist Vorzeichen |
| 6 | U16 | Attribut: Bit 15=1=Blank(0=Light) die Bit's 14..12 sind reserviert und müssen 0 sein ! Bit's 11..0 Farbregisternummer 0..4095 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S16 | X-Koord, Bit15 ist Vorzeichen |
| 2 | S16 | Y-Koord, Bit15 ist Vorzeichen |
| 4 | U16 | Attribut: Bit 15=1=Blank(0=Light) die Bit's 14..12 sind reserviert und müssen 0 sein ! Bit's 11..0 Farbregisternummer 0..4095 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S8 | X-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 1 | S8 | Y-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 2 | U8 | Bits 7..4 untere 4 Bit der X-Koord, Bits 3..0 untere 4 Bit der Y-Koord. |
| 3 | U8 | Bits 7..4 untere 4 Bit der Z-Koord, Bits 3..0 sind reserviert und müssen 0 sein. |
| 4 | U16 | Attribut: Bit 15=1=Blank(0=Light) die Bit's 14..12 sind reserviert und müssen 0 sein ! Bit's 11..0 Farbregisternummer 0..4095 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S8 | X-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 1 | S8 | Y-Koord, oberste 8 Bit von 12, Bit11 ist Vorzeichen |
| 2 | U8 | Bits 7..4 untere 4 Bit der X-Koord, Bits 3..0 untere 4 Bit der Y-Koord. |
| 3 | U16 | Attribut: Bit 15=1=Blank(0=Light) die Bit's 14..12 sind reserviert und müssen 0 sein ! Bit's 11..0 Farbregisternummer 0..4095 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S16 | X-Koord, Bit15 ist Vorzeichen |
| 2 | S16 | Y-Koord, Bit15 ist Vorzeichen |
| 4 | S16 | Z-Koord, Bit15 ist Vorzeichen |
| 6 | U16 | Attribut: Bit 15=1=Blank(0=Light) dann 3 * 5 Bits Rot,Grün,Blau |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S16 | X-Koord, Bit15 ist Vorzeichen |
| 2 | S16 | Y-Koord, Bit15 ist Vorzeichen |
| 4 | U16 | Attribut: Bit 15=1=Blank(0=Light) dann 3 * 5 Bits Rot,Grün,Blau |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S16 | X-Koord, Bit15 ist Vorzeichen |
| 2 | S16 | Y-Koord, Bit15 ist Vorzeichen |
| 4 | S16 | Z-Koord, Bit15 ist Vorzeichen |
| 6 | U8 | Attribut: Bit 7=1=Blank(0=Light) die Bit's 6..0 sind reserviert und müssen 0 sein ! |
| 7 | U8 | Rot 0..255 |
| 8 | U8 | Grün 0..255 |
| 9 | U8 | Blau 0..255 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S16 | X-Koord, Bit15 ist Vorzeichen |
| 2 | S16 | Y-Koord, Bit15 ist Vorzeichen |
| 4 | U8 | Attribut: Bit 7=1=Blank(0=Light) die Bit's 6..0 sind reserviert und müssen 0 sein ! |
| 5 | U8 | Rot 0..255 |
| 6 | U8 | Grün 0..255 |
| 7 | U8 | Blau 0..255 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S32 | X-Koord, Bit31 ist Vorzeichen |
| 4 | S32 | Y-Koord, Bit31 ist Vorzeichen |
| 8 | S32 | Z-Koord, Bit31 ist Vorzeichen |
| 12 | U8 | Attribut: Bit 7=1=Blank(0=Light) die Bit's 6..0 sind reserviert und müssen 0 sein ! |
| 13 | U8 | Rot 0..255 |
| 14 | U8 | Grün 0..255 |
| 15 | U8 | Blau 0..255 |
| ByteOffset | Länge | Beschreibung |
|---|---|---|
| 0 | S32 | X-Koord, Bit31 ist Vorzeichen |
| 4 | S32 | Y-Koord, Bit31 ist Vorzeichen |
| 8 | U8 | Attribut: Bit 7=1=Blank(0=Light) die Bit's 6..0 sind reserviert und müssen 0 sein ! |
| 9 | U8 | Rot 0..255 |
| 10 | U8 | Grün 0..255 |
| 11 | U8 | Blau 0..255 |
| Farbnummer | Rot | Grün | Blau |
|---|---|---|---|
| 0 | 255 | 0 | 0 |
| 1 | 255 | 16 | 0 |
| 2 | 255 | 32 | 0 |
| 3 | 255 | 48 | 0 |
| 4 | 255 | 64 | 0 |
| 5 | 255 | 80 | 0 |
| 6 | 255 | 96 | 0 |
| 7 | 255 | 112 | 0 |
| 8 | 255 | 128 | 0 |
| 9 | 255 | 144 | 0 |
| 10 | 255 | 160 | 0 |
| 11 | 255 | 176 | 0 |
| 12 | 255 | 192 | 0 |
| 13 | 255 | 208 | 0 |
| 14 | 255 | 224 | 0 |
| 15 | 255 | 240 | 0 |
| 16 | 255 | 255 | 0 |
| 17 | 224 | 255 | 0 |
| 18 | 192 | 255 | 0 |
| 19 | 160 | 255 | 0 |
| 20 | 128 | 255 | 0 |
| 21 | 96 | 255 | 0 |
| 22 | 64 | 255 | 0 |
| 23 | 32 | 255 | 0 |
| 24 | 0 | 255 | 0 |
| 25 | 0 | 255 | 32 |
| 26 | 0 | 255 | 64 |
| 27 | 0 | 255 | 96 |
| 28 | 0 | 255 | 128 |
| 29 | 0 | 255 | 160 |
| 30 | 0 | 255 | 192 |
| 31 | 0 | 255 | 224 |
| 32 | 0 | 130 | 255 |
| 33 | 0 | 114 | 255 |
| 34 | 0 | 104 | 255 |
| 35 | 10 | 96 | 255 |
| 36 | 0 | 82 | 255 |
| 37 | 0 | 74 | 255 |
| 38 | 0 | 64 | 255 |
| 39 | 0 | 32 | 255 |
| 40 | 0 | 0 | 255 |
| 41 | 32 | 0 | 255 |
| 42 | 64 | 0 | 255 |
| 43 | 96 | 0 | 255 |
| 44 | 128 | 0 | 255 |
| 45 | 160 | 0 | 255 |
| 46 | 192 | 0 | 255 |
| 47 | 224 | 0 | 255 |
| 48 | 255 | 0 | 255 |
| 49 | 255 | 32 | 255 |
| 50 | 255 | 64 | 255 |
| 51 | 255 | 96 | 255 |
| 52 | 255 | 128 | 255 |
| 53 | 255 | 160 | 255 |
| 54 | 255 | 192 | 255 |
| 55 | 255 | 224 | 255 |
| 56 | 255 | 255 | 255 |
| 57 | 255 | 224 | 224 |
| 58 | 255 | 255 | 255 |
| 59 | 255 | 160 | 160 |
| 60 | 255 | 128 | 128 |
| 61 | 255 | 96 | 96 |
| 62 | 255 | 64 | 64 |
| 63 | 255 | 32 | 32 |
| 63 | 255 | 32 | 32 |
| 64..4095 | 255 | 32 | 32 |
28_9_00