РПЗ (1061428), страница 2
Текст из файла (страница 2)
Количество бит данных может составлять 5, 6, 7 или 8 (5- и 6-битные форматы распространены незначительно). Количество стоп-бит может быть 1, 1,5 или 2 (“полтора бита” означает только длительность стопового интервала).
В данной работе используются следующие параметры передачи данных:
-
число информационных бит – 8;
-
количество стоповых бит – 1;
-
бит паритета (контроля четности) – не используется;
-
скорость обмена – 9600.
-
Реализация физического уровня.
-
Открытие порта.
В ОС Windows доступ к COM-портам предоставляется посредством файловых интерфейсов. Для работы с портом - функции пространства имён System.IO.Ports из библиотеки классов .NET FRAMEWORK.
ComPort - объект класса SerialPort, который используется для определения COM-порта.
ComPort.Open() – функция открытия COM-порта.
После открытия порта производится его сброс. Порт очищается сам при считывании всех байтов с помощью функции ComPort.ReadExisting().
Вызов этой функции позволяет решить две задачи: очистить очереди приема/передачи в драйвере и завершить все находящиеся в ожидании запросы ввода/вывода.
Установка параметров COM-порта осуществляется с помощью функций:
ComPort.DataBits() – устанавливается число информационных битов;
ComPort.Parity() – осуществляется проверка четности;
ComPort.PortName() - имя порта;
ComPort.StopBits() - число стоповых битов;
ComPort.ReadBufferSize() – устанавливается размер буфера чтения;
ComPort.WriteBufferSize() - устанавливается размер буфера записи;
ComPort.Handshake() - протокол установления связи;
Далее производится настройка тайм-аутов чтения и записи порта с помощью функций:
ComPort.ReadTimeout () - таймаут чтения;
ComPort.WriteTimeout() - таймаут записи;
Тайм-ауты необходимы для правильной работы функций чтения из порта и записи в порт.
-
Закрытие порта.
Перед закрытием порта производится его сброс. Порт очищается сам при считывании всех байтов с помощью функции ComPort.ReadExisting().
Закрытие порта осуществляется с помощью функции ComPort.Close().
-
Передача и прием данных
Для передачи/приема данных нет специальных функций - выполняются по логике программы с помощью операций записи/чтения из буферов порта.
Функция для передачи данных - ComPort.Write (byte[] InfBytes, int offset, int count);
Функция приема данных – byte ComPort.ReadByte();
Функция считывания символов с порта при приеме - byte ComPort.ReadByte().
-
КАНАЛЬНЫЙ УРОВЕНЬ.
-
Защита передаваемой информации.
-
При передаче данных по линиям, входящим в коммутируемую сеть, чаще всего возникают ошибки, обусловленные электрическими помехами. Эти помехи в свою очередь могут вызвать ошибки в цепочке или пакете последовательных битов.
Для обнаружения ошибок применяют разнообразные корректирующие коды. Например: линейный код, код Хемминга, циклический код, логический код 4B/5B.
Для практической реализации циклических кодов могут быть использованы схемы с регистрами сдвига и обратными связями, или таблицы (в программе используется полином X3+X+1).
В рамках данной курсовой работы необходима реализация алгоритма кодирования циклическим кодом.
Рассмотрим алгоритм циклического кода:
1. Задана информационная последовательность m(x). Умножить заданный полином степени (k-1) на х(n-k), т.е. сдвинуть в сторону старших разрядов на (n-k); где n = r+k , r - степень образующего полинома , k - число информационных разрядов данной последовательности;
2. Получить остаток от деления полинома х(n-k)*m(x) на g(x) - образующий полином. Степень остатка ≤ n-k-1
3. Объединить остаток р(х) и исходный полином х(n-k)*m(x) для получения кодового слова; p(x)@ х(n-k)*m(x), где @ - конкатенация;
Декодирование циклического кода:
V(x) - передаваемый кодовый полином; r(x) - принятый;
r(x)=g(x)*q(x)+S(x), где q(x) - частное, S(x) - остаток от деления переданного полинома на порождающий полином;
S(x)=S0+S1*x+...+S(n-k-1)*x(n-k-1) - синдром ошибки (если S(x) = 0, ошибки нет или она не обнаружена)
r(x)=V(x)+e(x), где e(x) - вектор ошибки;
e(x)=V(x)+q(x)*g(x)+S(x)=[m(x)+q(x)]*g(x)+S(x)
Задача декодирующего устройства - оценка вектора g(x) по синдрому ошибки.
По значению синдрома ошибки определяется бит, в котором была обнаружена ошибка:
| Синдром | Номер бита |
| 001 | 0 |
| 010 | 1 |
| 100 | 2 |
| 011 | 3 |
| 110 | 4 |
| 111 | 5 |
| 101 | 6 |
-
Передача данных.
В программе ведущей станцией автоматически назначается станция, инициирующая передачу. Компьютер – передатчик после выбора пользователем файла для передачи передаёт компьютеру-приёмнику информационные кадры, содержащие имя файла, информационные байты файла (структуру кадра см. на листе «Структура протокольных блоков данных»). Компьютер – приёмник принимает эти кадры и компьютеру – передатчику отправляет положительную квитанцию на каждый из этих кадров. В случае ошибки передачи компьютер – приёмник передаёт компьютеру – передатчику отрицательную квитанцию и передатчик повторяет передачу.
В случае прихода положительной квитанций на получение заголовка файла и согласия на прием, компьютер-передатчик начинает поблочную передачу файлов, дожидаясь прихода положительной квитанции после отсылки каждого блока. В случае ошибки передачи компьютер – приёмник передаёт компьютеру – передатчику отрицательную квитанцию и передатчик повторяет передачу.
После успешной передачи файлов программа возвращается в исходное состояние.
-
Функции кодирования/декодирования.
Кодирование и декодирование данных в программе осуществляется циклическим кодом с помощью функций:
Кодирование - byte[] Kodir(byte[] Ish, int k, string PorPolinom);
Декодирование - byte[] Dekodir(string Ish, int k, string PorPolinom);
Проверка правильности полученного кода - bool Proverka(string Ish, int k, string PorPolinom).
В этих функциях int k - число кодируемых за раз битов.
-
Форматы кадров.
Типы кадров:
I - информационный;
A - квитанция с подтверждением об успешной передаче;
R - отрицательная квитанция;
Y - пользователь согласен и готов принимать файл;
N - пользователь отклонил прием файла;
E – конец передачи.
Информационный кадр.
Для передачи информационных кадров:
[стартовый байт][тип кадра][длина информационной части (в байтах)][Информационные байты][стоповый байт] - все поля, кроме информационного - по одному байту
Управляющий кадр.
Структура управляющего кадра:
[стартовый байт][тип кадра][стоповый байт]
Передаем заголовок, затем ждем: если получаем Y - кадр, то передаем сам файл, если получаем N - кадр - ничего не делаем.
E – кадр указывает на то, что передан весь файл.
-
ПОЛЬЗОВАТЕЛЬСКИЙ УРОВЕНЬ
-
Формы
Главная форма:
На главной форма присутствуют следующие элементы:
-
Надписи
-
«Курсовая работа по курсу «Сетевые технологии»
-
Надпись состояния подключения («Подключение: Отсутствует», «Подключение: Активно»)
-
Кнопка «Отправить файл» для выбора и отправки файла
Меню
-
Действия
-
Отправить файл – открывает диалог для выбора отправляемого файла
-
Закрыть – закрывает окно программы
-
Справка
-
О программе – выдает диалоговое сообщение с назначением программы и кратким описанием ее применения:
-
Разработка – выдает диалоговое сообщение с информацией о разработке программы:
Во время передачи файла на принимающей машине появляется надпись «Идет прием файла. Подождите…»:
Во время передачи файла на передающей машине появляется полоса заполнения показывающая ход выполнения передачи:
12















