1. Struktura strony rejestracji
-------------------------------
| Naglowek | Dane | Trailer | ewentualne dane nieistotne |
| 1bajt | ... | 1bajt | uzupelnienie do 256 bajtow |
1a. Naglowek
------------
00 - strona otwarta (do tej strony dopisywane sa dane)
01 - strona zamknieta (wypelniona)
FF - pusta
1b. Dane
--------
W obszarze danych moga wystepowac dwa rodzaje rekordow:
- rekord kontrolny
- rekord danych
Pierwszy rekord w obszarze danych powinien byc kontrolny. Kolejne rekordy
moga byc dowolnego rodzaju. Rodzaj rekordu rozpoznaje sie po najstarszym
bicie pierwszego bajtu:
0 - rekord danych
1 - rekord kontrolny
1c. Trailer
-----------
Bajt o wartosci FF - pozostale nastepujace po Trailerze bajty nalezy
zignorowac.
2. Rekord kontrolny
-------------------
| Flagi | Time | Intv |
| 1bajt | 4bajty | 2bajty |
2a. Flagi
---------
Flagi w naglowku rekordu kontrolnego opisuja strukture rekordow
danych nastepujacych po biezacym rekordzie kontrolnym. Dane rekordu
kontrlnego obowiazuja do konca strony, chyba ze wystapi inny rekord
kontrolny.
Flagi bitowo:
7 - zawsze 1 (oznacza rekord kontrolny)
6 - zero
5 - jesli jeden, to zapisywanie drugiej temperatury (T2)
4 - jesli zero, to zapisywane cisnienie (P)
3 - jesli zero, to zapisywana wilgotnosc (RH)
2 - jesli zero, to zapisywana temperatura (TA)
1 - jesli jeden, to zapis temperatur w szerokim zakresie
0 - jesli jeden, to zapis temperatur w rozdzielczosci 0.01 stC ;
jesli zero, to w rozdzielczosci 0.1 stC
2b. Time
--------
Czas zapisu rekordu kontrolnego i nastepujacego bezposrednio za nim
(jesli istnieje) rekordu danych. Czas zapisany jest jako liczba sekund
ktore uplynely od godziny 00:00:00 1 stycznia 2000.
2c. Intv
--------
Interwal zapisow w minutach. Z tej wartosci i wartosci zapisanej w polu
Time wynikaja czasy zapisu kolejnych rekordow danych.
3. Rekord danych
-----------------
Ponizej pokazana przykladowa struktura rekordu danych rozpisana na bity:
| Z e h h h h h h | h h h h u p p p | p p p p p p p p | p p p .....
| 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 .....
| bajt 1. | bajt 2. | bajt 3. | bajt 4.
Z - zawsze zero (oznacza rekord danych)
e - oznacza blad wyniku pierwszego zapisanego parametru (0-ok ; 1-blad)
h..h - wartosc pierwszego zapisanego parametru -- dlugosc reprezentacji
i sposob kodowania zalezny od rodzaju parametru (tu pokazano
wilgotnosc - 10 bitow danych)
u - oznacza blad wyniku drugiego zapisanego parametru (0-ok ; 1-blad)
p..p - wartosc drugiego zapisanego parametru -- dlugosc reprezentacji
i sposob kodowania zalezny od rodzaju parametru (tu pokazano
cisnienie - 14 bitow danych)
- to, ktore parametry beda wchodzily do rekordu danych, zalezy od pola
Flag w bezposrednio poprzednim rekordzie kontrolnym
- parametry sa dosuwane do lewej strony (jak pokazano powyzej),
- parametry wystepuja w kolejnosci (jesli nie sa pominiete)
- wilgotnosc (RH) -- 1 bit bledu + 10 bitow danych zapisane w [0.1 %]
- cisnienie (P) -- 1 bit bledu + 14 bitow danych zapisane w [0.1 hPa]
- temperatura (TA) -- 1 bit bledu + N bitow danych
- druga temperatura (T2) -- 1 bit bledu + N bitow danych
- w ostatnim bajcie rekordu danych moga wystepowac niewykorzystane bity,
bo kazdy nastepny rekord danych zaczyna sie na granicy bajtu.
Kodowanie temperatury zalezy od flag 0 i 1 w rekordzie kontrolnym.
fl.1 fl.0 N[bitow] zakres[stC] rozdz.
------------------------------------------------
0 0 11 -40..+85 [0.1 stC]
0 1 14 -40..+85 [0.01 stC] <*>
1 0 14 -200..+550 [0.1 stC]
1 1 17 -200..+550 [0.01 stC]
- ujemne wartosci temperatury zapisywane sa (poza przypadkiem ozn.<*>)
w U2 (kodzie uzupelnien do dwoch)
- w przypadku oznaczonym <*> aby odkodowac wartosc temperatury nalezy
od wartosci zapisanej odjac stala 4000. Np: jesli z pamieci
rejestrujacej odczytano wartosc 1234, to po odjeciu 4000 otrzymuje sie
-2766, czyli ostatecznie wartosc temperatury to -27,66 stC.
4a. Przyklad#1
--------------
Dla danych z pamieci:
01 B1 0E AA 45 3B 00 01 40 02 ED C5 A9 80 40 02 ED E5 A9 C0 FF ....
-- rekord kontrolny --
01 - strona zamknieta
B1 - bitowo: 1 0 1 1 0 0 0 1
- zapisywane sa: T2, RH oraz TA
- temperatura z rozdzielczoscia 0.01 stC w zakresie -40..+85
0E AA 45 3B - pierwszy rekord z data 18-paz-07 16:24
00 01 - interwal 1 min
-- rekordy danych --
40 02 ED C5 A9 80 - rekord danych #1, bitowo:
0 - bit zero na poczatku rekordu danych
1 0 0 0 0 0 0 0 0 0 0 - wilgotnosc - bledna wartosc bo pierwszy bit 1
0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 - temperatura (TA):
5998-4000=1998 => 19,98 stC
0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 - temperatura (T2):
5798-4000=1798 => 17,98 stC
0 0 0 0 0 0 - niewykorzystane bity
40 02 ED E5 A9 C0 - rekord danych #2: 19,99 i 17,99 stC (18-paz-07 16:25)
FF - terminator strony
4b. Przyklad#2
--------------
Dla danych z pamieci:
00 8A 0E AA 48 B5 00 03 27 9C 7F 9C 27 9C 7F 9C FF ...
-- rekord kontrolny --
00 - strona otwarta
8A - bitowo: 1 0 0 0 1 0 1 0
- zapisywane sa: TA, P
- temperatura z rozdzielczoscia 0.1 stC w zakresie -200..+550
0E AA 48 B5 - 18-paz-07 16:39
00 03 - interwal 3 min
-- rekordy danych --
27 9C 7F 9C - rekord danych #1, bitowo:
0 - bit zero na poczatku rekordu danych
0 1 0 0 1 1 1 1 0 0 1 1 1 0 0 - cisnienie (P): 10140 => 1014,0 hPa
0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 - temperatura (TA): bit bledu nie jest
ustawiony, wiec wartosc jest poprawna ;
tu przyjete jest kodowanie U2, wiec
ustawiony pierwszy bit danych swiadczy
o ujemnej wartosci: -50 => -5,0 stC
0 - niewykorzystane bity
27 9C 7F 9C - rekord danych #2: wartosci jw. (18-paz-07 16:42)
FF - terminator strony