2-РПЗ final (1061382), страница 2
Текст из файла (страница 2)
Перед началом передачи данных требуется установить соединение между двумя сторонами, тем самым проверяется доступность приемного устройства и его готовность воспринимать данные. Для этого передающее устройство посылает специальную команду: запрос на соединение, сопровождаемую ответом приемного устройства, например о приеме или отклонении вызова.
Также необходимо информировать пользователя о неисправностях в физическом канале, поэтому для поддержания логического соединения необходимо предусмотреть специальный кадр, который непрерывно будет посылаться с одного компьютера на другой, сигнализируя тем самым, что логическое соединение активно.
-
Защита передаваемой информации.
При передаче данных по линиям могут возникать ошибки, вызванные электрическими помехами, связанными, например, с шумами, порожденными коммутирующими элементами сети. Эти помехи могут вызвать множество ошибок в цепочке последовательных битов.
Метод четности/нечетности контрольная сумма блока не обеспечивают надежного обнаружения нескольких (например, двух) ошибок. Для этих случаев чаще всего применяется альтернативный метод, основанный на полиномиальных кодах. Полиномиальные коды используются в схемах покадровой (или поблочной) передачи. Это означает, что для каждого передаваемого кадра формируется (вырабатывается) один-единственный набор контрольных разрядов, значения которых зависят от фактического содержания кадра и присоединяются передатчиком к “хвосту” кадра. Приемник выполняет те же вычисления с полным содержимым кадра; если при передаче ошибки не возникли, то в результате вычислений должен быть получен заранее известный ответ. Если этот ответ не совпадает с ожидаемым, то это указывает на наличие ошибок.
Опишем кратко математический аппарат циклического кодирования.
Код, в котором кодовая комбинация, полученная путем циклического сдвига разрешенной кодовой комбинации является также разрешенной кодовой комбинацией называется циклическим (полиномиальным, кодом с циклическими избыточными проверками-ЦИП).
Сдвиг осуществляется справа налево, при этом крайний левый символ переносится в конец комбинации.
Циклический код относится к линейным, блочным, корректирующим, равномерным кодам.
В циклических кодах кодовые комбинации представляются в виде многочленов, что позволяет свести действия над кодовыми комбинациями к действием над многочленами (используя аппарат полиномиальной алгебры).
Циклические коды являются разновидностью систематических кодов и поэтому обладают всеми их свойствами. Первоначально они были созданы для упрощения схем кодирования и декодирования. Их эффективность при обнаружении и исправлении ошибок обеспечила им широкое применение на практике.
Циклические коды используются в ЭВМ при последовательной передаче данных.
Сдвиг справа налево осуществляется путем умножения полинома на x.
Операции сложения и вычитания выполняются по модулю 2. Они являются эквивалентными и ассоциативными.
Операция деления является обычным делением многочленов, только вместо вычитания используется сложение по модулю 2.
Идея построения циклических кодов базируется на использовании неприводимых многочленов. Неприводимым называется многочлен, который не может быть представлен в виде произведения многочленов низших степеней, т.е. такой многочлен делиться только на самого себя или на единицу и не делиться ни на какой другой многочлен. На такой многочлен делиться без остатка двучлен xn+1.Неприводимые многочлены в теории циклических кодов играют роль образующих полиномов.
Чтобы понять принцип построения циклического кода, умножаем комбинацию простого k-значного кода Q(x) на одночлен xr , а затем делим на образующий полином P(x), степень которого равна r. В результате умножения Q(x) на xr степень каждого одночлена, входящего в Q(x), повышается на r. При делении произведения xrQ(x) на образующий полином получается частное C(x) такой же степени, как и Q(x).Результат можно представить в виде Q(x) xr R(x)
= C(x) + ,
P(x) P(x)
где R(x) - остаток от деления Q(x) xr на P(x).
Частное C(x) имеет такую же степень, как и кодовая комбинация Q(x) простого кода, поэтому C(x) является кодовой комбинацией этого же простого k-значного кода. Следует заметить, что степень остатка не может быть больше степени образующего полинома, т.е. его наивысшая степень может быть равна (r-1). Следовательно, наибольшее число разрядов остатка R(x) не превышает числа r.
Умножая обе части равенства (1) на P(x) и произведя некоторые перестановки, получаем: F(x) = C(x) P(x) = Q(x) xr + R(x)
Таким образом, кодовая комбинация циклического n-значного кода может быть получена двумя способами:
1) умножение кодовой комбинации Q(x) простого кода на одночлен xr и добавление к этому произведению остатка R(x) , полученного в результате деления произведения Q(x) xr на образующий полином P(x);
2) умножения кодовой комбинации C(x) простого k-значного на образующий полином P(x).
При построении циклических кодов первым способом расположение информационных символов во всех комбинациях строго упорядочено - они занимают k старших разрядов комбинации, а остальные (n-k) разрядов отводятся под контрольные.
При втором способе образования циклических кодов информационные и контрольные символы в комбинациях циклического кода не отделены друг от друга, что затрудняет процесс декодирования.
Как было указано выше, циклическое кодирование обладает свойством избыточности (буквально информация удваивается), и так же данный алгоритм кодирования обладает свойствами исправления ошибки в одном бите.
Алгоритм кодирования состоит в том, что каждый байт, подлежащий кодированию, разбивается на части по 4 бита, после чего делится на полином и результат деления, 1 байт, передаётся по сети, т.е. в итоге из каждого байта получается два. На принимающей стороне производится обратные операции, определяем частное и остаток. По остатку определяем вектор ошибки, если остаток нулевой, то данные дошли безошибочно, если же ненулевой, то отсылаем отрицательную квитанцию — просьбу повторить посылку пакета.
-
Формат кадров.
Кадры, передаваемые с помощью функций канального уровня, имеют различное назначение. Выделены супервизорные и информационные кадры.
-
Служебные супервизорные кадры.
Эти кадры используются для передачи служебной информации и реализуют следующие функции канального уровня: установление и разъединение логического канала, подтверждение приема информационного кадра без ошибок, запрос на повторную передачу принятого с ошибкой кадра. Формат эти кадров:
| StartByte | Type | StopByte |
| Флаг начала кадра | Тип супервизорного кадра | Флаг конца кадра |
-
Супервизорные кадры передачи параметров.
Супервизорные кадры передачи параметров используются для синхронизации параметров COM-портов, как принимающего, так и отправляющего. Кадр данного типа формируется когда на одном из компьютеров изменяются параметры. Формат эти кадров:
| StartByte | Type | Data | StopByte |
| Флаг начала кадра | Тип супервизорного кадра | Параметры СОМ-порта | Флаг конца кадра |
-
Информационные кадры.
Информационные кадры применяются для передачи закодированных циклическим кодом пользовательских сообщений. Формат эти кадров:
| StartByte | Type | Data | StopByte |
| Флаг начала кадра | Тип супервизорного кадра | Закодированные данные (текстовая строка) | Флаг конца кадра |
Кадр можно разделить на несколько блоков – флаг начала кадра, тип кадра, данные и флаг конца кадра.
Флаги начала и конца кадра представляют собой байты, с помощью которых программа выделяет кадр, определяя соответственно начало и конец кадра.
Поле типа кадра обеспечивает правильное определение и распознавание разновидностей кадров и обработки их соответствующими процедурами.
Данные представляют собой либо закодированную строку в информационном кадре или параметры порта в супервизорном кадре передачи параметров.
-
Прикладной уровень.
Функции прикладного уровня обеспечивают интерфейс программы с пользователем через систему форм и меню. Прикладной уровень предоставляет нижнему уровню текстовое сообщение.
На данном уровне обеспечивается вывод принятых и отправленных сообщений в окно диалога пользователей.
Пользовательский интерфейс выполнен в среде Visual Studio 2010. При его разработке учитывались рекомендации по простоте, удобству и функциональности интерфейса.
При запуске программы появляется форма, в которой можно ввести имена собеседников (см рис. Рисунок 2). При последующем запуске программы имена будут восстановлены из файла настроек, и потребуется только подтвердить их.
Рисунок 2
Главным окном программы является окно «Чат». В данной форме есть следующие возможности:
-
Задавание настроек порта
-
Набор и редактирование сообщений
-
Отображение текущей истории
-
Открытие/закрытие выбранного последовательного порта
-
Подключение/разъединение
-
Мониторинг активности соединения
Рисунок 3
Рисунок 4
ри помощи пункта меню «Вид» пользователь имеет возможность поменять стиль главного окна приложения «Чат» ( рис.Рисунок 4).
При помощи пункта меню «История» пользователь может открыть необходимый ему файл истории в специальной форме ( рис. Рисунок 5 и Рисунок 6).
Рисунок 5
Рисунок 6
При помощи пункта меню «Справка» пользователь может получить информацию о создателях программы (рис .Рисунок 7)
Рисунок 7















