Галкин В.А., Ламожапов Ю.С. - Методические указания по выполнению курсовой работы (1053874), страница 2
Текст из файла (страница 2)
getStopBits() – возвращает число стоп-битов.
getDataBits() – возвращает число бит данных.
getFlowControlMode() – возвращает режим управления обменом данными.
getParity() – возвращает установленный контроль четности.
isCD() – возвращает значение CD бита порта.
isCTS() – возвращает значение CTS бита порта.
isDSR() – возвращает значение DSR бита порта.
isDTR() – возвращает значение DTR бита порта.
isRI() – возвращает значение RI бита порта.
isRTS() – возвращает значение RTS бита порта.
notifyOnBreakInterrupt() – уведомляет об прерывании разрыва линии.
notifyOnCarrierDetect() – уведомляет об изменении бита CD.
notifyOnDataAvailable() – уведомляет об приходе байт в буфер COM-порта.
notifyOnDSR() – уведомляет об изменении бита DSR.
notifyOnFramingError() – уведомляет об ошибке FE .
notifyOnOutputEmpty() – уведомляет о пустоте выходного буфера.
notifyOnOverrunError() – уведомляет об ошибке OE.
notifyOnParityError() – уведомляет об ошибке PE.
notifyOnRingIndicator() – уведомляет об изменении бита RI.
removeEventListener() – удаляет обработчик событии.
setSerialPortParameters() – устанавливает параметры COM-порта
Методы, наследуемые от класса CommPort:
getOutputStream() – возвращает указатель на входной буфер.
getInputStream() - возвращает указатель на выходной буфер.
open() – открывает COM-порт.
close() – закрывает COM-порт.
1.2.4. Класс SerialPortEvent.
Этот класс определяет возможные события, происходящие на COM-порте.
Поля класса:
BI – сигнал BI.
CD – сигнал CD.
CTS – сигнал CTS.
DSR – сигнал DSR.
FE – сигнал ошибки FE.
OE – сигнал ошибки OE.
PE – сигнал ошибки PE.
RI – сигнал RI.
OUTPUT_BUFFER_EMPTY – сигнал отсутствия данных в выходном буфере.
DATA_AVAILABLE – сигнал наличия данных в входном буфере.
Методы класса:
getEventType() – возвращает тип события.
getNewValue() - возвращает текущее значение измененного сигнала
getOldValue() – возвращает предыдущее значение измененного сигнала
2. Описание функций канального уровня.
На канальном уровне выполняются следующие функции:
-
Запрос логического соединения;
-
Управление передачей кадров;
-
Обеспечение необходимой последовательности блоков данных, передаваемых через межуровневый интерфейс;
-
Контроль и обработка ошибок;
-
Проверка целостности логического соединения;
-
Посылка подтверждения.
-
Запрос на разъединение логического соединения.
2.1. Протокол связи.
В основном протокол содержит набор соглашений или правил, которого должны придерживаться обе стороны связи для обеспечения получения и корректной интерпретации информации, передаваемой между двумя сторонами. Таким образом, помимо управления ошибками и потоком протокол связи регулирует также такие вопросы, как формат передаваемых данных — число битов на каждый элемент и тип используемой схемы кодирования, тип и порядок сообщений, подлежащих обмену для обеспечения (свободной от ошибок и дубликатов) передачи информации между двумя взаимодействующими сторонами.
Перед началом передачи данных требуется установить соединение между двумя сторонами, тем самым проверяется доступность приемного устройства и его готовность воспринимать данные. Для этого передающее устройство посылает специальную команду: запрос на соединение и ожидает ее приема с другого COM-порта. Все компьютеры, находящиеся в сети и готовые к установке соединения, ретранслируют чужие запросы на соединение.
Также необходимо информировать пользователя о неисправностях в физическом канале, поэтому для поддержания логического соединения необходимо предусмотреть специальный кадр, который непрерывно будет посылаться с одного компьютера на другой, сигнализируя тем самым, что логическое соединение активно. В протоколе этот кадр и кадр запроса на соединение может быть один и тот же.
2.2. Защита передаваемой информации.
При передаче данных по линиям могут возникать ошибки, вызванные электрическими помехами, связанными, например, с шумами, порожденными коммутирующими элементами сети. Эти помехи могут вызвать множество ошибок в цепочке последовательных битов. Контроль ошибок либо совершается функциями COM-порта (это методы контроля ошибок из-за увеличения темпа работы(overrun error), ошибок четности(parity error) и ошибок кадрирования (faming error)), если это определено заданием, либо применением циклического кода. Исправление ошибок необходимо реализовать средствами канального уровня методом ARQ.
2.3. Примеры форматов кадров.
Все кадры могут иметь одинаковую структуру, представленную ниже:
Стартовый байт | Адрес получателя | Адрес отправителя | Тип кадра | Длина поля данных* | Данные* | Стоповый байт |
1 байт | 1 байт | 1 байт | 1 байт | 1 байт | N байт | 1 байт |
Примечание: поля отмеченные * - не обязательны и зависят от значения блока команда.
Стартовый и стоповый байт – служат для определения начала и конца кадра. Для них принято значение 0xFF.
Адрес получателя – байт, содержащий адрес получателя кадра. Существует широковещательный адрес (0x7F).
Адрес получателя – байт, содержащий адрес отправителя кадра.
Адреса в системе назначаются динамически и лежат в промежутке от 0x01 до 0x7E.
Тип кадра – байт, содержащий код типа кадра.
Длина поля данных – не обязательное поле, содержит длину поля Данные.
Данные – не обязательное поле, содержит какие-либо данные, передаваемые в кадре.
2.3.1. Информационный I - Кадр.
Информационный кадр. Может служить для передачи коротких сообщений между компьютерами, включенными в кольцо. Поля Длина поля данных и Данные – присутствуют. Поле Данные содержит текст передаваемого короткого сообщения.
2.3.2. Супервизорный Link - Кадр.
Кадр установки соединения. Может служить для установки логического соединение типа «кольцо». В поле Адрес получателя – обязательно широковещательный адрес, т.к. используется в системе в начальный момент, когда адреса всех компьютеров сети не определены. Поля Длина поля данных и Данные – присутствуют. Поле Данные содержит адреса и текстовые псевдонимы всех пользователей сети.
2.3.3. Супервизорный Uplink - Кадр.
Кадр разрыва соединения. Может служить для разрыва логического соединение типа «кольцо». В поле Адрес получателя – обязательно широковещательный адрес. Поля Длина поля данных и Данные – отсутствуют.
2.3.4. Супервизорный ACK - Кадр.
Кадр подтверждения безошибочного приема тестового сообщения. Может служить для контроля передачи текстовых сообщений. В поле Адрес получателя – не должно быть широковещательного адреса. Поля Длина поля данных и Данные – отсутствуют.
-
Супервизорный Ret - Кадр.
Кадр запроса повторения последнего отправленного кадра. Может служить для исправления возникших ошибок в ходе передачи кадров. В поле Адрес получателя – не должно быть широковещательный адрес. Поля Длина поля данных и Данные – отсутствуют.
3. Описание функций прикладной уровень.
Функции прикладного уровня обеспечивают интерфейс программы с пользователем. Форма взаимодействия с пользователем определяется техническим заданием. Например, прикладной уровень предоставляет канальному уровню текстовое сообщение для передачи по кольцу..
На данном уровне производится взаимодействие с пользователем, например: ввод\вывод сообщений, управление подключением, выбор файла для передачи, работа с историей сообщений и т.п..
Пользовательский интерфейс может быть выполнен, например, в среде NetBeans с использованием библиотеки Java javax.swing. Интерфейс программы, как правило, выполняется многооконным. При запуске программы должно появиться окно настроек, где пользователю предлагается ввести имя и настроить COM порты. После выбора настроек появляется главное окно, в котором расположены элементы управления, позволяющие выполнять установление и разрыв соединения, обеспечивающие работу с историей и отправку\приём общих сообщений, выбор необходимого файла и т.п.
3.1. Пример окна настройки подключения
Вкладка "Ник" – позволяет ввести имя пользователя
Владка "COM порт N" – позволяет установить COM порт для связи и настроить его параметры.
3.2. Пример окна главного меню.
Список слева – имена подключённых пользователей. Окно в центре – область, в которую выводятся сообщения пользователей и системные сообщения (с пометкой "SYSTEM>").
По нажатию кнопки "Послать" или клавиши Enter на строке ввода производится отправка сообщения. Сообщение дублируется в собственном окне сообщений.
По нажатию кнопки "История" появляется окно истории сообщений.
По нажатию кнопки "Разъединить" производится отключение от сети с разрывом кольца.
Строка в центре внизу – состояние связи.
При двойном клик на имени пользователя появляется окно личных сообщений.
3.3. Пример окна личных сообщений.
Кнопка "Скрыть" скрывает окно. Открыть его можно двойным кликом по имени собеседника.
3.4. Пример окна истории сообщений
По нажатию кнопки "Очистить" производится удаление истории.
По нажатию кнопки «Сохранить» пользователю предоставляется выбор файла для сохранения:
И производится запись истории в этот файл.
По нажатию кнопки "Скрыть" окно истории скрывается. Повторным нажатием копки "История" его можно показать вновь.
3.5. Взаимодействие с канальным уровнем
Взаимодействие с канальным уровнем происходит путём передачи\приёма сообщений через три очереди сообщений: очередь входящих сообщений, очередь исходящих сообщений и системная очередь.
В очередях сообщений хранятся пакеты сообщений. Через системную очередь передаются системные пакеты.
Формат пакета сообщения
1. Имя пользователя получателя | 2. Имя пользователя отправителя | 3. Текст сообщения |
Строка | Строка | Строка |
Поле "Имя пользователя получателя" хранит имя пользователя, которому адресовано сообщение.
Поле "Имя пользователя отправителя" хранит имя пользователя отправителя сообщения.
Поле "Текст сообщения" содержит передаваемое текстовое сообщение.
Формат системного пакета
1. Идентификатор события |
Число |
В поле "Идентификатор события" передаётся номер системного события. Оно может принимать следующие значения:
Номер события | Описание |
NO_ACK | Сообщение не доставлено |
DISCONNECT | Связь прекращена |
DISRUPTION | Разрыв целостности кольца |
СONNECT | Связь установлена |
CONNECT_REQUEST | Запрос установки связи |
DISCONNECT_REQUEST | Запрос разрыва связи |
ACK | Сообщение доставлено |
Литература.
-
В.А. Галкин, Ю.А. Григорьев «Телекоммуникации и сети»
-
Арнольд Кен, Гослинг Джеймс "Язык программирования Java"
-
http://java.sun.com/j2se/1.5.0/docs/api/index.html – Спецификация API библиотек Java
11