Первый слайд презентации: Последовательный интерфейс
Универсальный внешний последовательный интерфейс — СОМ-порт ( Communications Port — коммуникационный порт) Этот порт обеспечивает обмен по стандарту RS -232 C. Асинхронный, (синхронный)дуплексный (полудуплексный)интерфейс. Скорость передачи может выбираться из ряда 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 115200 бит/ c Максимальное расстояние между передатчиком и приемником -15м. Компьютер может иметь до четырех последовательных портов СОМ1-СОМ4.
Слайд 2: COM - порт
Порты занимают в пространстве ввода-вывода по 8 смежных 8-битных регистров каждый и могут располагаться по стандартным базовым адресам 3 F 8 h (СОМ1), 2 F 8 h (COM2), 3 E 8 h (COM3), 2 E 8 h (COM4). Порты могут вырабатывать аппаратные прерывания IRQ 4 (обычно используются для СОМ1 и COM3) и IRQ 3 (для COM2 и COM4).
Слайд 3
Интерфейс RS -232 C предназначен для подключения аппаратуры, передающей или принимающей данные (АПД — аппаратура передачи данных; DTE — Data Terminal Equipment ), к оконечной аппаратуре каналов данных (АКД; DCE — Data Communication Equipment например модем). Интерфейс RS232c
Слайд 4
Контакт Сигнал Направление Описание 1 CD Вход Обнаружена несущая(линия активна) 2 RXD Вход Принимаемые данные 3 TXD Выход Передаваемые данные 4 DTR Выход Хост(Комп) готов 5 GND – Общий провод 6 DSR Вход Устройство готово 7 RTS Выход Хост готов к передаче 8 CTS Вход Устройство готово к приему 9 RI Вход Обнаружен вызов(для модема если он получил вызов от удаленной системы)
Слайд 6: Последовательность управляющих сигналов интерфейса
Установкой DTR компьютер указывает на желание использовать модем. Установкой DSR модем сигнализирует о своей готовности и установлении соединения. Сигналом RTS компьютер запрашивает разрешение на передачу и заявляет о своей готовности принимать данные от модема. Сигналом CTS модем уведомляет о своей готовности к приему данных от компьютера и передаче их в линию. Снятием CTS модем сигнализирует о невозможности дальнейшего приема (например, буфер заполнен) — компьютер должен приостановить передачу данных. Сигналом CTS модем разрешает компьютеру продолжить передачу (в буфере появилось место). Снятие RTS может означать как заполнение буфера компьютера (модем должен приостановить передачу данных в компьютер), так и отсутствие данных для передачи в модем. Обычно в этом случае модем прекращает пересылку данных в компьютер. Модем подтверждает снятие RTS сбросом CTS. Компьютер повторно устанавливает RTS для возобновления передачи. Модем подтверждает готовность к этим действиям. Компьютер указывает на завершение обмена. Модем отвечает подтверждением. Компьютер снимает DTR, что обычно является сигналом на разрыв соединения («повесить трубку»). Модем сбросом DSR сигнализирует о разрыве соединения.
Слайд 8
Синхронизация передачи В состав соединенных по RS232 устройств входят: тактовый генераторы, которые задают тактовую частоту приемопередатчика для данной скорости связи. Перед началом связи между двумя устройствами необходимо настроить их приемопередатчики на одинаковую скорость связи и формат кадра. Приемник, поймав падающий фронт старт-бита, который передает передатчик отсчитывает несколько тактов и следующие три такта считывает ( семплирует ) порт RX. Это как раз середина старт-бита. Если большинство значений - "0", старт-бит считается состоявшимся, иначе приемник принимает его за шум и ждет следующего падающего фронта. После удачного определения старт-бита, приемник точно также семплирует серединки битов данных и по большинству семплов считает бит "0" или "1", записывая их в сдвиговый регистр. Стоп-биты тоже семплируются.
Слайд 10
Виртуальный COM – порт С OM – порт поверх USB 1. Вариант – приобретение специального кабеля переходника USB – COM c специальным драйвером. При установке драйвера в системе появляется виртуальный COM – порт, работающий поверх USB. Обращение к этому порту осуществляется с помощью функций доступа к COM – порту. функций доступа к COM -порту. 2. Использование переходника и стандартного драйвера CDC ( CommunicationDevice Class)
Слайд 11
Два варианта управления обменом данными: Программный метод не требует наличия дополнительных линий для синхронизации Управление с помощью посылки специальных пакетов(команд) старта и остановки передачи Работа с COM -портом
Слайд 13
Управление передачей с помощью линий синхронизации RTS, CTS Аппаратный метод Возможность управления отдельными линиями порта при работе с не стандартными устройствами (три сигнала на выход DTR, RTS, Tx и четыре на вход DSR, CTR, DCD, RI )
Слайд 14
function CreateFile ( ipFileName : PChar ; // имя файла (порта) dwDesiredAccess, // способ доступа к файлу dwShareMode : DWORD; // тип совместного доступа lpSA : PSecurityAttributes ; // атрибуты защиты dwCreationDisposition, // параметры создания файла dwFlagsAndAttributes : DWORD; // атрибуты файла hTemplateFile : Thandle // дескриптор template -файла ) : THandle ; function CloseHandle ( hObject : THandle // дескриптор порта ): BOOL; Открытие порта Закрытие порта
Слайд 15
{ Переменная для хранения дескриптора порта} var ComHandle : THandle; { Открыть порт} ComHandle:= CreateFile ( '\\.\COM1’, GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0 ); {Проверить результат} if ComHandle = INVALID_HANDLE_VALUE then begin {Ошибка открытия порта, функция GetLastError вернет код ошибки} Exit; end; {... порт открыт успешно...} {... использование порта через дескриптор ComHandle...} {Закрытие порта} CloseHandle(ComHandle);
Слайд 16
function ReadFile( hFile: THandle; // дескриптор, полученный от CreateFile var Buffer; // буфер для чтения nNumberOfBytesToRead: DWORD ; // число байт для чтения var lpNumberOfBytesRead: DWORD ;// реально прочитанное число // байт ipOverlapped: Poverlapped // параметры асинхронного чтения ): BOOL; Чтение данных из порта
Слайд 17
function WriteFile( hFile : THandle ; // дескриптор, полученный от CreateFile const Buffer ; // буфер данных nNBTW : DWORD; // длина буфера var lpNBW : DWORD ; // реально отправленное число байт lpOverlapped : POverlapped // параметры асинхронной записи ): BOOL; Запись данных в порт
Последний слайд презентации: Последовательный интерфейс
Функция EscapeCommFuntion позволит управлять уровнем на выходных линиях DTR и RTS. Вызывается эта функция так: EscapeCommFunction ( Port, Command ), где Port – дескриптор открытого файла, возвращенного функцией CreateFile,. Для контроля уровня на входных линиях используется функция GetCommModemStatus ( Port, Status ), где Port – тот же самый дескриптор, а Status – переменная типа длинное целое, биты которой будут содержать информацию о различных параметрах СОМ-порта. Все упомянутые функции Windows API и константы описаны в файлах windows.h (для С++ ) и модуле windows (для Delphi ), которые надо подключить к проекту. Функции работы с нестандартными устройствами