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