Название: сетевые информационные технологии (Н.Э. Унру)

Жанр: Информатика

Просмотров: 1254


1.2.  порт последовательной передачи данных (rs-232)

 

Порт последовательной передачи данных (RS-232) используется для:

 подключения мыши;

 подключения графопостроителей (плоттеров), сканеров, принтеров;

 связи двух компьютеров;

 подключения модемов для передачи данных по телефонным линиям;

 подключения к сети персональных компьютеров;

 реализации других функций.

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

Для синхронизации группе битов обычно предшествует специальный стартовый бит. После группы битов данных следует, как правило, бит проверки на чётность и один или два стоповых бита как показано на рис. 2.

Исходное состояние линии последовательной передачи данных – уровень логической единицы. Стартовый бит сигнализирует о начале передачи данных. Далее передаются биты данных: вначале младшие, затем старшие. Если используется бит чётности, то передаётся и он. Этот бит используется для контроля правильности передачи и поиска ошибок. Бит чётности имеет такое значение, чтобы в пакете общее количество единиц было чётно (контроль на чётность) или нечётно (контроль на нечётность).

 

 

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

 

Завершают передачу байта один или два стоповых бита. Затем уровень линии передачи снова устанавливается в единицу до прихода следующего стартового бита.

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

Скорость передачи данных обычно измеряется в бодах. Боды – это общее количество передаваемых бит в секунду. При этом учитываются и старт/стоповые биты, а также бит чётности. Эффективная скорость передачи измеряется в количестве полезных битов в секунду (bps) без учёта затрат на передачу служебных битов.

Внешние устройства подключаются к порту RS-232 через

25-контактный (COM2) или 9-контактный (COM1) разъём.

Как правило, компьютеры снабжены более чем одним портом связи типа RS-232. Для их обозначения используются аббревиатуры СОМ1, СОМ2, СОМ3 и т. д. Как правило, к порту COM1 подключается «мышь». Обращение к порту осуществляется через его адреса. Каждый порт имеет диапазон используемых адресов. Для портов СОМ1 и СОМ2 они приведены в табл. 2 (адреса для СОМ2 указаны в скобках).

 

Таблица  2

 

Назначение регистров портов СОМ1 и СОМ2

Адрес регистра

Назначение регистра

3F8H (2F8H)

Регистр данных

3F9H (2F9H)

Регистр управления прерываниями

3FAH (2FAH)

Регистр идентификации прерывания

3FBH (2FBH)

Регистр управления

3FDH (2FDH)

Регистр состояния линии

3FEH (2FEH)

Регистр состояния модема

 

Наименования и назначения различных проводников стандартного 25-контактного разъёма COM1 (COM2) приведены в табл. 3. Наряду с 25-контактным разъёмом часто используется

9-контактный разъём, наименование и назначение различных проводников которого приведены в табл. 4.

 

Таблица  3

 

Наименования и назначения проводников стандартного

25-контактного разъёма COM1 (COM2)

Номер

контакта

Назначение контакта

Вход или

выход

1

Защитное заземление

2

Передаваемые данные

Выход

3

Принимаемые данные

Вход

4

Запрос для передачи

Выход

5

Сброс для передачи

Вход

6

Готовность данных

Вход

7

Сигнальное заземление

8

Детектор принимаемого с линии сигнала

Вход

20

Готовность выходных данных

Выход

22

Индикатор вызова

Вход

9-19, 21, 23-25

Не используется

 

 

Таблица  4

 

Наименования и назначения проводников стандартного

9-контактного разъёма COM1 (COM2)

Номер

онтакта

Назначение контакта

Вход или

выход

1

Детектор принимаемого с линии сигнала      

Вход

2

Принимаемые данные         

Вход

3

Передаваемые данные

Выход

4

Готовность выходных данных

Выход

5

Сигнальное заземление

6

Готовность данных

Вход

7

Запрос для передачи

Выход

8

Сброс для передачи

Вход

9

Индикатор вызова

Вход

 

Электрические принципиальные схемы кабелей для соединения двух разъёмов порта (COM-СОМ) приведены на рис. 3.

Рассмотрим подробно работу с некоторыми из упомянутых в табл. 2 регистров.

Управление портами осуществляется записью в регистры или считыванием из них чисел. Это можно осуществлять программно на языках ассемблер или С++, а также обращаясь к функциям базовой системы ввода–вывода BIOS.

Регистр управления (3FBH или 2FBH) доступен для чтения и по записи. Его используют для задания протокола передачи данных и скорости передачи. Формат этого регистра представлен в табл. 5. Для установки протокола в регистр управления следует записать целое число − байт, используя функцию outportb().

Регистр 3F8H (2F8H) можно использовать для двух целей: установки скорости передачи (для этого в 7-м бите регистра 3FBH (2FBH) должна быть установлена 1), так и для приёма или передачи данных (для этого в 7-м бите регистра 3FBH (2FBH) должен стоять 0 – он стоит по умолчанию). Для установки скорости передачи в регистр 3F8H (2F8H) следует записать (используя функцию С++ outportb(), как это было показано выше) десятичное число в соответствии с табл. 6.

 

Рис. 3. Электрические принципиальные схемы кабелей связи

COM-COM

 

Старший байт упомянутого числа следует записать в регистр 3F9H.

В режиме приёма/передачи данные из регистра 3F8H (2F8H) или считываются (используется функция С++ inportb()), или записываются в него (используется функция С++ outportb()).

Пример. Если мы собираемся передавать через СОМ1 по 5 бит информации в слове, без стопового бита, с контролем на нечётность, и далее следует инструкция установления скорости передачи в 4800 бод, то фрагмент соответствующей программы на языке С++ будет иметь вид:

.

.

#include <dos.h>

.

.

outportb(0x3FB,0xB0);        // установка протокола

outportb(0x3F8,24);             // установка скорости

outportb(0x3FB,0x30);         // перевод порта в режим приёма-

                                                передачи

.

.

Таблица  5

 

Формат регистра управления 3FBH (2FBH)

Биты

Описание

0-1

    Длина слова в битах:          00 – 5 бит;

                                               01 – 6 бит;

                                               10 – 7 бит;

                                               11 – 8 бит

2

  Количество стоповых бит:  0 – 1 бит;

                                                 1 – 2 бита

3-4

Чётность:                              00 – контроль не используется;

                                                 01 – контроль на нечётность;

                                                 11 – контроль на чётность

5

Фиксация чётности. При установке этого бита, бит чётности всегда принимает значение 0 (если биты 3–4 равны 11) или 1 (если биты  3–4 равны 01)

6

Установка перерыва. Вызывает вывод строки нулей в качестве сигнала BREAK для подключённого устройства

7

1 – регистры 3F8H (2F8H) используются для загрузки скорости передачи;

0 – регистры 3F8H (2F8H) используются для приёма или передачи данных

 

Таблица  6

 

Зависимость скорости передачи данных от значения

делителя частоты

Число

Скорость передачи в бодах

Число

Скорость передачи в бодах

1040

110

24

4800

768

150

12

9600

384

300

6

19200

192

600

3

38400

96

1200

2

57600

48

2400

1

115200

 

Регистр состояния линии 3FDH (2FDH) используется для организации и контроля правильности передачи данных. Его формат представлен в табл. 7.

Перед тем как отправить байт в порт 3F8H (2F8H) (а значит и в линию связи) или считать его из порта, следует, используя функцию inportb(), прочитать регистр 3FDH (2FDH). Затем, выделив и проанализировав бит (равен ли он единице) состояния приёмника (0-й) или передатчика (5-й), можно (если бит равен единице) записывать/считывать байт в/из регистра 3F8H (2F8H). Процесс чтения и анализа содержимого регистра 3FDH (2FDH) следует организовать в цикле.

 

Таблица  7

 

Формат регистра состояния линии 3FDH  (2FDH)

Биты

Описание

0

Данные получены и готовы для чтения. Бит сбрасывается при чтении      данных из регистра 3F8H (2F8H)

1

Ошибка переполнения. Была принята новая порция данных, а предыдущая ещё не была считана. Предыдущая порция потеряна

2

Ошибка чётности. Сбрасывается после чтения состояния линии

3

Ошибка синхронизации

4

Обнаружен запрос на прерывание передачи BREAK: длинная строка нулей

5

Регистр хранения передатчика пуст. В него можно записывать новую порцию информации для передачи

6

Регистр сдвига передатчика пуст. Этот регистр получает данные из регистра хранения и преобразует их в последовательный вид для передачи

7

Истекло время ожидания

 

Для выделения бита из байта удобно использовать операцию «поразрядное логическое И». В нижеследующем фрагменте показан процесс выделения 3-го бита из байта – результат равен нулю, если в третьем бите стоит «0» и равен восьми - если в третьем бите стоит «1».

.

.

unsigned char a;

.

.

a = a&8;

.

.

Если в программе не используются прерывания, то в порт 3F9H следует перед началом работы с ним записать значение 0.

Поясним принципы использования последовательного порта на примере алгоритма пары простейших программ – передающих последовательность данных (байтов) с одного компьютера (ведущего) на другой (ведомый).

Первое, что должна сделать программа, работающая с последовательным асинхронным портом – это установить одинаковые для обоих компьютеров протокол обмена и скорость передачи данных. После загрузки операционной системы устанавливается скорость 2400 бод, не выполняется проверка на четность, используется один стоповый бит и 8-битовая длина передаваемого символа. Выполнив установку протокола и скорости передачи данных, следует не забыть перевести регистр 3F8H (2F8H) обратно в режим приема/передачи.

Далее алгоритмы работы программ на ведущем и ведомом компьютерах отличаются.

На ведущем компьютере следует до передачи каждого байта убедиться, что регистр хранения передатчика свободен (т.е. в 5-м бите стоит «1»).

На ведомом компьютере перед чтением очередного байта из регистра следует убедиться, что байт из линии принят (т.е. в 0-м бите стоит «1»).

 

1.3.  Связь двух компьютеров

стандартными программными

средствами

 

Между двумя персональными компьютерами типа IBM PC может быть установлена связь через последовательный порт при помощи надоперационной оболочки Norton Commander. При этом один из компьютеров получает статус Ведущий (Master), а другой статус Ведомый (Slave). При установлении связи Ведомый (Slave) представляется в Ведущем (Master) как одна из панелей NC.

Порядок установления связи следующий.

1. С помощью четырех- или трёхпроводной линии связи соединить последовательные порты компьютеров.

2. Перейти, используя комбинацию клавиш Ctrl+Esc, в режим эмуляции MS-DOS (но не сеанса MS-DOS). Применяя команды MS DOS (cd <путь> − смена текущего каталога, dir <путь> − распечатка каталога), запустить надоперационную оболочку Norton Commander (файл NC.EXE в каталоге C:NCC).

3. На обоих компьютерах запускают Norton Commander, переходят в главное меню (клавиша F9), выбирают панель (Rigth (Правая) или Left (Левая)) и нажимают на клавишу Enter. Указатель устанавливают в появившемся окне на пункт Link (Связь) и нажимают клавишу Enter. В результате в центре экрана появляется окно серого цвета с заголовком Commander Link (Связь через порт). Указатель в пределах этого окна перемещается клавишами: Tab, Shift-Tab и 4-я клавишами-стрелками.

4. Вначале на Ведомом (Slave), а затем на Ведущем (Master) устанавливается режим Ведущий (Master) или Ведомый (Slave) и выбирается порт связи (COM1 или COM2). Для этого нужно активизировать соответствующую опцию, нажав клавишу Space (пробел). В результате внутри круглых скобок появится точка. Наконец, нужно установить указатель на кнопку Link (Связь) и нажать клавишу Enter.

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

6. Для прекращения связи следует на Ведущем (Master) компьютере нажать на клавишу F9, установить указатель на пункт меню Link (Связь) и дважды нажать на клавишу Enter.

7. Для возврата из MS-DOS в Windows следует подать команду exit.