Приёмо-передающий модуль компьютерной радиосети

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Радиоэлектроника
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    534,00 kb
  • Опубликовано:
    2010-05-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Приёмо-передающий модуль компьютерной радиосети

Министерство общего и профессионального образования Российской Федерации

          Новосибирский государственный технический университет

 Кафедра                     Радиоприемных и радиопередающих устройств                      .                                                                                  

 Согласовано:                                                                                                     Утверждаю Гл. специалист предприятия                                                                     Зав. кафедрой

 (для которого выполнен реальный проект)                        С.Е.    Лявданский

                                                                                            подпись, инициалы, фамилия

 подпись, инициалы, фамилия

   “                                            г.                                                       “                                            г.                         

Пояснительная записка

к дипломному проекту на тему

Приёмо-передающий модуль компьютерной радиосети

Автор дипломного проекта (работы)

                                                  И.В.  Макаревич

                              подпись, инициалы, фамилия

Обозначение дипломного проекта                                     группа РС8-92

 

Специальность        230200,     Сервис бытовой радиоэлектронной

                                                        Номер, наименование

аппаратуры

Руководитель проекта                                                            Н.Э.  Унру

                                                                                            подпись, дата, инициалы, фамилия

Консультанты по разделам:

 

краткое наименование раздела                                                   подпись, дата, инициалы, фамилия

краткое наименование раздела                                                   подпись, дата, инициалы, фамилия

краткое наименование раздела                                                   подпись, дата, инициалы, фамилия

краткое наименование раздела                                                   подпись, дата, инициалы, фамилия

краткое наименование раздела                                                   подпись, дата, инициалы, фамилия

 Нормоконтроллер                                                                Новосибирск 2004 г.

                                          Министерство  образования Российской Федерации

              Новосибирский государственный технический университет

          Кафедра                     Радиоприемных и радиопередающих устройств                .                                                                                                         

                                                                                                                         Утверждаю

                                                                                                                      Зав. кафедрой


 С.Е. Лявданский

                                                                                            подпись, инициалы, фамилия                                                 

                                                                         

                                                                                                          “                                          г.

               

                     ЗАДАНИЕ НА ДИПЛОМНЫЙ ПРОЕКТ.

Студент             Макаревич И. В.                                            Код                      Группа  РС8-92 

                                 фамилия, инициалы

1. Тема                       Приёмо-передающий модуль компьютерной радиосети  

                                                 

Утверждена приказом НГТУ №                   от  “                                                                            г.                             

2. Срок предоставления проекта к защите “                                                                            г.

3. Исходные данные для проектирования    

   Работа включает в себя разработку аппаратной (приёмо-передающий модуль) и программной частей (необходимое сетевое программное обеспечение)частей.

Параметры приёмо-передающего модуля:

     Рабочая частота, МГц – 433,92±2%;

     Нестабильность частоты передатчика, не более – 10-6;

     Дальность связи без использования направленной антенны, м–не менее 100;

     Максимальная пропускная способность, кБод, не менее – 9,6;

     Сопротивление антенны, Ом – 50;

     Диапазон рабочих температур, ºС – от -10 до +40.

Конструктивная реализация – в виде блока, подключаемого к   последовательному или параллельному адаптеру  персонального компьютера.

Параметры сетевого программного обеспечения:

    Тип операционной системы – Windows95/98, Windows2000 или WindowsХР.

    Язык программирования – BC++3.1

    Топология сети – «общая шина».

    Тип коммутации в сети – с коммутацией пакетов.

    Максимальное число компьютеров в сети – 128.

    Содержание пакета: адрес отправителя, адрес получателя, размер файла, данные,   контрольная сумма.

 

4. Содержание пояснительной записки:

4.1. Введение

                      Введение

4.2. Конструкторский раздел:

-   Выбор, обоснование и расчёт структурной схемы приёмо-передающего модуля.

-   Расчет электрической принципиальной схемы.

-   Разработка печатной платы приёмо-передающего модуля.

-   Обоснование требований к электрическим параметрам источника питания и выбор возможного его типа.

-   Выбор типа антенны.

-   Выбор и обоснование модели и протоколов взаимодействия компьютеров в сети.

-   Разработка алгоритмов сетевой программы.

 

4.3. Технологический раздел

 

4.4. Охрана труда

 

 

4.5. Охрана природы

 

4.6. Организационно-экономический раздел

 

4.7. Другие разделы (исследовательский, ГО и т.д.)

 

5. Перечень графического материала

-          Структурная схема приёмо-передающего модуля.

-          Электрическая принципиальная схема приёмо-передающего модуля.

-          Сборочный чертёж приёмо-передающего модуля.

-          Модель взаимодействия компьютеров в сети.

-          Схемы алгоритмов сетевой программы.

 

Руководитель проекта:                                                                                                       Унру Н.Э.

Консультанты по разделам:                                               подпись, дата               фамилия, инициалы  конструкторскому    

подпись, дата               фамилия, инициалы

охране труда                                                                       

подпись, дата               фамилия, инициалы

 организационно-экономическому                                   

 подпись, дата               фамилия, инициалы

Задание принял к исполнению

 подпись, дата               фамилия, инициалы

Содержание

1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Выбор и обоснование структурной схемы приёмо-передающего модуля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Расчёт электрической принципиальной схемы . . . . . . . . .15

4. Разработка печатной платы приёмо-передающего
модуля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21

5. Обоснование требований к электрическим параметрам источника питания и выбор возможного его типа . . . . . .  23

6. Выбор антенны . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

7. Выбор и обоснование модели и протоколов
 взаимодействия компьютеров в сети . . . . . . . . . . . . . . . .25

8. Разработка алгоритма сетевой программы . . . . . . . . . . . 27

9. Приложение 1. Электрическая принципиальная
схема приёмо-передающего модуля . . . . . . . . . . . . . . . . .39

10. Приложение 2. Перечень элементов . . . . . . . . . . . . . . . . .41

11. Приложение 3. Полный текст программного обеспечения
с подробными комментариями . . . . . . . . . . . . . . . . . . . . . .43

12. Приложение 4. Трансивер ER400TRS . . . . . . . . . . . . . . . .58

13. Приложение 5. Микросхема MAX232 . . . . . . . . . . . . . . . . .66

14. Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74






1.     Введение

       

        В нашем современном мире компьютер является неотъемлемой частью деловой и, отчасти, семейной жизни. Его использование влечёт за собой необходимость постоянного обмена информацией. Естественно, с самого появления этой необходимости, появляются новые и совершенствуются существующие способы передачи информации. Традиционные средства, такие как дискеты, компакт-диски и прочие носители, хоть и являются надёжными и вместительными, но порой не обеспечивают мобильности, оперативности и удобства. Альтернативными могут быть проводные или беспроводные способы передачи - компьютерные сети. Для реализации проводной связи, например, двух компьютеров необходимо наличие сетевого адаптера в каждом из них и провода, соединяющего эти два компьютера через адаптер. Так же связь может быть осуществима и через последовательные порты компьютеров. Для обоих способов требуется соединительный провод, который опять же не всегда удобно или возможно протянуть. Этот недостаток отсутствует при беспроводной передачи.

  Как и для проводной сети (Ethernet), так и для беспроводной был разработан стандарт Radio-Ethernet. Стандарт Radio-Ethernet имеет два применения. Первое из них - это беспроводная локальная сеть в стенах одного здания или на территории предприятия; таким образом решается проблема "ограниченной мобильности" в пределах предприятия (сотрудник с портативным компьютером, переходящий из одной комнаты в другую и отовсюду имеющий доступ к сети). Технически это применение почти не отличается от второго.

Второе применение стандарта Radio-Ethernet решает проблему подсоединения абонентов к большой сети передачи данных. Доводить до каждого абонента отдельный радиоканал типа "точка-точка" нецелесообразно, так как высокоскоростной канал будет стоить дорого по технологическим причинам, а через низкоскоростной информация будет перекачиваться слишком медленно. Поэтому гораздо эффективнее предоставить один общий высокоскоростной канал типа "точка-много точек" в распоряжение сразу нескольких абонентов, которые будут использовать его совместно в коллизионном режиме, как в локальной сети Ethernet.

Такое решение было разработано в последние годы; будучи совместимо с обычным кабельным Ethernet'ом, оно получило название Radio-Ethernet. Недавно оно было стандартизовано международным комитетом IEEE под номером 802.11, и может теперь считаться технически созревшим и стабильным.

         Для установления радиосвязи необходимо лишь наличие приёмо-передающего радио-модуля в каждом компьютере. Связь может осуществляться практически в любых условиях видимости, а дальность связи зависит только от мощности передатчика. Проблемы связанные с коммутацией (использование хабов и свитчей) решаются программно.

         Разработка подобного приёмо-передающего модуля и необходимого программного обеспечения и является задачей данного проекта. Связь модуля с компьютером осуществляется через последовательный порт. Все компьютеры, являющиеся частью одной сети, используют для связи общий эфир.

Такое решение, как способ коммутации в масштабе организации или дома, является идеальным в случае, когда требуется простота и не требуются большие скорости передачи информации.

2.         Выбор и обоснование структурной схемы приёмо-передающего модуля

         Задача приёмо-передающего модуля (ППМ) – установить двустороннюю связь между компьютерами. Поэтому он должен содержать в себе как приёмник, так и передатчик. Для приёма информации будем использовать стандартный супергетеродинный приёмник с рабочей частотой 433,92 МГц. Структурная схема такого приёмника изображена на рис. 1.


Рис. 1.       Структурная схема ЧМ приёмника супергетеродинного типа

         Передатчик, как и приёмник, тоже будем использовать стандартный, выполненный по схеме  изображённой на рисунке 2.

Рис. 2.       Структурная схема ЧМ передатчика

         Передаваемая от компьютера к компьютеру информация представлена в цифровом виде, т.е. состоит только из нулей и единиц. Принцип её передачи будет заключаться в частотной модуляции радиосигнала. Отклонение частоты сигнала от рабочей (433,92 МГц) в «левую» или «правую» сторону на величину ∆f (девиация частоты) будет соответствовать логической единице или логическому нулю. Наглядно этот принцип изображён на рисунке 3.


где ∆f – девиация частоты

Рис. 3.       Соответствие частоты радио сигнала цифровому значению передаваемого/принимаемого сигнала

         Исходя из назначения модуля и условий его эксплуатации, компактность и минимальное энергопотребление можно считать дополнительными требованиями. Для управления ППМ и осуществления приёма/передачи данных, удобнее всего использовать последовательный порт компьютера (COM1 или  COM2), т.к. это даёт возможность последовательной передачи в асинхронном режиме, что позволяет не использовать дополнительные синхронизирующие элементы, тем самым, упрощая  конструкцию самого ППМ. Программу управления модулем так же наиболее просто и удобно писать для последовательного порта, работающего по протоколу RS-232. 

Так как приёмо-передающий модуль будет подключаться к последовательному порту компьютера, то количество информационных каналов и каналов управления ППМ не должно превышать количества этих же каналов у COM-порта. Т.е. нужен максимально простой в управлении ППМ.

         Всем вышеперечисленным требованиям удовлетворяют многие однокристальные трансиверы (приёмо-передатчики), в большом ассортименте выпускаемые различными компаниями. Расчёт параметров отдельных составляющих структуры приёмной и передающей частей становится бессмысленным, т.к. подавляющее большинство производителей трансиверов в документации указывают только общую информацию и рабочие параметры изделия. Поэтому выбор будет строиться на соответствии этих параметров требуемым. Рассмотрим наиболее подходящие из предлагаемых на мировом рынке моделей:

•        AT86RF211 - однокристальный трансивер для радиолиний малой мощности фирмы Atmel.

•        TR3000– однокристальный трансивер фирмы RF.

•        RXQ1-433.9 – двухдиапазонный трансивер фирмы Telecontrolli (готовая сборка).

•        ER400TRS – радиомодуль, разработанный Радиоассоциацией малых мощностей (LPRA - Low Power Radio Association).

 

В таблице 1 приведены основные сравнительные характеристики указанных трансиверов.

Таблица 1


AT86RF211

TR3000

RXQ1-433.9

ER400TRS

Рабочая частота (МГц)

400-950

433,92

433,92 и 434,33

(2 канала)

433,92

Максимальная скорость передачи

данных (кбит/с)

64

115,2

20

19,2

Максимальная дальность связи(м)

-

250

250

250

Внешняя синхронизация

требуется

не требуется

не требуется

не требуется

Напряжение питания (В)

2,4

3

3

5

Вариант исполнения

микросхема

микросхема

готовая сборка

готовая сборка


         По скорости передачи и рабочей частоте подходят все четыре варианта.  Для обеспечения максимальной простоты управления, AT86RF211, требующий внешней синхронизации, как вариант не подходит. Из оставшихся трёх трансиверов самыми удобными, в плане  дальнейшего схемоэлектрического выполнения будут RXQ1-433.9 и ER400TRS, которые являются уже готовыми сборками – трансиверами и не требуют дополнительных внешних цепей. Отсутствие этих цепей так же гарантирует соответствие указанных параметров, т.к. разброс номинальных значений используемых элементов сказывается на стабильности этих параметров. Решающим моментом в выборе будет напряжение питания. Напряжение питания величиной 5 В у ER400TRS позволяет использовать сам компьютер как источник стабилизированного напряжения питания.

         Итак, останавливаем выбор на трансивере ER400TRS. Подробные технические параметры и схема включения в приложении 4.

         Он обладает следующими параметрами :

·   Рабочая частота, МГц – 433,92

·   Максимальная дальность связи, м –  250

·   Максимальная пропускная способность, кбит/с – 19,2

·   Сопротивление антенны, Ом – 50

·   Диапазон рабочих температур, °С –   от – 20 до +65

Эти параметры полностью удовлетворяют исходным данным для проектирования. Выбранный трансивер представляет собой плоский корпус с однорядным вертикальным расположением выводов.

Схематичное изображение конструкции трансивера можно увидеть на рисунке 4 .

Рис. 4.   Схематичное изображение конструкции трансивера

Описание интерфейса COM-порта (RS-232)

Последовательный интерфейс для передачи данных в одну сторону использует одну сигнальную линию, по которой информационные биты передаются друг за другом последовательно. Такой способ передачи и определяет название интерфейса и порта, его реализующего. Эти названия соответствуют английским терминам Serial Interface и Serial Port. Последовательная передача данных может осуществляться как в асинхронном, так и синхронном режимах.

При асинхронной передаче каждому байту предшествует старт-бит, сигнализирующий приемнику о начале очередной посылки, за которым следуют биты данных и, возможно, бит паритета (контроля четности). Завершает посылку стоп-бит, как показано на рисунке 5, гарантирующий определенную выдержку между соседними посылками.

Рис. 5.       Передача одного байта последовательных данных

Старт-бит следующего посланного байта может посылаться в любой-момент после окончания стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение (лог. 0), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена, измеряемой в количестве передаваемых бит в секунду. Внутренний генератор синхронизации приемника использует счетчик-делитель опорной частоты, обнуляемый в момент приема начала старт-бита. Этот счетчик генерирует внутренние стробы, по которым приемник фиксирует последующие принимаемые биты. В идеале эти стробы располагаются в середине битовых интервалов, что обеспечивает возможность приема данных и при некотором рассогласовании скоростей приемника и передатчика.

Для асинхронного режима принят ряд стандартных скоростей обмена: 50, 75, 110, 150, 300, 600, 1200, 2400. 4800, 9600, 19200, 38400, 57600 и 115200 бит/с. Количество бит данных может составлять 5, 6, 7 или 8 (5-и, 6-битные форматы мало распространены). Количество стоп-бит может быть 1, 1,5 и 2 ("полтора бита" подразумевает, естественно только длительность стопового интервала).

Асинхронный обмен реализуется с помощью COM-порта с использованием протокола RS-232. Стандарт RS-232 использует несимметричные передатчики и приемники - сигнал передается относительно общего провода - схемной земли. Логической единице соответствует уровень напряжения на входе приемника в диапазоне -12...-3 В. Логическому нулю соответствует напряжение в диапазоне +3...+12 В. Между уровнями -3...+3 В имеется зона нечувствительности, обусловливающая гистерезис приемника: состояние линии будет считаться измененным только после пересечения соответствующего порога.

         Рабочие напряжения трансивера лежат в диапазоне  0 - 5 В. Т.е. высокому логическому уровню (логической единице) соответствует напряжение 5 В , а низкому логическому уровню (логическому нулю) соответствует напряжение 0 В. Видно, что возникает необходимость согласования уровней напряжения трансивера и COM-порта. Для этого будем использовать микросхему MAX232, которая преобразует напряжение из   +5 В  в  -10 В     и из      0 В  в  10 В  и  обратно при том, что её напряжение питания +5 В. Подробно о параметрах и схеме включения в приложении 5.

         Исходя из всего вышесказанного, можно составить структурную схему приёмо-передающего модуля, которая изображена на рисунке 6.

 

 


Рис. 6.       Структурная схема приёмо-передающего модуля









3.     Расчёт электрической принципиальной схемы

Так как связь модуля с компьютером будет осуществляться через последовательный порт, то первым делом рассмотрим интерфейс портов. В таблице 2 приведено назначение контактов разъемов СОМ-портов. Назначение контактов разъема DB25S определено стандартом EIA/TIA-232-E, разъем DB9S определен стандартом EIA/TIA-574.

Таблица 2

Обозначение вывода

Контакт разъема

Направление
вход/выход

Назначение вывода

DB25S

DB9S

PG

1

-

-

Protect Ground - Защитная земля

TXD

2

3

выход

Transmit Data -Передаваемые данные

RXD

3

2

вход

Receive Data -Принимаемые данные

RTS

4

7

выход

Request To Send - Запрос на передачу

CTS

5

8

вход

Clear To Send - Готовность модема к приему данных для передачи

DSR

6

6

вход

Data Set Ready -Готовность модема к работе

SG

7

5

-

Signal Ground - Схемная земля

DCD

8

1

вход

Data Carrier Detected -Несущая обнаружена

DTR

20

4

выход

Data Terminal Ready -Готовность терминала (PC) к работе



Активному состоянию сигнала ("включено") и логической единице передаваемых данных соответствует отрицательный потенциал (ниже -3 В) сигнала интерфейса, а состоянию "выключено" и логическому нулю - положительный (выше +3 В). Назначение сигналов интерфейса приведено в таблице 3.

Таблица 3

Сигнал

Назначение

PG

Защитная земля, соединяется с корпусом устройства и экраном кабеля

SG

Сигнальная (схемная) земля, относительно которой действуют уровни сигналов

TXD

Последовательные данные - выход передатчика

RXD

Последовательные данные - вход приемника

RTS

Выход запроса передачи данных; состояние "включено" уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением - состояние <включено> является сигналом модему на переключение в режим передачи

CTS

Вход разрешения терминалу передавать данныне. Состояние "выключено" аппаратно запрещает передачу данных. Сигнал используется для аппаратного управления потоками данных

DTR

Выход сигнала готовности терминала к обмену данными. Состояние "включено" поддерживает коммутируемый канал в состоянии соединения

DSR

Вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу я закончил действия по согласованию с аппаратурой на противоположном конце канала)

DCD

Вход сигнала обнаружения несущей удаленного модема

RI

Вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова

 

При использовании девяти контактного штекера DB9 для подключения к COM-порту будем выполнять соединение по следующей схеме, изображённой на рисунке 7.


Рис. 7.       Схема подключения к COM-порту

                 

         Подключение по такой схеме позволяет осуществлять как приём, так и передачу при минимальном количестве задействованных выводов. Один провод для приёма (RXD), второй для передачи (TXD) и сигнальная земля, относительно которой изменяются уровни входных и выходных сигналов.

         Как уже было сказано, для согласования уровней сигналов RS-232 и трансивера используем микросхему MAX232. Рассмотрим её типовую схему включения, изображённую на рисунке 8.


Рис. 8.       Типовая схема включения MAX232

Очевидно, что выход порта (TXD) будет подключаться к одному из входов R (выводы 8 и 13) микросхемы MAX232, а вход (RXD) к одному из выходов Т (выводы7 и 14). Для передачи будем использовать вывод 13 - вход, соответствующим выходом которого является вывод 12. Для приёма используем вывод 14 – выход, соответствующим входом которого является вывод 11. Такой вариант подключения существенно упростит разработку печатной платы из-за удобного расположения используемых выводов.

Теперь остаётся разобраться с передачей преобразованного сигнала непосредственно к трансиверу. Для этого рассмотрим его интерфейс. Трансивер имеет 9 выводов. Их назначение описано в таблице 4.


Таблица 4

№ вывода

Название

Назначение

1

Antenna

Вывод для подключения антенны сопротивлением 50 Ом.

2

RF Ground

Заземление высокочастотного тракта (антенны). Соединяется с общей землёй.

3

RSSI

Индикатор уровня принимаемого сигнала.

4

Busy Output

Цифровой выход, информирующий о том, что трансивер готов к получению информации от компьютера.

5

Serial Data Out

Цифровой информационный выход, передающий информацию, принимаемую трансивером.

6

Serial Data In

Цифровой информационный вход трансивера.

7

Host Ready

Input

Цифровой вход, информирующий трансивер о том, что компьютер готов принять информацию от трансивера.

8

Vcc

Напряжение питания в диапазоне  3.6 - 5,5 В.

9

Ground

Заземление питания.


Из таблицы видно, что два вывода (1 и 2) используются для подключения антенны, два (8 и 9) для питания, два (5 и 6) – информационные и три (3,4 и 7) – служебные (управляющие). Один из информационных выводов является выходом приёмника (5- Serial Data Out), другой входом передатчика (6 - Serial Data In). Остаётся только подать преобразованное до нужного уровня напряжение с TTL выхода MAX232 на вход трансивера, а его выход соединить со TTL входом MAX232.

Напряжение питания трансивера и микросхемы MAX232 совпадают и равны +5 В, что позволяет подключать их к одному источнику питания без использования дополнительного преобразования напряжения.

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

Рассчитанная электрическая принципиальная схема приёмо-передающего модуля изображена в приложении 1 на рисунке П1.1.











 



4.     Разработка печатной платы приёмо-передающего модуля

Так как высокочастотная часть только одна – это соединение антенны и антенного входа трансивера, то особых требований к длине и ширине дорожек, а так же расстоянию между дорожками не предъявляем. Выполняем разводку одним слоем и как можно плотнее с целью уменьшения геометрических размеров приёмо-передающего модуля. Площадку для крепления антенны располагаем непосредственно рядом с соответствующим выводом трансивера и как можно ближе к краю печатной платы для удобного вывода её из корпуса модуля.

Печатная плата изготавливается из одностороннего фольгированного текстолита толщиной 1 мм методом травления. Со стороны проводников плата покрывается диэлектрическим слоем лака за исключением мест крепления (припаивания) элементов. Диаметр монтажных отверстий для элементов равен 1мм. Для крепления разъёма питания DJK-02B делаются прямоугольные отверстия размером 3х0,5 мм.

Разводка печатной платы изображена на рисунке 9 в масштабе 2:1. Геометрические размеры готовой печатной платы 47х40 мм.


Рис.9.        Разводка печатной платы

        

 












5.     Обоснование требований к электрическим параметрам источника питания и выбор возможного его типа.

         Требования к источнику питания предъявляются с учётом полученного энергопотребления и требуемой стабильности питающего напряжения. 

         Требуется внешний источник питания, подключаемый к модулю через стандартный DC разъём DJK-02B. Напряжение питания +5 В. Максимальный ток, потребляемый трансивером ER400TRS, составляет 23 мА, а микросхемой MAX232 – 10 мА. С учётом дополнительных потерь и запаса по току, источник питания должен отдавать в нагрузку ток не менее 50 мА. Значение напряжения питания не должно отклоняться от номинального не более чем на 25мВ. Это требование, предъявляемое трансивером к питанию. Учитывая это, рассчитаем максимально допустимый коэффициент пульсаций: 

К = Um/U0

 где Um –амплитуда отклонения напряжения питания, U0 – напряжение питания .

К= 0,025/5 = 0,005

         Т.е. требуется стабилизированный источник питания с  коэффициентом пульсаций не более 0,005.

         Полученные требования к источнику питания:

                  

                            напряжение питания  -  5 В;

                            ток, отдаваемый в нагрузку  - не менее 50 мА;

6.   Выбор типа антенны.

Для осуществления связи подойдёт любая антенна для частоты 433,92 МГц. Другим вариантом может быть самостоятельное изготовление антенны. Им и воспользуемся. При этом отпадает необходимость монтажа разъёма для крепления антенны, т.к. в этом случае она будет припаяна непосредственно к плате.

Будем использовать рассчитанный вариант антенны для частоты 433,92 МГц, предложенный в [6] и изображённый на рисунке 10.

Рис. 10.     Эскиз антенны

         Антенна выполняется из отрезков медной проволоки в эмалевой изоляции. Полная длина антенны, вместе с катушкой индуктивности около 68 нГн, составляет 90 мм.





7.     Выбор и обоснование модели и протоколов взаимодействия компьютеров в сети.

        

         Все компьютеры одной сети должны быть настроены на одинаковую скорость работы в радио эфире. Каждый компьютер сети должен иметь свой адрес, отличный от остальных. Адресом компьютера может являться любое десятичное чисто в диапазоне от 0 до 255. Это означает, что одной сети может принадлежать не более 256 компьютеров. Программно реализован пакетный обмен информацией. Такой принцип обмена позволяет не монополизировать общий эфир одним компьютером в момент передачи.

         Разработанное программное обеспечение позволяет принимать и отправлять файлы, а также осуществлять обмен короткими текстовыми сообщениями. Каждый пакет (порция информации) должен доставляться конкретному получателю, в то время как у других пользователей доступ к этой информации должен отсутствовать. Поэтому в пакете содержится как адрес получателя, так и адрес отправителя. Для проверки достоверности принятых данных в пакет добавляется информация о контрольной сумме. Для текстовых сообщений установим размер пакета равный 100 байтам. Структура такого пакета изображена на рисунке 11.

        

Рис. 11.     Структура пакета сообщения

         Видно, что текстовое сообщение не должно превышать 95 байт (символов).

         При обмене файлами компьютер-получатель должен иметь информацию о размере получаемого файла и его имени. Поэтому в  пакет добавляются 12 байт имени файла и 4 байта, определяющие его размер. Каждая посылка несёт в себе 300 байт информации файла. Структура пакета при передаче файлов изображена на рисунке 12.


Рис. 12.     Структура пакета передачи файлов

         Между передачей пакетов делается секундная технологическая пауза. Такие установленные размеры пакетов позволяют надолго не занимать эфир и осуществлять попеременную передачу всеми компьютерами сети.

        






 

8.     Разработка алгоритмов сетевой программы

         Сетевая программа должна работать четырёх режимах:

                   -        приём сообщения;

                   -        отправка сообщения;

                   -        приём файла;

                   -        отправка файла.

         Прежде чем отправлять пакет информации его нужно сформировать. Чтобы максимально уменьшить объём служебной информации в пакете будем кодировать значение размера файла и контрольной суммы. Рассмотрим принцип кодирования на примере. Допустим, что размер файла составляет 8573291 байт. Разобьём последовательно это число на части по две цифры, начиная с единиц.

8 | 57 | 32 | 91

         Очевидно, что число 91 означает количество единиц. Число 32 – количество сотен, 57 – количество десятков тысяч и 8 – количество миллионов. Каждое число может принимать значение от 0 до 99, это означает, что его можно описать одним байтом. Поэтому на указание размера файла уходит 4 байта. Нужно заметить, что при этом максимальное значение размера файла, которое можно передать 255999999. Т.е. программа может передавать файлы размером не более 255999999 байт.

         Аналогично кодируется и контрольная сумма, но только тремя байтами. Этого достаточно, т.к. подсчитывается сумма значений 318-ти байт и 318*255 = 81090   - максимальное значение контрольной суммы. При передаче сообщений в пакет добавляется лишь контрольная сумма и 2 адреса.     

На принимающей стороне программа, читая соответствующие байты, восстанавливает значение размера и суммы, перемножая значения байтов и их соответствующих множителей.

 Размер файла = 8*106 + 57*104 + 32*100 + 91 = 8573291 байт.

Перед началом отправки какой-либо информации, нужно убедиться, что эфир свободен для избежания возникновения коллизий (пересечения потоков). Если уже осуществляется передача, то каждый ППМ, независимо от того в каком из режимов он сейчас находится, выставляет флаг наличия входного сигнала в порту компьютера. Поэтому, проверяя установлен ли флаг, можно установить состояние эфира. Организуем эту проверку следующим образом. Обозначим переменную, которая будет служить своего рода  накопительным массивом. Через каждые 10 мили секунд программа проверяет состояние флага. Если эфир свободен, т.е. флаг не установлен, значение переменной увеличивается на единицу, если занят – уменьшается. Переменная принимает только положительные значения, значит, при постоянном уменьшении сохраняет значение ноль. Отправка начнётся после 0,5 секундного «простоя» эфира, т.е. когда значение переменной будет превышать 50. Алгоритм проверки эфира изображён на рисунке 13.

 

Рис. 13.     Алгоритм проверки эфира

         Цикл проверки эфира завершён – начинается передача. Передающая сторона, сформировав пакет в указанной в разделе 7 последовательности, по команде начинает передачу. По различным причинам (помеха, сбой) целостность пакета  и достоверность информации во время передачи может быть нарушена. Поэтому необходимо организовать проверку верности доставки. Для этого и передаётся контрольная сумма в составе каждого пакета. По величине её значение равно сумме значений всех байт пакета за исключением последних трёх, отведённых для самой суммы. Приняв пакет, программа вычисляет сумму всех, кроме трёх последних, байт и сравнивает со значением контрольной суммы, восстановленным из этих трёх байт.  Если значения обеих сумм равны, то это означает, что пакет доставлен верно, и программа уведомляет об этом передающую сторону, посылая сообщение в виде массива из ста единиц. Если же  значения сумм не совпадают (доставлено не верное сообщение), то посылается массив из ста нулей. После этого программа переходит в режим приёма для получения следующего или этого же пакета, в зависимости от результата проверки. Это уведомляющее сообщение не содержит в себе адресов получателя и отправителя, т.к. за время проверки равенства сумм ни один другой компьютер сети не займёт эфир, выжидая 0,5 секундного «простоя» эфира, и отреагирует на это сообщение только передающая сторона, которая его ожидает. После каждой отправки пакета с данными, программа переходит в режим приёма для получения уведомляющего сообщения. Если в принятом сообщении количество единиц превышает 70%, то программа переходит к отправке следующей порции информации. Если в нём более 70% нулей, то программа заново отправляет это же пакет. Критерий в 70% задан для того, чтобы в случае частичного нарушения целостности и изменения значений некоторых байт уведомляющего сообщения, программа на передающей стороне зафиксировала верный результат. Потому как, в случае безошибочного приёма пакета, принимающая сторона перейдёт в режим получения следующего пакета.

         Программа на передающей стороне читает из указанного пользователем файла порции информации и затем передаёт их. Когда файл передан полностью, программа возвращается в меню. На принимающей сторона программа, принимая эти порции, записывает их последовательно в файл с именем, указанным в первом и каждом последующем принимаемом пакете. Приняв файл полностью, программа так же возвращается в меню выбора режима работы. Для передачи/приёма сообщений используются те же принципы, только с другой структурой пакета, указанной в разделе 7.

         Далее изображён алгоритм работы программы.

 




 









 






Краткое описание программы

        

         После запуска программы, по её запросу, пользователь должен ввести номер своего компьютера в сети выбрать скорость связи. После подтверждения выбора на экране появляется меню выбора режима работы.

                   1 – работа с общениями

                   2 – работа с файлами

                   3 - выход

        После выбора пункта 1 (работа с сообщениями) появляется подменю :     1 – отправить сообщение     2 – принять сообщение

Выбрав нужное действие, пользователь вводит требуемую программой информацию, соблюдая, указываемые при этом, требования.

         Те же действия и при выборе пункта 2.

         После выполнения выбранных операций программа переходит в главное меню.

         Для выхода в систему нужно выбрать пункт 3.

 

Заключение

         В результате проведённой работы был разработан приёмо-передающий модуль, отвечающий всем предъявленным к нему требованиям. Его использование позволяет организовать радиосеть с числом пользователей до 128. Компактные размеры, небольшой вес и низкое энергопотребление модуля дают возможность использовать его в сочетании с мобильным переносным компьютером (ноутбуком). Вариант такого применения:  менеджер крупного магазина или склада, перемещая по его территории, может в реальном времени обновлять каталог товаров, что позволяет другим сотрудникам или покупателям иметь самую свежую информацию.

         Разработанное сетевое программное обеспечение даёт возможность пользователям обмениваться текстовыми сообщениями и файлами.

Использование других программ, управляющих модулем через COM-порт, может расширить спектр его применения.
























ПРИЛОЖЕНИЕ 1

Электрическая принципиальная схема приёмо-передающего модуля


















ПРИЛОЖЕНИЕ 2

Перечень элементов

 

ПРИЛОЖЕНИЕ 3

Полный текст программного обеспечения с подробными комментариями

#include <dos.h>

#include <conio.h>

#include <io.h>

#include <stdio.h>

#include <string.h>

#include <fcntl.h>

#include <stdlib.h>

#include <sys\stat.h>

#include <iostream.h>

void main()

{

//       Описание используемых переменных

   unsigned char buf[300],paket[321],filename[12];

     unsigned char name[8],text[90],SMS[100],put[50];

     int i,k,speed,regim,IP,IP_OUT,metka;

     int mill,tys,sotni,ostatok;

     unsigned int handle,bytes,kusok,kuskov,paketsize=300;

     unsigned long dlina,summ,summ_in;

     unsigned char SUMM[100],S1[100];

clrscr();                         // Очистка экрана

//       Меню выбора скорости передачи и номера компьютера

         printf("Выберите нужную скорость:\n\n");

         printf("    1 - 1200 bps\n          2 - 2400 bps\n");

         printf("    3 - 4800 bps\n          4 - 9600 bps\n");

         printf("    5 - 19200 bps\n\n");

         scanf("%i",&speed);

//       Ввод номера данного компьютера

         do

         {

                   printf("\nВведите номер компьютера(от 0 до 128):  ");

                   scanf("%i",&IP);

                   if(IP>128) printf("\n               ! Не более 128 !");

         }

         while (IP>128);


 

//       Вывод на экран информации о выбранных параметрах

cout<<"-------------------------------------------------------------------";

         printf("\nВыбранные параметры:");

         printf("\n\nНомер компьютера:    %i\n",IP);

         if (speed == 1) {speed=96; printf("Скорость связи:    1200 bps\n"); }

         if (speed == 2) {speed=48; printf("Скорость связи:    2400 bps\n"); }

         if (speed == 3) {speed=24; printf("Скорость связи:    4800 bps\n"); }

         if (speed == 4) {speed=12; printf("Скорость связи:    9600 bps\n"); }

         if (speed == 5) {speed=6; printf("Скорость связи:    19200 bps\n"); }

cout<<"-------------------------------------------------------------------";

//                                    НАСТРОЙКА ПОРТА

//       Установка скорости передачи

         outportb(0x3fb,131);        //режим установки скорости

         outportb(0x3f8,speed);

         outportb(0x3fb,3);          //режим приёма/передачи

//       Выбор режима работы

         printf("\n              Порт настроен.");

MENU:     

printf("\nДля начала работы выберите нужный пункт:\n\n\n");

         printf("  1 – Работа с сообщениями \n");

         printf("  2 – работа с файлами     \n");

         printf("  3 - Выход\n");

         scanf("%i",&regim);

         if (regim==1) goto CHAT;

         if (regim==2) goto FILE;

         if (regim==3) exit(1);

//------------------------------------------------------------------------

//      РЕЖИМ ОТПРАВКИ/ПРИЁМА сообщений

CHAT:

inportb(0x3fd);    // снятие флага наличия байта в приёмнике

clrscr();                //  очистка экрана

//       Выбор нужной операции

         printf("\n\nВыбирите нужную операцию:");

         printf("\n\n  1- отправить сообщение  |   2- принять сообщение\n");

         scanf("%i",&regim);

         if (regim==1) goto SEND_SMS;

         if (regim==2) goto RECEIV_SMS;

         clrscr();

SEND_SMS:     //  отправка сообщения

         clrscr();

         printf("\nВведите ваше имя (не более 8 символов):  ");

         scanf("%s",&name);

//       Ввод номера получателя

         printf("\nВведите номер получателя (от 0 до 128): ");

         scanf("%i",&IP_OUT);

//      Ввод текста сообщения

         printf("\n\nВведите текст сообщения (не более 85 символов) ");

         printf("\nВместо пробелов '_':\n");

         scanf("%s",&text);

//       Цикл очистки массива сообщения

         for(i=0;i<100;i++)

         {

                   SMS[i]=0;

         }

//       Формирование массива сообщения

         SMS[0]=IP_OUT;                 // адрес получателя

         SMS[1]=IP;                            // адрес отправителя

         dlina=strlen(name);               // опр. длины имени

         for (i=2;i<(2+dlina);i++)         // цикл добавления к массиву

         {                               // имени отправителя

                   SMS[i]=name[i-2];

         }

         metka=2+dlina;

         SMS[metka]=':';

         metka++;

         dlina=strlen(text);             // длина текста сообщения

         for (i=metka;i<(metka+dlina);i++)   // цикл добавления к массиву

         {                               // текста сообщения

                   SMS[i]=text[i-metka];

         }

         printf("\nВведено сообщение :\n");

//       Вывод на экран введённого сообщения

         for(i=2;i<100;i++)

         {

                   printf("%c",SMS[i]);

         }

//       Подсчёт контрольной суммы

         summ=0;

         for(i=0;i<97;i++)

         {

                   summ=summ+SMS[i];

         }

//       Формирование массива контрольной суммы и её добавление в

//       сообщение

         tys=summ/1000;                                     // сколько тысяч в сумме

         sotni=(summ-tys*1000)/100;                           // сколько сотен без тысяч

         ostatok=summ-tys*1000-sotni*100;       // остаток

         SMS[97]=tys;

         SMS[98]=sotni;

         SMS[99]=ostatok;

//       Проверка свободен ли эфир и ожидание его освобождения

         i=0;

         do

         {       if((inportb(0x3fd)&1)==0) i=i++;

                   else i=i--;

                   i=abs(i);

                   delay(10);

                   inportb(0x3fd);        // сброс флага

         }

         while(i<50);

         printf("\nЭфир свободен.Отправка собщения.");

//       Отправка сообщения

  SEND:

         for(i=0;i<100;i++)

         {

                   while(!(inportb(0x3fd)&32));

                   outportb(0x3f8,SMS[i]);                 //  запись в порт байта

         }

//       Принятие массива контроля суммы

         for(i=0;i<100;i++)

         {

                   while(!(inportb(0x3fd)&1));

                   SUMM[i]=inportb(0x3f8);

         }

//       Подсчёт процента единиц

         k=0;

         for(i=0;i<100;i++)                 

         {

                   if(SUMM[i]==1) k++;

         }

//       Если единиц более 70% - сообщение доставлено верно

         if (k>70)

         {

                   printf("\nСообщение успешно доставлено");

                   goto CHAT;

         }

         else                     //       если менее 70% - повторное отправление

         {

                   delay(1000);

                   goto SEND;

         }

//----------------------------

RECEIV_SMS:                    // режим приёма сообщений

         clrscr();                         //       очистка экрана

//       Снятия флага наличия байта в приёмнике, если он выставлен

         inportb(0x3f8);     

         printf("\n              Ожидание сообщения");

//       Цикл очистки массива сообщений

  AGAIN:

         for(i=0;i<100;i++)

         {

                   SMS[i]=0;

         }

//       Приём сообщения

         for(i=0;i<100;i++)

         {

                   while(!(inportb(0x3fd)&1));

                   SMS[i]=inportb(0x3f8);

         }

//       Проверяется этому компьютеру пакет или нет

         if (SMS[0]==IP)

         {

//   проверка контрольной суммы

                   summ=0;

                  summ_in=0;

                   for(i=0;i<97;i++)

                   {

                            summ=summ+SMS[i];

                   }

         summ_in=(SMS[97]*1000+SMS[98]*100+SMS[99]);

                   if(summ==summ_in)

                   {

                            //  если верное сообщение отправка массива единиц

                            for(i=0;i<100;i++)

                            {

                                      while(!(inportb(0x3fd)&32));

                                      outportb(0x3f8,1);

                            }

//  вывод полученного сообщения

         printf("\nПолучено сообщение от компьютера № %d\n",SMS[1]);

                            for (i=2;i<97;i++)

                            {

                                     printf("%c",S1[i]);

                            }

goto MENU; 

                   }

                   else

                   {

                    //  если не верное сообщение отправка массива нулей

                            for(i=0;i<100;i++)

                            {

                                      while(!(inportb(0x3fd)&1));

                                      outportb(0x3f8,0);

                            }

                            goto AGAIN;

                   }

         }

         else goto AGAIN;

//                 РЕЖИМ ПРИЁМА/ПЕРЕДАЧИ ФАЙЛОВ

FILE:

         clrscr();                         //       очистка экрана

//       Вывод подменю

         printf("\n           Выберите:");

         printf("n\  1- отправить файл   2- принять файл\n");

         scanf("%i",&regim);

         if (regim==1) goto PEREDACHA;

         if (regim==2) goto PRIOM;

PEREDACHA:

         clrscr();                         //       очистка экрана

//       Ввод номера получателя

         printf("\nВведите номер получателя(от 0 до 128): ");

         scanf("%i",&IP_OUT);

//       Ввод имени и пути

         printf("\nВведите полное имя файла(не более 12 символов):\n");

         scanf("%s",&filename);

         printf("\nВведите путь к файлу (файл не более 60 мб):\n");

         scanf("%s",&put);

//   Чтение файла или вывод ошибки чтения

         if ((handle = open(put, O_RDONLY | O_BINARY)) == -1)

         {

                   printf("\nОшибка открытия файла\n");

                   getch();

                   exit(1);

         }

//   Определение длины файла

         dlina=filelength(handle);

         printf("        Длина файла: %li \n",dlina);

//   Определения количества пакетов

         kuskov=dlina/paketsize;

//   Если остаток то увеличиваем количество пакетов на 1

         if (paketsize*kuskov<dlina)   kuskov=kuskov+1;

         printf("        Всего пакетов = %i \n",kuskov);

         kusok=0;

 

//   Ограничение размера пакета если файл меньше его размера

         if (dlina<paketsize) paketsize=dlina;

//   Вычислене значений байтов размера файла

         mill=dlina/1000000;

         tys=(dlina-mill*1000000)/10000;

         sotni=(dlina-mill*1000000-tys*10000)/100;

         ostatok=dlina-mill*1000000-tys*10000-sotni*100;

// Формирование пакета

         paket[0]=IP_OUT;                         // адрес получателя

         paket[1]=IP;                                    // адрес отправителя

         paket[2]=mill;                                  //

         paket[3]=tys;                                   //

         paket[4]=sotni;                                // размер файла

         paket[5]=ostatok;                            //

         //  добавление имени

         for(i=0;i<12;i++)

         {

                   paket[i+6]=filename[i];

         }


REED:

         if ((bytes = read(handle,buf,paketsize)) == -1)

         {

                   printf("Ошибка чтения\n");

                   getch();

                   exit(1);

         }

         else

         {

                   kusok++;

         }




//       Цикл добавления к массиву информации из файла

         for (i=18;i<318;i++)         

         {                              

                   paket[i]=buf[i-18];

         }

 

//       Подсчёт контрольной суммы

         summ=0;

         for(i=0;i<318;i++)

         {

                   summ=summ+paket[i];

         }

//       Формирование массива контрольной суммы и её добавление в //         сообщение

         tys=summ/10000;

         sotni=(summ-tys*10000)/100;

         ostatok=summ-tys*10000-sotni*100;

         paket[318]=tys;

         paket[319]=sotni;

         paket[320]=ostatok;

SENDFILE:

//       Проверка свободен ли эфир и ожидание его освобождения

         i=0;

         do

         {       if((inportb(0x3fd)&1)==0) i=i++;

                   else i=i--;

                   i=abs(i);

                   delay(10);

                   inportb(0x3fd);        // сброс флага

         }

         while(i<50);

//   Передача пакета

         for(i=0;i<321;i++)

         {

                   while(!(inportb(0x3fd)&32));

                   outportb(0x3f8,paket[i]);                          //       загрузка байта в порт

         }


//       Принятие массива контроля суммы

         for(i=0;i<100;i++)

         {

                   while(!(inportb(0x3fd)&1));

                   SUMM[i]=inportb(0x3f8);

         }

//       Подсчёт процента единиц

         k=0;

         for(i=0;i<100;i++)                 

         {

                   if(SUMM[i]==1) k++;

         }

//       Если единиц более 70% - сообщение доставлено верно

         if (k>70)

         {

         gotoxy(30,12);

         delline();

         delay(1000);

//       Вывод на экран процента отправленной информации

         if(kusok==kuskov)

         {

                   printf("Отправлено 100 %");

         }

         else

         {

                   printf("Отправлено %i %",(100/kuskov)*kusok);

         }

//       Проверка последний ли пакет и вычисление его размера

         if (kusok==kuskov)                //       если верно – файл доставлен

         {                                              //       вывод сообщения

                   printf("\n\n\nФайл успешно доставлен");

                   printf("\nДля переходя в меню нажмите любую клавишу");

                   getch();

                   goto MENU;

         }

         if (kusok==(kuskov-1))          //       если верно - остался последний

                   {                          

//       вычисление размера последнего пакета    

                            paketsize=(dlina-paketsize*(kuskov-1));

                            goto REED;

                   }

                  if (kusok<kuskov) goto REED;

         }

         else

         {

                   goto SENDFILE;

         }

//------------------

PRIOM:

//       Cнятия флага наличия байта в приёмнике если есть

         inportb(0x3f8);     

         clrscr();                                  //       очистка экрана

         printf("\n              Ожидается файл\n\n\n");

         kusok=0;

  RECF:    

//       Начало приёма при наличии сигнала в приёмнике

for(i=0;i<318;i++)

         {

                   while(!(inportb(0x3fd)&1));

                   paket[i]=inportb(0x3f8);

         }

//       Проверка по адресу пришёл файл или нет

//       Если нет то возврат в режим приёма

         if(paket[0]==IP)

         {

//       Если первый пакет, то вывод общей информации о файле

            if(kusok==0)   

            {

                   IP_OUT= paket[1];

                   printf("\nПринимается файл от компьютера № %d",paket[1]);

                   for(i=0;i<12;i++)

                   {

                            filename[i]=paket[i+6];

                   }

                   printf("\nИмя файла - %s",filename);

                   dlina=paket[2]*1000000+paket[3]*10000+paket[4]*100+paket[5];

                   printf("\nРазмер файла - %li байт",dlina);

//  Создание файла для записи пакетов

                   if ((handle = open(filename, O_CREAT | O_TEXT)) == -1)

                   {

                            perror("\nОшибка создания файла");

                            getch();

                            exit(1);

                   }

            }

            else;

//       Вычисление контрольной суммы

                   summ_in=paket[318]*10000+paket[319]*100+paket[320];

                   summ=0;

                   for(i=0;i<318;i++)

                   {

                            summ=summ+paket[i];

                   }

         if(summ==summ_in)

                   {

//       Если верное сообщение отправка массива единиц

                   for(i=0;i<100;i++)

                   {

                            while(!(inportb(0x3fd)&32));

                            outportb(0x3f8,1);

                   }

//       О пределения количества пакетов

                   kuskov=dlina/paketsize;

//       Если остаток то увеличиваем количество пакетов на 1

                   if (paketsize*kuskov<dlina)   kuskov=kuskov+1;

                   printf("\nВсего пакетов = %i ",kuskov);

//       Ограничение размера пакета если файл меньше его размера

                   if (dlina<paketsize) paketsize=dlina;

//        Выделение содержимого исходного файла из пакета

                   for(i=0;i<paketsize;i++)

                   {

                            buf[i]=paket[i+18];

                   }

//       Отсчёт принятых пакетов

                   kusok=kusok+1;

//       Запись пакета в файл

                   write(handle,buf,paketsize);

//       Определение количества оставшихся пакетов для приёма

                   gotoxy(30,20);

                   delline();

                   if(kusok==kuskov)

                   {

                            printf("Принято 100 %");

                   }

                   else

                   {

                            printf("Принято %i %",(100/kuskov)*kusok);

                   }

//       Проверка последний ли пакет и вычисление его размера

         if (kusok==kuskov)

         {

                  printf("\n\n\nФайл успешно принят");

                  printf("\nДля переходя в меню нажмите любую клавишу");

//       Закрытие доступа к файлу

                   close(handle);

                   getch();

                   goto MENU;

         }

//       Если осталось принять один пакет, то вычисляется его размер

         if (kusok==(kuskov-1))

                   {

                            paketsize=(dlina-paketsize*(kuskov-1));

                            goto REED;

                   }

         if (kusok<kuskov) goto RECF;

                   }

         else

                   {

//       Если не верное сообщение отправка массива нулей

                            for(i=0;i<100;i++)

                            {

                                      while(!(inportb(0x3fd)&1));

                                      outportb(0x3f8,0);

                            }

         //       повторный приём пакета

                            goto RECF;

                   }

         }

//       файл не по этому адресу - возврат в режим приёма

         else  goto RECF;

}

//       КОНЕЦ ПРОГРАММЫ

ПРИЛОЖЕНИЕ 4

Официальная техническая документация фирмы LPRS.

Микросборка ER400TRS.






















ПРИЛОЖЕНИЕ 5

Официальная техническая документация фирмы MAXIM.

Микросхема MAX232.

Список литературы

1. ГОСТ 19.003-80.  Единая система программной документации. Схемы алгоритмов и программ. Обозначения условные графические.

2. Подбельский В.В.  Язык «Си++» . – М.: «Финансы и статистика», 1999. – 559 с.

3. Фролов А.В., Фролов Г.В. Аппаратное обеспечение персонального компьютера. – М.: Диалог-МИФИ, 1997. – 304 с.

4. Официальная техническая документация фирмы LPRS.
Микросборка ER400TRS.

5. Официальная техническая документация фирмы MAXIM.
Микросхема MAX232.

6.   

Похожие работы на - Приёмо-передающий модуль компьютерной радиосети

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!