COM-порт. Сопряжение устройств с ПК. Программирование
Иногда приходится решать задачу связи электронного устройства с компьютером, будь то просто обмен данными или удалённое управление. Эта статья описывает, как это можно реализовать, используя последовательный порт. Главным его преимуществом является то, что стандартный программный интерфейс Windows (API) позволяет производить непосредственное управление выходными линиями, давая прямой контроль над ними, и имеет функцию ожидания некоторого события, связанного с COM-портом. Также стандарт RS-232, по которому выполнены COM-порты, допускает подключение и отключение кабелей во время работы устройств (hot plug).
Описание
COM-порт (последовательный порт) – двунаправленный интерфейс, передающий данные в последовательном виде (бит за битом) по протоколу RS-232. Это довольно-таки распространённый протокол, применяемый для связи одного устройства (например, компьютера) с другими посредством проводов длиной до 30м. Уровни логических сигналов здесь отличаются от стандартных: уровень логической единицы – от +5 до +15В, уровень логического нуля – от -5 до -15В, что требует дополнительных преобразований схемы, но обеспечивает хорошую помехоустойчивость.
Рассмотрим 9-пинововый разъём (DB-9M). Ниже представлена его распиновка:
| № вывода | Наименование | Характер сигнала | Сигнал |
| 1 | DCD | Входной | Data carrier detect |
| 2 | RxD | Выходной | Transmit data |
| 3 | TxD | Входной | Receive data |
| 4 | DTR | Выходной | Data terminal ready |
| 5 | GND | — | Ground |
| 6 | DSR | Входной | Data set ready |
| 7 | RTS | Выходной | Request to send |
| 8 | CTS | Входной | Clear to send |
| 9 | RI | Входной | Ring indicator |
Больше всего нас будут интересовать пины 2 (передача данных),3 (приём данных) и 5 (земля). Это минимальный набор для возможности двухстороннего общения приборов.
Подробно останавливаться на описании протокола не буду. Для этого есть ГОСТ’ы и т.п. Поэтому мы пойдём дальше и поговорим о том, как же управлять этим зверем.
Применение
Как уже говорилось, уровни ЛС RS-232 отличаются от стандартных уровней ТТЛ. Следовательно, нам необходимо как-то преобразовывать величины напряжений. Т.е. сделать 5В из +15В и 0В из -15В (и наоборот). Один из способов (и, наверное, самый простой) – использование специальной микросхемы MAX232. Она проста в понимании и одновременно может преобразовывать два логических сигнала.
Ниже приведена схема её включения:

Думаю, трудностей быть не должно. Это один из вариантов использования этой микросхемы: передача данных с микроконтроллера на ЭВМ и наоборот. Передаваемый сигнал поступает на ножки TxIN с одной стороны и на RxIN с другой. Входные сигналы снимаются с TxOUT и RxOUT соответственно.
Программирование
Для начала поговорим о программировании портов на низком уровне. Так будет более правильно. Я очень много нервов потратил, разбираясь с этим интерфейсом, пока не начал вникать в принцип его работы на более низком уровне, нежели простая передача символов. Если будет понятно это, значит и с языками высокого уровня проблем не будет.
Ниже представлены адреса COM-портов, с которыми нам придётся работать:
| Название порта | Адрес | IRQ |
| COM 1 | 3F8h | 4 |
| COM 2 | 2F8h | 3 |
| COM 3 | 3E8h | 4 |
| COM 4 | 2E8h | 3 |
Они могут различаться. Установить значения можно в настройках BIOS’а. Это базовые адреса. От них же и будут зависеть адреса регистров, отвечающие за работу портов:
| Адрес | DLAB | Чтение/Запись | Аббревиатура | Название регистра |
| + 0 | =0 | Write | – | Transmitter Holding Buffer |
| =0 | Read | – | Receiver Buffer | |
| =1 | Read/Write | – | Divisor Latch Low Byte | |
| + 1 | =0 | Read/Write | IER | Interrupt Enable Register |
| =1 | Read/Write | – | Divisor Latch High Byte | |
| + 2 | — | Read | IIR | Interrupt Identification Register |
| — | Write | FCR | FIFO Control Register | |
| + 3 | — | Read/Write | LCR | Line Control Register |
| + 4 | — | Read/Write | MCR | Modem Control Register |
| + 5 | — | Read | LSR | Line Status Register |
| + 6 | — | Read | MSR | Modem Status Register |
| + 7 | — | Read/Write | – | Scratch Register |
Первая колонка – адрес регистра относительно базового. Например, для COM1: адрес регистра LCR будет 3F8h+3=3FB. Вторая колонка – DLAB (Divisor Latch Access Bit) бит, определяющий разное назначение для одного и того же регистра.. Т.е. он позволяет оперировать 12-ю регистрами, используя всего 8 адресов. Например, если DLAB=1, то, обращаясь по адресу 3F8h, мы будем устанавливать значение младшего байта делителя частоты тактового генератора. Если же DLAB=0, то, обращаясь по тому же адресу, в этот регистр будет записан передаваемый или принятый байт.
“Нулевой” регистр
Ему соответствуют регистры приёма/передачи данных и установки коэффициента делителя частоты генератора. Как уже было сказано выше, если DLAB=0, то регистр используется для записи принимаемых/передаваемых данных, если же он равен 1, то устанавливается значение младшего байта делителя частоты тактового генератора. От значения этой частоты зависит скорость передачи данных. Старший байт делителя записывается в следующую ячейку памяти (т.е. для порта COM1 это будет 3F9h). Ниже приведена зависимость скорости передачи данных от коэффициента делителя:
| Делитель | Скорость передачи (в бодах) |
Делитель | Скорость передачи (в бодах) |
|---|---|---|---|
| 1040 | 110 | 24 | 4800 |
| 768 | 150 | 12 | 9600 |
| 384 | 300 | 6 | 19200 |
| 192 | 600 | 3 | 38400 |
| 96 | 1200 | 2 | 57600 |
| 48 | 2400 | 1 | 115200 |
Interrupt Enable Register (IER)
Если DLAB=0, то он используется как регистр управления прерываниями от асинхронного адаптера, если DLAB=1, то в нём задаётся старший байт делителя частоты тактового генератора.
| Бит | Значение |
|---|---|
| 0 | 1 – разрешемие прерывания при готовности принимаемых данных. |
| 1 | 1 – разрешение прерывания после передачи байта (когда выходной выходной буфер передачи пуст). |
| 2 | 1 – разрешение прерывания по обнаружении состояния "BREAK" или ошибки. |
| 3 | 1 – разрешение прерывания по изменению на разъёме RS-232C. |
| 4-7 | Не используются, должны быть равны 0. |
Interrupt Identification Register (IIR)
Прерывание – это событие, при котором останавливается выполнение основной программы и начинается выполнение процедуры прерываний. Этот регистр определяет тип произошедшего прерывания.
| Бит | Значение |
| 0 | 1 – нет прерываний, ожидающих обслуживания. |
| 1-2 | 00 – переполнение приёмника, ошибка чётности или формата данных, или при состоянии "BREAK". Сбрасывается после чтения состояния линии и порта 3FDh. |
| 01 – данные приняты и доступны для чтения. Сбрасывается после после чтения регистра LSR. | |
| 11 – Состояние модема. Устонавливается при изменении состояния входных линий CTS, RI, DCD, DSR. | |
| 3-7 | Равны 0. |
Line Control Register (LCR)
Это управляющий регистр.
| Бит 7 | 1 | Divisor Latch Access Bit – задание скорости обмена данными | ||
| 0 | Обычнй режим (управление прерываниями, приём/передача данных) | |||
| Бит 6 | Имитировать обрыв линии (посылает последовательность из нескольких нулей) | |||
| Биты 3 – 5 | Бит 5 | Бит 4 | Бит 3 | Выбор чётности |
| X | X | 0 | No Parity | |
| 0 | 0 | 1 | Odd Parity | |
| 0 | 1 | 1 | Even Parity | |
| 1 | 0 | 1 | High Parity (Sticky) | |
| 1 | 1 | 1 | Low Parity (Sticky) | |
| Бит 2 | Кол-во стоп-битов | |||
| 0 | 1 стоп-бит | |||
| 1 | 2 стоп-бита при 6,7 или 8 бит данных или 1.5 стоп-бита при 5 битах данных. | |||
| Биты 0 And 1 | Бит 1 | Бит 0 | Число битов данных | |
| 0 | 0 | 5 бит | ||
| 0 | 1 | 6 бит | ||
| 1 | 0 | 7 бит | ||
| 1 | 1 | 8 бит | ||
Проверка чётности подразумевает под собой передачу ещё одного бита – бита чётности. Его значение устанавливается таким образом, чтобы в пакете битов общее количество единиц (или нулей) было четно или нечетно, в зависимости от установки регистров порта. Этот бит служит для обнаружения ошибок, которые могут возникнуть при передаче данных из-за помех на линии. Приемное устройство заново вычисляет четность данных и сравнивает результат с принятым битом четности. Если четность не совпала, то считается, что данные переданы с ошибкой.
Стоп-бит означает окончание передачи данных.
Modem Control Register (MCR)
Регистр управления модемом.
| Бит | Значение |
|---|---|
| 0 | Линия DTR |
| 1 | Линия RTS. |
| 2 | Линия OUT1 (запасная) |
| 3 | Линия OUT2 (запасная) |
| 4 | Запуск диагностики при входе асинхронного адаптера, замкнутом на его выход. |
| 5-7 | Равны 0 |
Line Status Register (LSR)
Регистр, определяющий состояние линии.
| Бит | Значение |
|---|---|
| 0 | Данные получены и готовы для чтения, автоматически сбрасывается при чтении данных. |
| 1 | Ошибка переполнения. Был принят новый байт данных, а предыдущий ещё не был считан программой. Предыдущий байт потерен. |
| 2 | Ошибка чётности, сбрасывается после чтения состояния линии. |
| 3 | Ошибка синхронизации. |
| 4 | Обнаружен запрос на прерывание передачи "BREAK" – длинная строка нулей. |
| 5 | Регистр хранения передатчика пуст, в него можно записать новый байт для передачи. |
| 6 | Регистр сдвига передатчика пуст. Этот регистр получает данные из регистра хранения и преобразует их в последовательный вид для передачи. |
| 7 | Тайм-аут (устройство не связано с компьютером). |
Modem Status Register (MSR)
Регистр состояния модема.
| Бит | Значение |
|---|---|
| 0 | Изменилось состояние линии CTS |
| 1 | Изменилось состояние линии DSR |
| 2 | Изменилось состояние линии IR |
| 3 | Изменилось состояние линии DCD |
| 4 | Состояние линии CTS |
| 5 | Состояние линии DSR |
| 6 | Состояние линии IR |
| 7 | Состояние линии DCD |
Ну вот и всё. Оперируя этими регистрами, можно напрямую общаться с COM-портом, управлять передачей и приёмом данных. Если вам не хочется возиться с памятью, можно воспользоваться уже готовыми компонентами для различных сред программирования: C++, VB, Delphi, Pascal и т.д. Они интуитивно понятны, поэтому, думаю, здесь не стоит заострять на них внимание.
Последовательный порт
Ввод-вывод через порты (англ. I/O ports) — схемотехническое решение, организующее взаимодействие процессора и устройств ввода-вывода. Противоположность вводу-выводу через память.
Упоминания в литературе
Связанные понятия (продолжение)
Прошивкой (англ. firmware, fw) называют содержимое энергонезависимой памяти компьютера или любого цифрового вычислительного устройства — микрокалькулятора, сотового телефона, GPS-навигатора и т. д., в которой содержится его программа.
В информатике бу́фер (англ. buffer), мн. ч. бу́феры — это область памяти, используемая для временного хранения данных при вводе или выводе. Обмен данными (ввод и вывод) может происходить как с внешними устройствами, так и с процессами в пределах компьютера. Буферы могут быть реализованы в аппаратном или программном обеспечении, но подавляющее большинство буферов реализуется в программном обеспечении. Буферы используются, когда существует разница между скоростью получения данных и скоростью их обработки.
Компьютерная ши́на (англ. computer bus) в архитектуре компьютера — подсистема, служащая для передачи данных между функциональными блоками компьютера. В устройстве шины можно различить механический, электрический (физический) и логический (управляющий) уровни.
COMандирский порт
Если эти синхроимпульсы передаются от одного устройства другому, то такая передача называется синхронной. Асинхронной же считается такая передача, когда с фиксированной скоростью пересылается только информация, а приемник и передатчик синхронизируют процесс обмена данными самостоятельно. Наш СОМ-порт является асинхронным. Хочется также заметить, что разница между импульсами, по которым синхронизируется передача, и импульсами, синхронизирующими прием, не должна превышать 5% от их частоты. Так что едва ли не основной проблемой для асинхронных интерфейсов является одновременность запуска синхронизирующих генераторов. Для СОМ-порта стандартными являются следующие скорости: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с. Максимальная длина кабеля-соединителя — 15 метров. Есть специальные кабели, которые позволяют увеличить длину соединения до 150 метров. А если использовать устройства, называемые «репитерами» , то расстояние можно еще дополнительно увеличить. Вы спросите, зачем модему кабель в 150 метров? Вполне закономерный вопрос, однако такие расстояния используются в тех случаях, когда к ПК необходимо подключить какое-то специализированное технологическое устройство. Как, например, счетчик электрической энергии находится где-то в распределительном щите, а компьютер — в бухгалтерии.
Компьютерный СОМ-порт работает по стандарту RS-232C , который определяет электрические уровни сигналов и протокол обмена. Порт содержит две линии для обмена информацией (прием и передача), и 9 линий для управления обменом. Если для управления обменом задействовать эти линии, то обмен будет называться «аппаратным» (протокол RTS/CTS ). Однако обмен информацией можно организовать, используя только линии приема и передачи, тогда он будет называться «программным» (протокол XON/XOFF ). В таком режиме посылается символ, сигнализирующий о начале передачи, называется он XON, окончание передачи сигнализируется символом XOFF.
Теперь разберемся, как из цепочки передаваемых бит выделяются байты. Начало байта сигнализирует старт-бит , который имеет всегда определенное значение — 0, окончание — стоп-бит .
Аппаратной основой СОМ-порта является микросхема UART ( Universal Asynchronous Receiver/Transmitter — универсальный асинхронный приемопередатчик), которая с момента своего появления прошла длительный процесс эволюции ( таблица 1 ).
Если вы загляните в окно настройки последовательного порта, то заметите, что список скоростей явно не ограничивается 115.2 Кбит/с. Это связано с тем, что кроме стандартных, можно использовать еще и так называемые высокоскоростные СОМ-порты — Enhanced Serial Ports ( ESP ) и Super High Speed Serial Ports . Это варианты, базирующиеся на микросхемах 16550AF , 16650 , 16750 . Они обеспечивают обмен на скорости до 921.6 Кбит/с. В принципе, все высокоскоростные модемы xDSL содержат в своем составе такую микросхему, которая обеспечивает связь на 230–460 Кбит/с.
Теперь от теоретической части перейду к практической, и опираясь на вышеизложенные теоритические предпосылки, я расскажу о настройках СОМ-порта. Открыв окно свойств порта и выбрав вкладку Настройка , увидим множество опций ( рис. 3 ).

Ну, со скоростью , думаю, все понятно — в этом пункте выбираем скорость обмена между устройством и ПК. В принципе можно выбрать ту скорость, которая вам больше нравится, хотя я полагаю, если у вас модем на 56К, скорость работы порта устанавливать в 19200 бит/с вы не будете :-).
Биты данных — сколько бит передавать за один раз (между старт-битом и стоп-битом).
Четность — выбор способа контроля четности. Кто не знает, контроль четности — способ проверки принятого числа на ошибочность. При передаче к числу добавляется еще один бит, дополняющий количество единиц в числе до четного или нечетного (это уже как выбрано в режиме передачи). Этот бит становится младшим разрядом передаваемого числа и принимает значение 1, если у нас нечетное число единиц, и 0, если четное. При проверке на четность, в случае если мы приняли нечетное число единиц (при проверке на нечетность — наоборот), порт передает устройству информацию об ошибке и просит повторить передачу.
Стоповые биты — количество стоп-бит, необходимых для правильного распознавания конца байта.
Управление потоком — выбор режима управления потоком (аппаратного или программного). В режиме программного управления, при определении ошибки, требуется некоторое время, чтобы отправить сигнал XOFF и приостановить прием, но за это время может произойти передача нескольких байт, которые будут утеряны (в случает отсутствия буфера принимаемых данных).
И наконец, в пункте Дополнительно можно выбрать объем буферов FIFO либо отключить их вообще (что не рекомендуется).
Рассказав про эти настройки, дам вам один совет. Если у вас все нормально работает, не меняйте настройки, стоящие по умолчанию! Менять их необходимо тогда, когда этого требует устройство (о чем, наверняка, будет подробно сказано в инструкции к нему).
Теперь о «железном» конфигурировании СОМ-портов. Данные сведения могут очень пригодиться тем, кто купил внутренний WIN-модем. Как известно, при конфигурировании устройства необходимо указать ресурсы, которые ему необходимы (адрес ввода-вывода, номер прерывания, канал DMA). Система Plug&Play должна самостоятельно выделить эти ресурсы, когда вы установили устройство в систему. Но ничто не идеально, так что если вы установили одно устройство, а оно не работает, к тому же, перестало работать и другое, знайте — ошиблась технология Plug&Play. И вам необходимо указывать ресурсы самостоятельно.
Итак, для коммуникационных портов стандартны перечисленные ниже ресурсы. Диапазон ввода-вывода — 3F8-3FFh для COM1, 2F8-2FFh — для COM2, 3E8-3Efh — для COM3, 2E8-2Efh — для COM4. С прерываниями немного сложнее — для СОМ1 (3) используется IRQ4, для СОМ2 (4) — IRQ3. Теперь, приведя эти цифры, расскажу о подводных камнях, подстерегающих покупателей WIN-модемов. Последние работают через СОМ3 или СОМ4, и при установке часто могут нахомутать с ресурсами, ведь Plug&Play видит их как PCI карту, а не порт. Так что если что-то не работает, разберитесь с использованием ресурсов.
Многие, наверное, знают, что два ПК можно соединить не с помощью сетевой карты, а воспользовавшись нуль-модемным кабелем. Причем, за нуль-модемным кабелем не обязательно идти в магазин. Его на скорую руку можно сварганить, имея три куска провода и соединив линии: прием-передача и землю (в этом случае используется программный протокол управления потоком данных) ( рис. 4а ). Ну а для полноты картины приведу и распайку полного нуль-модемного кабеля (для аппаратного протокола управления потоком данных) ( рис. 4б ).
Народные умельцы, например, додумались, как с помощью лазерной указки и фотодатчика соорудить «оптический» нуль-модемный кабель. По принципу работы это упрощенный вариант из трех проводов, только с большим количеством начинки. Кто заинтересовался, пишите мне.
Если вы — ярый программист-железячник и захотели самостоятельно написать программу для работы с СОМ-портом, то для получения необходимой справочной информации о программировании этого чуда техники я советую зайти на http://www.codenet.ru/progr/other/comport.php. Там есть все, связанное с конфигурированием порта на уровне регистров.
Теперь немного расскажу вам о тестировании порта. Для его проверки используют специальные разъемы-заглушки, с которыми умеет работать диагностическое программное обеспечение. Принцип проверки состоит в том, что сигналы с выходных линий подаются на линии, предназначенные для приема. По большому счету, такой разъем можно изготовить самостоятельно. Приведу распайку для тестирования с помощью программы Norton Diagnostics :
для 9-контактного разъема:
для 25-контактного разъема:
Думаю, многим читателям будет интересно узнать и о USB и FireWire, самых перспективных на сегодняшний день интерфейсах, им я посвящу отдельные статьи.
COM порт глазами ремонтника. Ремонт, настройка, диагностика. Часть 1, теория.
Статья первая «COM порт – глазами ремонтника. Ремонт, настройка, диагностика».
Данный раздел содержит только теоретические данные и для практики имеет малое значение, однако именно на этот раздел будет ссылаться остальной материал, поэтому обойти стороной этот материал не удастся. Однако тем, кто знаком с принципом работы COM порта, данный раздел желательно пропустить.
Статья первая «COM порт – глазами ремонтника. Ремонт, настройка, диагностика».
Данный раздел содержит только теоретические данные и для практики имеет малое значение, однако именно на этот раздел будет ссылаться остальной материал, поэтому обойти стороной этот материал не удастся. Однако тем, кто знаком с принципом работы COM порта, данный раздел желательно пропустить.
Описание и принцип работы.
COM-порт(Communication port) — порт работающий по стандарту RS-232 (Recommended Standard 232). RS-232 — стандарт описывающий интерфейс для последовательной двунаправленной передачи двоичных данных между терминалом (DTE, Data Terminal Equipment) и конечным устройством (DCE,Data Circuit-Terminating Equipment ). В настоящее время действующим является RS-232C (Recommended Standard 232 Edition: C) редакция 1969 года, именно это стандарт мы и будем рассматривать далее. Интерфейс RS-232 реализован полностью аппаратно, это значит, что он работает всегда, не зависимо от ОС (операционной системы) или даже без ОС.
Разъемы интерфейса COM порта.
На компьютере интерфейс реализуется одним из двух типов разъемов: DB-9M или DB-25M (разъем DB-25M на современных компьютерах не применяется, однако DB-25F(M), напротив, широко используется в переферийных устройствах например — ККМ, принтера).
В современных компьютерах бытового назначения разъем COM порта может не выводится непосредственно наружу, а организован в виде вывода под планку COM порта, либо вообще отсутствует. Начиная с 1999 по спецификации РС 99 интерфейс RS-232 должен заменяться интерфейсом USB.
![]() |
![]() |
![]() |
| COM порт непосредственно установленный на материнской плате | COM порт на материнской плате под планку COM порта | Планка COM порта |
![]() |
| Контакт | Сигнал | Направление | Описание |
|---|---|---|---|
| 1 | DCD | Вход | Data Carrier Detected — Несущая обнаружена |
| 2 | RxD | Вход | Receive Data — Принимаемые данные |
| 3 | TxD | Выход | Transmit Data — Передаваемые данные |
| 4 | DTR | Выход | Data Terminal Ready — Готовность хоста (компьютера) к работе |
| 5 | GND | – | Signal Ground — Схемная земля |
| 6 | DSR | Вход | Data Set Ready — Готовность устройства к работе |
| 7 | RTS | Выход | Request To Send — Запрос на передачу (хост готов к передаче) |
| 8 | CTS | Вход | Clear To Send — Готовность устройства к приему данных (устройство готово к приему) |
| 9 | RI | Вход | Ring Indicator — Индикатор вызова |
Разъем DB25M (папа), внешний вид, расположение контактов (pinout).

Назначение выводов 25 контактного (25pin) разъема DB25M COM порта со стороны компьютера по стандарту RS232C. Направление сигналов указано относительно хоста (компьютера).
| Контакт | Сигнал | Направление | Описание |
|---|---|---|---|
| 1 | PG | – | Protective Ground — Защитное заземление. |
| 2 | TxD | Выход | Transmit Data — Передаваемые данные |
| 3 | RxD | Вход | Receive Data — Принимаемые данные |
| 4 | RTS | Выход | Request To Send — Запрос на передачу (хост готов к передаче) |
| 5 | CTS | Вход | Clear To Send — Готовность устройства к приему данных (устройство готово к приему) |
| 6 | DSR | Вход | Data Set Ready — Готовность устройства к работе |
| 7 | GND | – | Signal Ground — Схемная земля |
| 8 | DCD | Вход | Data Carrier Detected — Несущая обнаружена |
| 20 | DTR | Выход | Data Terminal Ready — Готовность хоста (компьютера) к работе |
| 22 | RI | Вход | Ring Indicator — Индикатор вызова |
Электрические характеристики COM порта (стандарт RS232C).
Полное описание можно посмотреть в документации действующего протокола ITU-T v.28 03.1993 в редакции от 1993 года (скачать).

Эквивалентная электрическая схема RS-232C
- V0— напряжение генератора при разомкнутой схеме
- R0— общее сопротивление генератора
- C0— общая ёмкость генератора
- V1— напряжение между сигнальной линией и общим проводом в месте стыка.
- CL— общая ёмкость приёмника
- RL— общее сопротивление приёмника
- EL— ЭДС приёмника при разомкнутой схеме

- Электрические характеристики приёмника сигналов.
- RL— общее сопротивление приёмника должно находиться в пределах 3000. 7000 Ом.
- V1— напряжение на входе приёмника должно быть в пределах ±3. ±15 В.
- EL— ЭДС приёмника при разомкнутой схеме должно быть не более ±2 В.
- CL— общая ёмкость цепей приёмника должна быть не более 2500 пФ.
- Входной импеданс приёмника не должен быть индуктивным.
- Электрические характеристики генератора сигналов.
- Допускается короткое замыкание сигналов.
- Допускается оставлять выход генератора без нагрузки.
- V0— напряжение генератора при разомкнутой схеме должно быть не более ±25В/±15 В (RS-232/ITU-T v.28)
- R0 и C0 для генератора не нормируются.
- Короткое замыкание цепей генератора не должно вызывать токи величиной более 0,5А.
- Если EL=0, то напряжение на входе приёмника должно быть V1=±5. ±15 В, для любого диапазона нагрузки генератора RL=3000. 7000 Ом.
- Генератор должен быть способен работать на ёмкостную нагрузку C0 плюс 2500 пФ.
- Уровни сигналов для стандарта RS-232C.
- Логической «1» считается информационный сигнал с напряжением V1 менее -3 В.
- Логическим «0» считается информационный сигнал с напряжением V1 более +3 В.
- Сервисный или синхронизирующий сигнал считается включенным «ON»(«MARK») если V1 более +3 В.
- Сервисный или синхронизирующий сигнал считается выключенным «OFF»(«SPACE») если V1 менее -3 В.
- Напряжение в диапазоне V1=-3 В. +3 В считается переходной областью.
- Характеристики сигналов.
- Все сигналы вошедшие в область перехода V1=-3В. +3В должны выйти в противоположный сигнал без повторного захода в эту область (т.е. монотонно).
- Не допускается колебания сигнала в области перехода.
- Сервисные и синхронизирующие сигналы должны проходить область перехода за время не более 1мс.
- Сигналы данных должны проходить область перехода за время не более 3% от времени одиночного элемента, но не более чем за 1 мс.
- Скорость нарастания фронта сигнала не должна превышать величины 30В за миллисекунду.
- Ограничения первых двух пунктов не относятся к электромеханическим устройствам размыкания и замыкания цепи.
Описание контактов интерфейса RS232C
- GND- Ground, (общий) второй провод для всех сигналов.(Сигналы передаются всегда по двум проводам!)
- TxD- Transmited Data, асинхронный канал для передачи данных.
- RxD- Received Data, асинхронный канал для приема данных.
- RTS- Request To Send (запрос на передачу), Выход который говорит о том, что у компьютера есть данные для передачи по каналу TxD для конечного устройства.
- DTR- Data Terminal Ready(готовность терминала данных), Выход который говорит о том, что компьютер(терминал) готов к обмену данными с конечным устройством
- CTS- Clear To Send (очищен для передачи) Вход, который говорит о том, что конечное устройство готово принимать данные от терминала по каналу TxD. Обычно этот сигнал выставляет конечное устройство после того, как оно получит от компьютера сигнал RTS=True(запрос на передачу) и будет готово принять данные от компьютера. Если конечное устройство не выставит сигнал CTS=True, то передача по каналу TxD не начнется. Данный сигнал используется для аппаратного управления потоками данных
- DSR- Data Set Ready(установка данных готова), Вход который говорит о том, что конечное устройство выполнило все установки и готово начать передавать и принимать данные от компьютера. Если конечное устройство модем, то установка DSR=True воспринимается компьютером(терминалом) так, что модем уже установил связь с другим модемом и готов начать процедуру обмена между двумя компьютерами оснащенных модемами
- DCD- Data Carrier Detected(обнаружен носитель информации), Вход который информирует компьютер(терминал) об обнаружении другого терминала, то есть конечное устройство , например модем, обнаружил другой модем, который хочет инициализировать обмен данных между терминалами. Модем выставляет сигнал DCD=True, который обнаруживается на входе компьютера(терминала). Если терминал готов к обмену данными, то он на сигнал DCD=True должен выставить сигнал готовности терминала к обмену данными DTR=True, после чего начинается обмен данными между двумя терминалами.
- RI- Ring Indicator(индикатор звонка), Вход который говорит компьютеру(терминалу) что на конечное устройство поступает сигнал вызова. Например, на модем поступил сигнал вызова с телефонной станции, совсем не обязательно, что этот вызов закончится обменом данных.
Следует отметить, что данные инверитрованы, т.е -12в- это логическая еденица, +12в -это логический ноль, а служебные сигналы +12в — это Mark (логическая еденица), -12 — это Space(логический ноль).
Протокол обмена данными.
В протоколе RS-232 существуют два метода управления обменом данных: аппаратный и программный, а также два режима передачи: синхронный и асинхронный. Протокол позволяет использовать любой из методов управления совместно с любым режимом передачи. Также допускается работа без управления потоком, что подразумевает постоянную готовность хоста и устройства к приему данных, когда связь установлена (сигналы DTR и DSR установлены).
Аппаратный метод управления реализуется с помощью сигналов RTS и CTS. Для передачи данных хост (компьютер) устанавливает сигнал RTS и ждет установки устройством сигнала CTS, после чего начинает передачу данных до тех пор, пока сигнал CTS установлен. Сигнал CTS проверяется хостом непосредственно перед началом передачи очередного байта, поэтому байт, который уже начал передаваться, будет передан полностью независимо от значения CTS. В полудуплексном режиме обмена данными (устройство и хост передают данные по очереди, в полнодуплексном режиме они могут делать это одновременно) снятие сигнала RTS хостом означает его переход в режим приема.
Программный метод управления заключается в передаче принимающей стороной специальных символов остановки (символ с кодом 0x13, называемый XOFF) и возобновления (символ с кодом 0x11, называемый XON) передачи. При получении данных символов передающая сторона должна соответственно остановить передачу или возобновить ее (при наличии данных, ожидающих передачи). Этот метод проще с точки зрения реализации аппаратуры, однако обеспечивает более медленную реакцию и соответственно требует заблаговременного извещения передатчика при уменьшении свободного места в приемном буфере до определенного предела.
Синхронный режим передачи подразумевает непрерывный обмен данными, когда биты следуют один за другим без дополнительных пауз с заданной скоростью. Этот режим COM-портом не поддерживается.
Асинхронный режим передачи состоит в том, что каждый байт данных (и бит контроля четности, в случае его наличия) «оборачивается» синхронизирующей последовательностью из одного нулевого старт-бита и одного или нескольких единичных стоп-битов.
Протокол имеет ряд переменных параметров, которые должны быть приняты одинаковыми на стороне приемника и на стороне передатчика для успешного обмена данными:





