Подключаем com порт usb в Windows. COM-порт (последовательный порт) Com порт подключаемые устройства


Особенностью данного порта по сравнению с другими "последовательными" технологиями является факт отсутствия каких-либо временных требований между 2 байтами. Временные требования есть только между битами одного байта (включая старт, стоп и четность), величина, обратная временной паузе между битами одного байта, называется baud rate - скорость передачи. Также в этой технологии отсутствует понятие "пакет".

Другие "последовательные" технологии, такие, как X.25, USB или Ethernet, имеют понятие "пакет", и накладывают жесткие временные требования между всеми битами одного пакета.

По этой причине в терминологии Cisco IOS данный порт назывался async - в отличие от синхронных serial, т.е. X.25. По этой же причине модуль Windows , реализующий PPP поверх данного порта, называется AsyncMac.sys (в стандарте PPP отдельно описана реализация PPP, использующего понятие "пакет", над последовательным портом, этого понятия не имеющим).

Некоторые протоколы связи с индустриальным оборудованием налагают жесткие временные требования между байтами последовательного порта. Такие протоколы крайне сложны в реализации в многозадачных ОС со слабой поддержкой реального времени, такой, как Windows, и потому зачастую требуют MS-DOS и устаревшего ПО почти 20-летней давности на управляющем компьютере.

Назначение

Наиболее часто для последовательного порта персональных компьютеров используется стандарт RS-232C. Ранее последовательный порт использовался для подключения терминала, позже для модема или мыши . Сейчас он используется для соединения с , для связи с аппаратными средствами разработки встраиваемых вычислительных систем , спутниковыми ресиверами, кассовыми аппаратами, а также с приборами систем безопасности объектов.

С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель» (см. ниже). Использовался со времен MS-DOS для перекачки файлов с одного компьютера на другой, в UNIX для терминального доступа к другой машине, а в Windows (даже современной) - для отладчика уровня ядра.

Достоинством технологии является крайняя простота оборудования. Недостатком является низкая скорость, крупные размеры разъемов, а также зачастую высокие требования к времени отклика ОС и драйвера и высокое количество прерываний (одно на половину аппаратной очереди, т.е. 8 байт).

Разъемы

На материнских платах ведущих производителей (например, Intel) или готовых системах (например, IBM , Hewlett-Packard , Fujitsu Siemens Computers) для последовательного порта принято следующее условное обозначение:

Наиболее часто используются стандартизированные в 1969 году D-образные разъёмы: 9-ти и 25-ти контактные, (DB-9 и DB-25 соответственно). Раньше использовались также DB-31 и круглые восьмиконтактные DIN-8. Максимальная скорость передачи, в обычном исполнении порта, составляет 115 200 бод .

Актуальность

Существуют стандарты на эмуляцию последовательного порта над USB и над Bluetooth (эта технология в значительной степени и проектировалась как «беспроводной последовательный порт»).

Тем не менее программная эмуляция данного порта широко используется и сегодня. Так, например, практически все мобильные телефоны эмулируют внутри себя классический COM-порт и модем для реализации тетеринга - доступа компьютера в Интернет через GPRS/EGDE/3G оборудование телефона. При этом для физического подключения к компьютеру используется USB, Bluetooth или Wi-Fi .

Также программная эмуляция данного порта предоставляется «гостям» виртуальных машин VMWare и Microsoft Hyper-V , основная цель при этом - подключение отладчика уровня ядра Windows к «гостю».

Аппаратура

Разъем имеет контакты:

DTR (Data Terminal Ready - готовность к приёму данных) - выход на компьютере, вход на модеме. Означает готовность компьютера к работе с модемом. Сброс этой линии вызывает почти полную перезагрузку модема в первоначальное состояние, в т.ч. бросание трубки (некоторые управляющие регистры выживают после такого сброса). В UNIX это происходит в случае, если все приложения закрыли файлы на драйвере сериального порта. Мышь использует этот провод для получения питания.

DSR (Data Set Ready - готовность к передаче данных) - вход на компьютере, выход на модеме. Означает готовность модема. Если эта линия находится в нуле - то в ряде ОС становится невозможно открыть порт как файл.

RxD (Receive Data - приём данных) - вход на компьютере, выход на модеме. Поток данных, входящий в компьютер.

TxD (Transmit Data - передача данных) - выход на компьютере, вход на модеме. Поток данных, исходящих из компьютера.

CTS (Clear to Send - готовность передачи) - вход на компьютере, выход на модеме. Компьютер обязан приостановить передачу данных, пока этот провод не будет выставлен в единицу. Используется в аппаратном протоколе управления потоком для предотвращения переполнения в модеме.

RTS (Request to Send - запрос на передачу) - выход на компьютере, вход на модеме. Модем обязан приостановить передачу данных, пока этот провод не будет выставлен в единицу. Используется в аппаратном протоколе управления потоком для предотвращения переполнения в оборудовании и драйвере.

DCD (Carrier Detect - наличие несущей) - вход на компьютере, выход на модеме. Взводится модемом в единицу после установления соединения с модемом с той стороны, сбрасывается в ноль при разрыве связи. Аппаратура компьютера может издавать прерывание при наступлении такого события.

RI (Ring Indicator - сигнал вызова) - вход на компьютере, выход на модеме. Взводится модемом в единицу после обнаружения вызывного сигнала телефонного звонка. Аппаратура компьютера может издавать прерывание при наступлении такого события.

SG (Signal Ground - сигнальная земля) - общий сигнальный провод порта, не является общей землёй , как правило, изолирован от корпуса ЭВМ или модема.

В нуль-модемном кабеле используются две перекрещенные пары: TXD/RXD и RTS/CTS.

Стандартная (со времен оригинальной IBM PC) аппаратура порта называется UART 16550 (в настоящее время включена в SuperIO микросхему на материнской плате вместе с рядом иных устройств). Со времен IBM PC в ней появилась аппаратная очередь байт, которая сильно снижает количество издаваемых устройством прерываний.

Программный доступ к СОМ-порту

UNIX

Для каждого порта в реестре имеется раздел. Эти разделы имеют такие имена:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial10000

где последнее значение “Serial10000” - уникальный номер для каждого нового добавленного в систему COM-порта, для второго – “Serial10001” и т.д

Для связи с устройствами, поддерживающими Bluetooth, некоторым программам (например, к таким программам относятся: программа, которая синхронизирует список контактов с мобильным телефоном; программа, которая извлекает координаты GPS из GPS-приемника) на компьютере пользователя требуется COM-порт.

К программам, использующим COM-порты для поддержки связи с помощью технологии беспроводного подключения Bluetooth, непосредственно разработанных фирмой Microsoft, относятся:

  • HotSync, используемый в ручных компьютерах
  • ActiveSync , используемый в карманных ПК

OS/2

Имеющийся драйвер COM.SYS поддерживает только 4 COM-порта, каждый из которых должен иметь свою линию прерываний. Для обслуживания COM-портов с общей линией прерывания необходимо воспользоваться драйвером SIO .

Нуль-модемный кабель

Основная статья: Нуль-модемный кабель

В некоторых случаях возможно применение упрощённого варианта кабеля, в котором задействуются только контакты 2, 3 и 5.

См. также

  • Сигналы последовательных портов

Примечания

Ссылки

  • Перевод руководства по программированию СОМ-порта в POSIX операционных системах
  • Программирование порта на java - позволяет работать из Windows, в отличие от официальных пакетов от Sun.
  • Программирование COM порта на C++ под Windows. Готовая библиотека, исходные тексты, примеры программ.
  • Яшкардин В.Л. Последовательный порт. Программирование COM-порта в Windows и MS-DOS . SoftElectro (2009). Архивировано из первоисточника 8 февраля 2012.

При вычислении последовательный порт представляет собой последовательный интерфейс связи, через который информация передается или выдается за раз. На протяжении большей части истории персональных компьютеров данные передавались через последовательные порты на устройства, такие как модемы, терминалы и различные периферийные устройства.

Хотя такие интерфейсы, как Ethernet, FireWire и USB, все отправляют данные в виде последовательного потока, термин «последовательный порт» обычно идентифицирует аппаратное обеспечение, более или менее совместимое со стандартом RS-232, предназначенное для взаимодействия с модемом или с аналогичной связью Устройства.

Современные компьютеры без последовательных портов могут потребовать конвертеры с последовательным интерфейсом, чтобы обеспечить совместимость с последовательными устройствами RS-232. Серийные порты все еще используются в таких приложениях, как системы промышленной автоматизации, научные приборы, системы продаж и некоторые промышленные и потребительские товары. Серверные компьютеры могут использовать последовательный порт в качестве консоли управления или диагностики. Сетевое оборудование (например, маршрутизаторы и коммутаторы) часто используют последовательную консоль для конфигурации. Серийные порты по-прежнему используются в этих областях, поскольку они просты, дешевы, а их консольные функции высоко стандартизированы и широко распространены.

Распиновка COM порта(RS232)

Существует 2-е разновидности com порта, 25-и пиновый старый разъем и сменившей его более новый 9-и пиновый разъем.

Ниже приведена схема типового стандартного 9-контактного разъема RS232 с разъемами, этот тип разъема также называется разъемом DB9.

  1. Обнаружение несущей(DCD).
  2. Получение данных(RXD).
  3. Передача данных(TXD).
  4. Готовность к обмену со стороны приемника(DTR).
  5. Земля(GND).
  6. Готовность к обмену со стороны источника(DSR).
  7. Запрос на передачу(RTS).
  8. Готовность к передаче(CTS).
  9. Сигнал вызова(RI).

RJ-45 к DB-9 Информация о выводе адаптера последовательного порта для коммутатора

Консольный порт представляет собой последовательный интерфейс RS-232, который использует разъём RJ-45 для подключения к управляющему устройству, например ПК или ноутбуку. Если на вашем ноутбуке или ПК нет штыря разъема DB-9, и вы хотите подключить ноутбук или ПК к коммутатору, используйте комбинацию адаптера RJ-45 и DB-9.

DB-9 RJ-45
Получение Данных 2 3
Передача данных 3 6
Готовность обмену 4 7
Земля 5 5
Земля 5 4
Готовность обмену 6 2
Запрос на передачу 7 8
Готовность к передаче 8 1

Цвета проводов:

1 Черный
2 Коричневый
3 Красный
4 Оранжевый
5 Желтый
6 Зеленый
7 Синий
8 Серый (или белый)

Последовательные порты полюбились разработчикам за их простоту в обслуживании и использовании.

И конечно же писать в консоль терминальной программы это всё хорошо, но хочеться своё приложение, которое по нажатии клавиши на экране выполняет нужные вам действия;)

В этой статье опишу как работать с com портом на языке Си++ .

Решение простое, но почемуто рабочий пример найден был не сразу. За сим сохраняю его тут.

Конечно вы можете использовать кроссплатформенные решения вроде QSerial - библиотеки в составе Qt, я наверное так и сделаю, но в будующем. Сейчас же речь о "чистом" виндовском C++ . Писать будем в Visual Studio. У меня 2010, хотя роли это никакой не играет...

Создаём новый консольный Win32 проект.

Инклудим header файлы:

#include #include using namespace std;

Объявляем обработчик com порта:

HANDLE hSerial;

Я делаю это глобально, чтобы не заморачиваться с указателями при передаче его в функции.

Int _tmain(int argc, _TCHAR* argv) {

Терпеть не могу виндовский стиль программирования. Обозвали всё посвоему и сидят радуются...

Теперь магия объявления строки с именем порта. Дело в том, что char оно преобразовывать само не умеет.

LPCTSTR sPortName = L"COM1";

Работа с последоавательными портами в Windows проходит как с файлом. Открываем первый ком порт для записи/чтения :

HSerial = ::CreateFile(sPortName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

Проверяем работоспособность:

If(hSerial==INVALID_HANDLE_VALUE) { if(GetLastError()==ERROR_FILE_NOT_FOUND) { cout << "serial port does not exist.\n"; } cout << "some other error occurred.\n"; }

Теперь нужно настроить параметры соединения:

DCB dcbSerialParams = {0}; dcbSerialParams.DCBlength=sizeof(dcbSerialParams); if (!GetCommState(hSerial, &dcbSerialParams)) { cout << "getting state error\n"; } dcbSerialParams.BaudRate=CBR_9600; dcbSerialParams.ByteSize=8; dcbSerialParams.StopBits=ONESTOPBIT; dcbSerialParams.Parity=NOPARITY; if(!SetCommState(hSerial, &dcbSerialParams)) { cout << "error setting serial port state\n"; }

На msdn советуют сначала получить параметры, а затем менять их. Мы ещё только учимся, поэтому делаем как просят.

Теперь объявим строку, которую будем передавать и переменные необходимые для этого:

Char data = "Hello from C++"; // строка для передачи DWORD dwSize = sizeof(data); // размер этой строки DWORD dwBytesWritten; // тут будет количество собственно переданных байт

Посылаем строку. Напомню, что пример простейший, поэтому никаких особо проверок я не делаю:

BOOL iRet = WriteFile (hSerial,data,dwSize,&dwBytesWritten,NULL);

Также я решил вывести для контроля размер строки и количество отосланных байт:

Cout << dwSize << " Bytes in string. " << dwBytesWritten << " Bytes sended. " << endl;

В конце программы делаем бесконечный цикл чтения данных:

While(1) { ReadCOM(); } return 0; }

Теперь функция чтения:

Void ReadCOM() { DWORD iSize; char sReceivedChar; while (true) { ReadFile(hSerial, &sReceivedChar, 1, &iSize, 0); // получаем 1 байт if (iSize > 0) // если что-то принято, выводим cout << sReceivedChar; } }

Вот собственно и весь пример.

THR - промежуточный регистр данных передатчика (только для записи) Данные, записанные в регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала CTS . Бит 0 передается (и принимается) первым. При длине посылки менее 8 бит старшие биты игнорируются.
RBR - буферный регистр принимаемых данных (только для чтения) Данные, принятые входным сдвигающим регистром помещаются в регистр RBR , откуда они могут быть считаны процессором. Если к моменту окончания приема очередного символа предыдущий не был считан из регистра, фиксируется ошибка переполнения. При длине посылки менее 8 бит старшие биты в регистре имеют нулевое значение.
DLL - регистр младшего байта делителя частоты .
DLM - регистр старшего байта делителя частоты . Делитель определяется по формуле D=115200/V, где V - скорость передачи, бит/с. Входная частота синхронизации 1 8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных.
IЕR - регистр разрешения прерываний . Единичное значение бита разрешает прерывание от соответствующего источника.
Назначение бит регистра IER :
* биты =0 - не используются;
* бит 3 - Mod_IЕ - по изменению состояния модема (любой из линий CTS, DSR, RI, DCD );
* бит 2 - RxL_IЕ - по обрыву/ошибке линии;
* бит 1 - TxD_IE - по завершении передачи;
* бит 0 - RxD_IЕ - по приему символа (в режиме FIFO - прерывание по тайм-ауту).
IIR - регистр идентификации прерываний и признака режима FIFO (только для чтения). Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по четырехуровневой системе приоритетов. Порядок приоритетов (по убыванию): состояние линии, прием символа, освобождение регистра передатчика, состояние модема. При возникновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника. Ниже описано назначение бит регистра IIR .
* Биты - признак режима FIFO:
11-режим FIFO 16550A;
10 - режим FIFO 16550;
00 - обычный.
* Биты - не используются.
* Бит 3 - прерывание по тайм-ауту приема в режиме FIFO (в буфере есть символы для считывания).
* Биты - причина прерывания с наивысшим приоритетом (в обычном, не FIFO-режиме):
11 - ошибка/обрыв линии, сброс выполняется чтением регистра состояния линии;
10 - принят символ, сброс выполняется чтением данных;
01 - передан символ (регистр THR пуст), сброс выполняется записью данных;
00 - изменение состояния модема; сброс выполняется чтением регистра состояния модема.
* Бит 0 - признак необслуженного запроса прерывания (1 - нет запроса, 0 - есть запрос).
В режиме FIFO причину прерывания идентифицируют биты .
* О11 - ошибка/обрыв линии. Сброс выполняется чтением регистра состояния линии.
* 010 - принят символ. Сброс выполняется чтением регистра данных приемника
* 110 - индикатор тайм-аута (за 4-кратный интервал времени символа не передано и не принято ни одного символа, хотя в буфере имеется, по крайней мере, один). Сброс выполняется чтением регистра данных приемника.
* 001 - регистр THR пуст. Сброс выполняется записью данных.
* 000 - изменение состояния модема (CIS, DSR, RI или DCD ). Сброс выполняется чтением регистра MSR .
FCR - регистр управления FIFO (только для записи). Ниже описано назначение бит регистра FCR :
* Биты - ITL (Interrupt Trigger Level) - уровень заполнения FIFO-буфера, при котором вырабатывается прерывание:
00 - 1 байт (по умолчанию);
01 - 4 байта;
10 - 8 байт;
11 - 14 байт.
* Биты зарезервированы.
* Бит 3 - разрешение операций DMA.
* Бит 2 - RESETTF (Reset Transmitter FIFO) - сброс счетчика FIFO-передатчика (записью единицы; сдвигающий регистр не сбрасывается).
* Бит 1 - RESETRF (Reset Receiver FIFO) - сброс счетчика FIFO-приемника (записью единицы; сдвигающий регистр не сбрасывается).
* Бит 0 - TRFIFOE (Transmit And Receive FIFO Enable) - разрешение (единицей) режима FIFO для передатчика и приемника. При смене режима FIFO-буферы автоматически очищаются.
LCR - регистр управления линией (настройки параметров канала). Ниже описано назначение бит регистра LCR .
* Бит 7 - DLAB (Divisor Latch Access Bit) - управление доступом к делителю частоты.
* Бит 6 - BRCON (Break Control) - формирование обрыва линии (посылка нулей) при BRCON=1.
* Бит 5 - STICPAR (Sticky Parity) - принудительное формирование бита паритета:
0 - контрольный бит генерируется в соответствии с паритетом выводимого символа;
1 - постоянное значение контрольного бита: при EVENPAR =1 - нулевое, при EVENPAR =0 - единичное.
* Бит 4 - EVENPAR (Even Parity Select) - выбор типа контроля: 0 - нечетность, 1 - четность.
* Бит 3 - PAREN (Parity Enable) - разрешение контрольного бита:
1 - контрольный бит (паритет или постоянный) разрешен;
0 - контрольный бит запрещен.
* Бит 2 - STOPB (Stop Bits) - количество стоп-бит:
0 - 1 стоп-бит;
1 - 2 стоп-бита (для 5-битного кода стоп-бит будет иметь длину 1,5 бит).
* Биты - SERIALDB (Serial Data Bits) - количество бит данных:
00 - 5 бит;
01-6 бит;
10 - 7 бит;
11 - 8 бит.
MCR - регистр управления модемом . Ниже описано назначение бит регистра MCR .
* Биты =0 - зарезервированы.
* Бит 4 - LME (Loopback Mode Enable) - разрешение режима диагностики:
0 - нормальный режим;
1 - режим диагностики (см. ниже).
* Бит 3 - IE (Interrupt Enable) - разрешение прерываний с помощью внешнего выхода OUT2 MSR.7 :
0 - прерывания запрещены;
1 - прерывания разрешены.
* Бит 2 - OUT1C (OUT1 Bit Control) - управление выходным сигналом 1 (не используется); в режиме диагностики поступает на вход MSR.6 .
* Бит 1 - RTSC (Request To Send Control) - управление выходом RTS ; в режиме диагностики поступает на вход MSR.4 :
0 - активен (-V);
1 - пассивен (+V).
* Бит 0 - DTRC (Data Terminal Ready Control) - управление выходом DTR ; в режиме диагностики поступает на вход MSR.5 :
0 - активен (-V);
1 - пассивен (+V).
LSR - регистр состояния линии (точнее, состояния приемопередатчика). Ниже описано назначение бит регистра LSR.
* Бит 7 - FIFOE (FIFO Error Status) - ошибка принятых данных в режиме FIFO (буфер содержит хотя бы один символ, принятый с ошибкой формата, паритета или обрывом). В не FIFO-режиме всегда 0.
* Бит 6 - TEMPT (Transmitter Empty Status) - регистр передатчика пуст (нет данных для передачи ни в сдвиговом регистре, ни в буферных регистрах THR или FIFO).
* Бит 5 - THRE (Transmitter Holding Register Empty) - регистр передатчика готов принять байт для передачи. В режиме FIFO указывает на отсутствие символов в FIFO-буфере передачи. Может являться источником прерывания.
* Бит 4 - BD (Break Detected) - индикатор обрыва линии (вход приемника находится в состоянии 0 не менее, чем время посылки символа).
* Бит 3 - FE (Framing Error) - ошибка кадра (неверный стоп-бит).
* Бит 2 - РЕ (Parity Error) - ошибка контрольного бита (паритета или фиксированного).
* Бит 1 - ОЕ (Overrun Error) - переполнение (потеря символа). Если прием очередного символа начинается до того, как предыдущий выгружен из сдвигающего регистра в буферный регистр или в регистр FIFO, прежний символ в сдвигающем регистре теряется.
* Бит 0 - DR (Receiver Data Ready) - принятые данные готовы (в DHR или FIFO-буфере). Сброс - чтением приемника.
Индикаторы ошибок - биты - сбрасываются после чтения регистра LSR . В режиме FIFO признаки ошибок хранятся в FIFO-буфере вместе с каждым символом. В регистре они устанавливаются (и вызывают прерывание) в тот момент, когда символ, принятый с ошибкой, находится на вершине FIFO (первый в очереди на считывание). В случае обрыва линии в FIFO заносится только один «обрывной» символ, и UART ждет восстановления и последующего старт-бита. MSR - регистр состояния модема. Ниже описано назначение бит регистра MSR :
* Бит 7 - DCD (Data Carrier Detect) - состояние линии DCD :
0 - активна (-V);
1 - пассивна (+V).
* Бит 6 - RI (Ring Indicator) - состояние линии RI :
0 - активна (-V);
1 - пассивна (+V).
* Бит 5 - DSR (Data Set Ready) - состояние линии DSR :
0 - активна (-V);
1 - пассивна (+V).
* Бит 4 - CTS (Clear To Send) - состояние линии CTS :
0 - активна (-V);
1 - пассивна (+V).
* Бит 3 - DDCD (Delta Data Carrier Detect) - изменение состояния DCD .
* Бит 2 - TERI (Trailing Edge Of Ring Indicator) - спад огибающей RI (окончание звонка).
* Бит 1 - DDSR (Delta Data Set Ready) - изменение состояния DSR .
* Бит 0 - DCTS (Delta Clear To Send) - изменение состояния CTS .
Признаки изменения (биты ) сбрасываются по чтению регистра.
SRC - рабочий регистр (8 бит), на работу UART не влияет, предназначен для временного хранения данных (в 8250 отсутствует).
В диагностическом режиме (при LМЕ=1 ) внутри UART организуется внутренняя «заглушка»:
* выход передатчика переводится в состояние логической единицы;
* вход приемника отключается; * входы DSR, CTS, RI и DCD отключаются от входных линий и внутренне управляются битами DTRC, RTSC, OUT1C, IE ;
* выходы управления модемом переводятся в пассивное состояние (логический ноль).
Переданные данные в последовательном виде немедленно принимаются, что позволяет проверять внутренний канал данных порта (включая сдвигающие регистры) и отработку прерываний, а также определять скорость работы UART.

Serial port (серийный порт, последовательный порт или COM-порт -, communications port) — это последовательный интерфейс с двойной направленностью.

Почему порт назвается последовательным? Потому, что вся информация по этому порту передается шагом равным одному биту. В нем данные передаются бит за битом, в отличие от параллельного порта.

Несмотря на то, что в некоторых других интерфейсах как, например, в Ethernet , FireWire и USB , применяется последовательный обмен данными, название «последовательный порт» закрепилось за портом, обладающим стандартом RS-232C .

Данный порт, в сравнении с другими "последовательными" технологиями, обладает отличительной особенностью: в нем отсутствует какое-либо временное требование между 2 байтами. Временные требования существуют только между битами одного байта. Величина, обратная временной паузе между битами одного байта, носит название «baud rate» (скорость передачи). Кроме того, в данной технологии нет такого понятия, как "пакет". Другие технологии "последовательной" передачи данных (X.25, USB или Ethernet), используют "пакеты", также в них существуют и жесткие временные требования между битами одного пакета.

В части протоколов связи с индустриальным оборудованием имеются жесткие временные требования между байтами последовательного порта. Реализация в многозадачных операционных системах со слабой поддержкой реального времени этих протоколов очень сложна. К этим системам относятся и Windows. Вот почему для работы с этими протоколами зачастую применяют MS-DOS или более устаревшее программное обеспечение.

Самый распространенный для последовательного порта стандарт - RS-232C. Ранее последовательный порт применялся для подключения терминала, позднее его использовали для подключения модема или мыши. В настоящее время его применяют в качестве средства соединения с источниками бесперебойного питания, а также в качестве средства связи с аппаратными средствами разработки встраиваемых вычислительных систем, спутниковыми ресиверами, кассовыми аппаратами и приборами систем безопасности.

Благодаря COM-порту появляется возможность подключить друг к другу два ПК, применяя так называемый «нуль-модемный кабель». Данный метод использовался со времен MS-DOS в целях перекачки файлов с одного компьютера на другой. В UNIX-системах он использовался для терминального доступа к другой машине, а в операционных системах Windows - для отладчика уровня ядра.

Довольно популярный в свое время в IBM-совместимых ПК последовательный порт, сегодня уже морально устарел. Однако, следует отметить, что он еще нередко используется в промышленном и узкоспециальном оборудовании, а также на некоторых современных компьютерах. Последовательный порт активно вытесняется интерфейсом USB и FireWire.

Однако имеются специальные стандарты эмуляции последовательного порта над USB и над Bluetooth . Кстати, любопытно, но именно Bluetooth-технология проектировалась разработчиками в качестве беспроводной версии последовательного порта. Программная эмуляция порта широко используется и по сей день. Так, практически все мобильные телефоны сегодня эмулируют внутри себя COM-порт и модем, с целью реализации тетеринга (доступа компьютера к сети Интернет через GPRS/EGDE/3G). А вот непосредственно для физического подключения к компьютеру применяется USB, Bluetooth или Wi-Fi технологии.

Кроме того, программная эмуляция последовательного порта возможна для гостевых пользователей виртуальных машин VMWare и Microsoft Hyper-V. Основной целью данной процедуры является подключение отладчика уровня ядра Windows к гостевому клиенту.

Достоинства COM-порта

Главное преимущество данной технологии состоит в простоте подключения.

Недостатки COM-порта

Главными недостатками данного порта являются его низкая скорость, большие размеры разъемов, а также высокие требования к времени отклика операционной системы. Также, в данном стандарте наблюдается высокое количество прерываний (одно прерывание на каждые 8 байт).

Разъемы

Самыми распространенными разъемами стандарта являются 9-ти и 25-ти контактные (DB-9 и DB-25, соответственно), которые были стандартизированы в 1969 году. Это D-образные разъемы. Помимо них использовались и другие, но из этого же семейства: DB-31 и круглые восьмиконтактные DIN-8.

Максимальная скорость передачи (в обычном исполнении) достигает 115 200 бод.

Аппаратура

Разъем обладает следующими контактами:

  • DTR (Data Terminal Ready) - выход на ПК, вход - на модеме. Отвечает за готовность компьютера к работе с модемом. Сброс вызывает почти полную перезагрузку модема. В случае с мышью, данный провод используется для осуществления питания.
  • DSR (Data Set Ready) - вход на ПК, выход - на модеме. Отвечает за готовность модема. Если линия в нуле, то в некоторых операционных системах невозможно открыть порт в качестве файла.
  • RxD (Receive Data) - вход на ПК, выход - на модеме. Обозначает поток входящих в ПК данных.
  • TxD (Transmit Data) - выход на ПК, вход - на модеме. Обозначает поток исходящих от ПК данных.
  • CTS (Clear to Send) - вход на ПК, выход - на модеме. Компьютер должен приостановить процесс передачи данных, пока данный провод не будет выставлен в единицу. Применяется в аппаратном протоколе управления потоком в целях недопущения переполнения на модеме.
  • RTS (Request to Send) - выход на ПК, вход - на модеме. Модем должен приостановить процесс передачи данных, до тех пор, пока провод не будет выставлен в единицу. Применяется в аппаратном протоколе управления потоком в целях недопущения переполнения в оборудовании/драйвере.
  • DCD (Carrier Detect) - вход на ПК, выход - на модеме. После установления связи с модемом с той стороны возводится в единицу, сбрасывается в ноль, в случае разрыва связи. Аппаратура ПК может производить прерывание, в случае наступления подобного события.
  • RI (Ring Indicator) - вход на ПК, выход - на модеме. После детерминации вызывного сигнала телефонного звонка, возводится модемом в единицу. Аппаратная часть ПК может производить прерывание, в случае наступления подобного события.
  • SG (Signal Ground) - общий сигнальный провод порта. Важно: земля - не общая . Обычно провод имеет изоляцию от корпуса ПК или модема.

В нуль-модемном кабеле применяются две перекрещенные пары: TXD/RXD и RTS/CTS.

UART 16550 - стандартная аппаратура порта. Сегодня включена в SuperIO микросхему на материнской плате. Со времен IBM PC, она оснащена аппаратной очередью байтов. Она существенно снижает число возникающих прерываний.

Выбор редакции
Средняя оценка: 4.1 Всего проголосовало: 115 Скачать антивирус бесплатно без регистрации и смс, а главное без проблем — эту...

В последнее время очень часто получаю вопросы от читателей сайта и гостей моего канала Понятное ТВ . Вот некоторые из них: На данный...

Владельцы Android-смартфонов и планшетов, зачастую, ищут способы разблокировки загрузчика (bootloader). Тем не менее, сейчас набирает...

Вы хотите знать, как установить виндовс 7 на ноутбук бесплатно? Столкнулись с необходимостью переустановки операционной системы, но не...
Чтобы выбрать принтер, который подходит именно Вам, для начала необходимо составить для себя примерный перечень требований, на основе...
Компания Samsung за последнее время выпустила такое количество смартфонов линейки Galaxy, что сосчитать их не представляется возможным....
Аббревиатура СКС расшифровывается как структурированная кабельная система . По определению стандартов, СКС - это универсальная...
Персональные компьютеры обладают большими возможностями, о которых многие пользователи даже не догадываются. В данной статье будет...
Одним из популярных форматов изображений является TIF (TIFF — это то же самое). Файл данного расширения расшифровывается как Tagged Image...