Format DataTrak-Logdatafil: ========================== ========================== Byte b[i] Antal Innehåll Anmärkning ========================================================================== 1x fil header ------------------ 00-05 6 Headerbytes obekant Alltid A1 00 00 00 00 ??? 06-07 2 Antal dyk = b[0] + b[1] * 256 08-11 4 Headerbytes obekant Alltid 00 DC 05 ??? 1. Dyk: ------------- 12-13 2 Dykheader obekant Alltid FA 00 ??? 1.1 Dyk nummer 1: ----------------- 14-16 3 Datum se nedan 17 1 Tidszon se nedan 18-19 2 Klockslag se nedan 20-... 1 Dykortens längd (laengdOrt) Antal bytes för dykort laengdOrt Ort des Tauchganges - 1 Dykplatsens längd (laengdPlats) Antal bytes för dykplats laengdPlats Dykplats - 1 Höjd över havsytan se nedan 2 Yt intervall se nedan 1 Väder se nedan 2 Lufttemperatur = (b[0] + b[1] * 256 ) / 100 1 Dräkt se nedan 2 Flask storlek = (b[0] + b[1] * 256 ) / 100 2 maximalt djup = (b[0] + b[1] * 256 ) / 100 2 Total dyktid se nedan 2 Vattentemperatur = (b[0] + b[1] * 256 ) / 100 2 Luftförbrukning = (b[0] + b[1] * 256 ) / 100 2 Dyktyp se nedan 2 Aktiviteter se nedan 1 Längd på andra aktiv(laengdAkt) Antal bytes för andra aktiviteter laengdAkt Andra aktiviteter - 1 Längd parkamrat(laengdPar) Antal bytes för parkamrat laengdPar Parkamrat - 1 Längd kommentar (laengdKomm) Antal bytes för kommentarer laengdKomm Kommentarer för dyket - 2 Alarm se nedan 2 Nummer på dyket = b[0] + b[1] * 256 12 obekant Zweck obekant 2 Längd profildata (laengdProf) = b[0] + b[1] * 256 laengdProf Profildata se nedan 1.2 Dyk nummer 2 3 Datum se nedan 1 Tidszon se nedan 2 Klockslag se nedan osv... 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++; } } Tidszon: ========= obekant Klockslag: ========== x=b[0] + b[1] * 256 tim = x / 60 min = x % 60 Höjd över havsytan: =================== 1 = 0000-0900m 2 = 0900-1750m Ytintervall: ============ x=b[0] + b[1] * 256 tim = x / 60 min = x % 60 Väder: ====== 1 = klart 2 = molnigt 3 = dimma 4 = regn 5 = storm 6 = snö Dräkt: ====== 1 = ingen dräkt 2 = kort-dräkt 3 = våtdräkt 4 = dubbel våtdräkt 5 = semidry 6 = torrdräkt Dauer des Tauchgangs: ===================== x=b[0] + b[1] * 256 std = x / 60 min = x % 60 Tauchgangstyp: ============== x=b[0] + b[1] * 256 Bit 0: - Bit 1: - Bit 2: Nostop Bit 3: Deko Bit 4: Enkel uppstigning Bit 5: Multippel uppstigning Bit 6: Sötvatten Bit 7: Saltvatten Bit 8: Nitrox Aktiviteter: ============ x=b[0] + b[1] * 256 Bit 0: Upptäcksfärd Bit 1: Klubb Bit 2: Utbildningsdyl Bit 3: Instuktörsdyk Bit 4: Nattdyk Bit 5: Grottdyk Bit 6: Isdyk Bit 7: Sök Bit 8: Vrakdyk Bit 9: Floddyk Bit 10: Strömdyk Bit 11: Foto Alarm: ====== x=b[0] + b[1] * 256 Bit 0: Uppstigning Bit 1: - Bit 2: - Bit 3: Deko Bit 4: Leistung ???? Bit 5: SOS Bit 6: - Bit 7: - Profildaten: ============ Var 20:e sekund är en mätpunkt. För varje mätpunkt finns 2 bytes data. Vid varje minut (3 mätpunkter) finns 1 byte med deko-information. --> För varje minut används 7 bytes. --> Nitrox börjar 2 bytes senare. Utan Nitrox: ------------ 0-21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... Byte [----] [----] [----] [] [----] [----] [----] [] obekant mätpt1 mätpt2 mätpt3 | mätpt4 mätpt5 mätpt6 | Dekobyte Dekobyte Dekobyte obekant obekant obekant Nitrox: ------- 0-23 24 25 26 27 28 29 30 31 32 33 34 35 64 37 ... Byte [----] [----] [----] [] [----] [----] [----] [] obekant mätpt1 mätpt2 mätpt3 | mätpt4 mätpt5 mätpt6 | Dekobyte Dekobyte Dekobyte obekant obekant obekant Mätpunkt: x = (b[0] * 4 ) + ((b[1] & 0xC0) / 64) Mätpunkt = (x * 160.0 ) / 1024.0