Розглянемо дані, що надійшли від модуля збору:
- температура;
- атмосферний тиск;
- сила вітру;
- напрямок вітру;
При отриманні пакету даних від модуля збору, утворюється модель даних (клас WeatherData), що інкапсулює у собі поля та методи по обробці, аналізу, обчисленню та відокремленню даних із вхідного пакету даних.
WeatherData data = createWeatherData(byte [] recivedBytes)
data.initValues();
Температура (метод calculateTemperature(byte[] temperature)).
Дані, про температуру що надійшли мають такий формат (рис 4.1).
Знак температури („+” або „–”) визначається аналізом перших чотирьох біт („0000” – „+”; „1111” – „–”). Значеня температури у градусах цельсія визначається аналізом наступних восьми біт (0..255). Дробна частина знаходиться шляхом аналізу наступних чотирьох біт.
Наприклад, проаналізувавши бітову послідовність 0000 0000 1100 1000, отримуємо +12,50С.
Атмосферний тиск (метод calculatePreasure(byte[] preasure)).
Значення атмосферного тиску у міліметрах ртутного стовпчика знаходиться шляхом аналізу шістнадцяти біт, які були виділені з вхідного інформаційного пакету.
|
|
Наприклад, проаналізувавши бітову послідовність 0000 0101 1111 0000, отримуємо 760 мм. рт. ст.
Напрямок та сила вітру (метод calculateWind(byte[] wind))
Напрямок та силу вітру отримуємо у вигляди частот, розкладених по вісям полярної системи координат від датчика сили й напрямку вітру наступним чином:
(1)
(2)
де f1, f2, f3 – дані від датчику вітру (рис. 4.1.2). При цьому
, якщо fi > 2;
(3), якщо fi < 2.
Формули, що застосовуються при роботі з комплексними числами:
(4)
Застосовуючи формули 1, 4 суму v1+v2+v3 можна представити як:
(5)
Тому для знаходження сили вітру застосуємо формулу:
(6)
Для знаходження напрямку вітру застосуємо формулу:
(7)
Для виконання всих вищезгаданих операцій у середовищі java, скористаємося статичними методами класу Math.
Після обчислення показників сили та напрямку вітру, вони заносяться до відповідних полей класу WeatherData.