Format DataTrak-Logdatei: ========================== ========================== Byte b[i] Anzahl Inhalt Bemerkungen ========================================================================== 1x Logdateiheader: ------------------ 00-05 6 Headerbytes unbekannt 06-07 2 Anzahl Tauchgaenge = b[0] + b[1] * 256 08-11 4 Headerbytes unbekannt 1. Tauchgang: ------------- 12-13 2 Tauchgangsheader unbekannt 14-16 3 Datum siehe unten 17 1 Zeitzone siehe unten 18-19 2 Uhrzeit siehe unten 20-... 1 Laenge Tauchort (laengeOrt) Anzahl Bytes des Tauchortes laengeOrt Ort des Tauchganges - 1 Laenge Tauchplatz (laengePlatz) Anzahl Bytes des Tauchplatzes laengePlatz Tauchplatz - 1 Hoehe ueber Meeresspiegel siehe unten 2 Intervall siehe unten 1 Wetter siehe unten 2 Lufttemperatur = (b[0] + b[1] * 256 ) / 100 1 Anzug siehe unten 2 Flasche = (b[0] + b[1] * 256 ) / 100 2 maximale Tiefe = (b[0] + b[1] * 256 ) / 100 2 Dauer des Tauchgangs siehe unten 2 Wassertemperatur = (b[0] + b[1] * 256 ) / 100 2 Luftverbrauch = (b[0] + b[1] * 256 ) / 100 2 Tauchgangstyp siehe unten 2 Aktivitaeten siehe unten 1 Laenge and. Aktionen(laengeAkt) Anzahl Bytes der anderen Aktionen laengeAkt andere Aktionen - 1 Laenge Parnter (laengePart) Anzahl Bytes der Parnter laengePart Tauchpartner - 1 Laenge Kommentar (laengeKomm) Anzahl Bytes fuer Kommentar laengeKomm Bemerkungen zum Tauchgang - 2 Alarm siehe unten 2 Tauchgangsnummer = b[0] + b[1] * 256 12 unbekannt Zweck unbekannt 2 Laenge Profildaten (laengeProf) = b[0] + b[1] * 256 laengeProf Profildaten siehe unten Datum: ====== x = (long)256L * 256L * b[2] + 256 * b[1] + b[0]; jahr = (int)(1600.0 + (4.0 * x / 1461.0)); x = x - (long)(((jahr-1600.0) / 4.0) * 1461.0) + (int)((x/36525L)+1); ANFANG: monat=1; if(x>31.0) { monat=2; tag=(int)x; x -= 31.0; } else { goto ENDE; } if(x>28.0) { monat=3; tag=(int)x; x -= 28.0; } else { goto ENDE; } if(x>31.0) { monat=4; tag=(int)x; x -= 31.0; } else { goto ENDE; } if(x>30.0) { monat=5; tag=(int)x; x -= 30.0; } else { goto ENDE; } if(x>31.0) { monat=6; tag=(int)x; x -= 31.0; } else { goto ENDE; } if(x>30.0) { monat=7; x -= 30.0; } else { goto ENDE; } if(x>31.0) { monat=8; x -= 31.0; } else { goto ENDE; } if(x>31.0) { monat=9; x -= 31.0; } else { goto ENDE; } if(x>30.0) { monat=10; x -= 30.0; } else { goto ENDE; } if(x>31.0) { monat=11; x -= 31.0; } else { goto ENDE; } if(x>30.0) { monat=12; x -= 30.0; } else { goto ENDE; } if(x>31.0) { monat=1; x -= 31; goto ANFANG; } ENDE: tag=(int)x; tag--; Dieser Algorithmus funktioniert leider nicht richtig um einen Jahreswechsel, keine Ahnung warum. Mit der folgenden Anpassung habe geht es besser: if(tag==0 && monat==1) { tag=31; monat=12; } if(monat==1) { if(tag<=3) { jahr++; } } Zeitzone: ========= unbekannt Uhrzeit: ======== x=b[0] + b[1] * 256 std = x / 60 min = x % 60 Hoehe ueber Meeresspiegel: ========================== 1 = 0000-0900m 2 = 0900-1750m Intervall (Oberlfaechenpause): ============================== x=b[0] + b[1] * 256 std = x / 60 min = x % 60 Wetter: ======= 1 = klar 2 = bewoelkt 3 = Nebel 4 = Regen 5 = Sturm 6 = Schnee Anzug: ====== 1 = kein Anzug 2 = Shorty 3 = Kombi 4 = Nass 5 = Halbtrocken 6 = Trocken Dauer des Tauchgangs: ===================== x=b[0] + b[1] * 256 std = x / 60 min = x % 60 Tauchgangstyp: ============== x=b[0] + b[1] * 256 Bit 0 in x gesetzt : - Bit 1 in x gesetzt : - Bit 2 in x gesetzt : Nullzeit Bit 3 in x gesetzt : Deko Bit 4 in x gesetzt : Einzelaufstieg Bit 5 in x gesetzt : Mehrfachaufstieg Bit 6 in x gesetzt : Suesswasser Bit 7 in x gesetzt : Salzwasser Bit 8 in x gesetzt : Nitrox Aktivitaeten: ============= x=b[0] + b[1] * 256 Bit 0 in x gesetzt : Plausch Bit 1 in x gesetzt : Club Bit 2 in x gesetzt : Ausbildung Bit 3 in x gesetzt : Instruktion Bit 4 in x gesetzt : Nacht Bit 5 in x gesetzt : Hoehlen Bit 6 in x gesetzt : Eis Bit 7 in x gesetzt : Such Bit 8 in x gesetzt : Wrack Bit 9 in x gesetzt : Fluss Bit 10 in x gesetzt : Stroemung Bit 11 in x gesetzt : Foto Alarm: ====== x=b[0] + b[1] * 256 Bit 0 in x gesetzt : Aufstieg Bit 1 in x gesetzt : - Bit 2 in x gesetzt : - Bit 3 in x gesetzt : Deko Bit 4 in x gesetzt : Leistung Bit 5 in x gesetzt : SOS Bit 6 in x gesetzt : - Bit 7 in x gesetzt : - Profildaten: ============ Alle 20 Sekunden gibt es einen Messpunkt. Fuer jeden Messpunkt (Tiefe) werden 2 Bytes benoetigt. Innerhalb einer Minute (3 Messpunkte) wird noch 1 Byte mit Dekoinformationen verbraucht --> fuer eine Minute benoeitigt man 7 Bytes: --> bei Nitrox-Tauchgaengen beginnen die Tiefenpunkte 2 Bytes spaeter Kein Nitrox: ------------ 0-21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... Byte [----] [----] [----] [] [----] [----] [----] [] unbekannt Tiefe1 Tiefe2 Tiefe3 | Tiefe4 Tiefe5 Tiefe6 | Dekobyte Dekobyte Dekobyte unbekannt unbekannt unbekannt Nitrox: ------- 0-23 24 25 26 27 28 29 30 31 32 33 34 35 64 37 ... Byte [----] [----] [----] [] [----] [----] [----] [] unbekannt Tiefe1 Tiefe2 Tiefe3 | Tiefe4 Tiefe5 Tiefe6 | Dekobyte Dekobyte Dekobyte unbekannt unbekannt unbekannt Tiefe: x = (b[0] * 4 ) + ((b[1] & 0xC0) / 64) tiefe = (x * 160.0 ) / 1024.0