Структура пакету даних

 

Розробимо структуру вхідного пакету даних, згідно з набором даних, що будуть надходити від приладу збору метеорологічних даних.

Розглянемо набір даних, з яким будемо оперувати

температура;

атмосферний тиск;

сила вітру;

напрямок вітру.

Формат даних про температуту (рис. 4.1.1):

 

хххх хххх  хххх хххх

     

 

 


Рис 4.1.1. Формат даних про температуру, що надходять.

 

Формат даних про атмосферний тиск – 16 біт, що відображують абсолютне значення атмосферного тиска у мм. рт. ст. Інформацію про силу та напрямок вітру отримуємо у вигляді послідовності трьох шістнадцятибітних чисел, за допомогою яких будуть обчислені ці показники (рис 4.1.2):

 

хххх хххх хххх хххх - показання від датчику вітру (1)

хххх хххх хххх хххх - показання від датчику вітру (2)

хххх хххх хххх хххх - показання від датчику вітру (3)

Рис. 4.1.2. Інформація від датчику сили та напрямку вітру.


Також включимо до пакету даних номер модуля, від якого були отримані дані та передана контрольна сума, завдяки чому можемо перевірити відсутність помилок під час передачі даних, обчисливши власну контрольну суму від усіх погодних показників (рис 4.1.3).

 

хххх хххх хххх хххх - температура

хххх хххх хххх хххх - атм. тиск

хххх хххх хххх хххх - показання від датчику вітру (1)

хххх хххх хххх хххх - показання від датчику вітру (2)

хххх хххх хххх хххх - показання від датчику вітру (3)

хххх хххх хххх хххх - обчислена контрольна сума

Рис 4.1.3. Обчислення контрольної суми

 

Тобто контрольна сума обчислюється прямим сумуванням всіх показників за модулем «2», та порівняється є контрольною сумою, яка щойно була передана.

Також при організації обміну даними слід передбачити наявність бітової послідовності, що слугуватиме сигналом для початку аналізу бітової послідовності, яка надходить від зовнішнього пристрою, та формування інформаційного пакету. Для цього додамо до початку вхідної бітової послідовності (пакету даних) комбінацію з восьми логічних одиниць – „стартову” послідовність біт.

Тепер можемо представити структуру пакету, яка являє собою послідовність біт (4.1.4):

 

СП код модуля температура атм. тиск дані про вітер контр. сума

                 
       


Рис 4.1.4. Структура пакету, що приймається.


Де СП – стартова вхідна послідовність.

Тобто, для вхідний пакет даних буде являти собою бітову послідовність, довжиною 112 біт.

 





Прийом даних

 

Розглянемо організацію приймання данних.

Інформація надходить на контакти рознімання паралельного порту ПК (SR7 – Busy, SR5 – PaperOut), які належать до 5-бітного порту уведення сигналів стану принтера.

Інформація з них може бути програмно зчитана з використанням методів isBusy() isPaperOut(), які вернуть true або false при наявності на розніманнях високого або низького рівня сигналів відповідно.

Для приймання даних у ініціалізуючому методі initData() запускається на виконання окремий поток, що буде „стежити” за зміною рівнів сигналів на розніманнях паралельного порту.

receiver = Receiver.getInstanse();

receiver.setOwner(this);

new Thread(receiver).start();

У класі Receiver метод run() циклічно опитує рівень сигналу на розніманні SR5 (наявність синхронізуючого сигналу), викликаючи метод isPaperOut(), якщо метод вертає true, починається приймання даних (опит рівня сигналу на розніманні SR7, метод isBusy()), після чого програмно встановлюється низький рівень синхронізуючого сигналу setPaperOut(false).

Починаємо аналіз бітової послідовності, що надходить. Якщо в результаті приймання винаходим послідовність з восьми одиниць – накопичуємо вхідні дані у буфер:

b = isBusy()? 1: 0;

buffer[counter++] = b;

коли буфер заповнюється (counter == PACKAGE_SIZE), закінчуємо приймання даних, та „руйнуємо” поток, що читає дані (receiver.interrupt()). Поток, що читає дані буде знов запущений на виконання при наступному виклику метода askModule() – тобто при необхідності приймання даних від наступного модуля збору інформації.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: