Структура вихідного пакету даних

 

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

Для задання коду модуля використаємо вісьми бітну послідовність даних, тобто максимальний номер модуля, який зможе обслуговувати програма буде дорівнювати 256.

Також необхідно передати певну стартову послідовність біт, бо метеокомплекс може працювати в умовах сторонніх перешкод. Для задання стартової послідовності (СП) використаємо послідовність з восьми біт, тоді пакет даних, що пересилатиметься матиме наступну структуру (рис. 4.3.1):

 

1111 1111       хххх хххх

Стартова        Код модуля

послідовність

Рис. 4.3.1. Вихідний інформаційний пакет даних.

 

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

 



Передача даних

 

Для передачі даних використовуються контакти рознімання паралельного порту, що працюють на вивід інформації (DR0 для передачі логічного сигналу „0”, DR0 для передачі логічного сигналу „1”, СR2 для передачі логічного сигналу „синхронізація”).

Перед початком передаі даних у ініціюючомуметоді initData() виконується утворення класу-передавача, що відповідатиме за передачу даних:

transmitter = Transmitter.getInstance();

transmitter.setOut(out);

transmitter.setOwner(this);

Передача даних починається при виклику метода askModule(). Для передачі інформації програма виконує наступні дії:

1. Програмно встановлюється високий рівень сигналу Select Input# (CR3), тим самим переключаючи порт у режим запису даних, цей же сигнал й передається на вхід приємопередавача RX/TX, переключаючи його у режим передачі даних (метод setPrinterSelect(true)).

2. До lpt-порту програмно записується байт 00000001, що символізує передачу „0”, або 00000010, що символізує передачу „1”, тим самим з’являються відповідні сигнали на виходах DR0 або DR1 (this.getOut().write(byte01)).

3. 5. Дається програмна затримка (40 мкс) – для витримування рівня сигналу DR0 або DR1 (Thread.sleep(0, 40000)).

4. Програмно встановлюється високий рівень сигналу CR3 (Select Input#) для підтвердження посилки наступного біту інформації (setInputSelect(true)).

5. Дається програмна затримка (10 мкс) – для витримування рівня сигналу CR3 (Thread.sleep(0, 10000)).

6. Програмно встановлюється низький рівень сигналу CR3 (Select Input#) для кінця підтвердження (setInputSelect(true)).

7. Програмно встановлюється низький рівень сигналу Select Input# (CR3), тим самим переключаючи порт у режим читання даних, цей же сигнал й передається на вхід приємопередавача RX/TX, переключаючи його у режим прийому даних (метод setPrinterSelect(false)).




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



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