0

Для чего нужен последовательный порт

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

Использование

Итак, перед тем как подробнее поговорить о том, что такое COM-порт, необходимо заглянуть в прошлое для понимания его значения. Буквально 15 лет назад использовался способ подключения устройств к компьютеру посредством специального стандартного разъема, расположенного на задней панели системного блока с применением специального сериального кабеля RS-232. У этого способа имеется множество недостатков. Такой кабель, по современным меркам, предоставляет крайне низкую скорость передачи данных – примерно сотню килобит в секунду. Помимо того, когда производилось физическое соединение разъемов, необходимо было осуществлять выключение оборудования, а сами они крепились друг к другу при помощи винтов, обеспечивающих надежность, при этом их размеры отличались немалой величиной.

Немного истории

COM-порт на тогдашних компьютерах традиционно носил номер 1 или 2, так как обычно их было не больше двух. Можно было установить дополнительные порты, если в этом возникала необходимость. Когда пользователем производилась настройка программного обеспечения, требовалось не перепутать и правильно установить именно тот, к которому обеспечивалось подключение нужного оборудования. Каждый COM-порт требовал правильной настройки скорости передачи данных, а также ряда иных загадочных параметров, о которых было известно только узкому кругу специалистов. Чтобы подключение аппаратуры было успешным, все необходимые параметры требовалось откуда-то узнать либо экспериментально подобрать, так как в этом случае отсутствовало какое-либо автоматическое конфигурирование. Помимо этого, подключение через COM-порт допускало соединение любого программного обеспечения с произвольным внешним оборудованием, даже совершенно несовместимым, из-за чего в процессе настроек и возникало огромное количество ошибок.

Современность

Сейчас соединение через COM-порт полностью вытеснено более современным методом, который не требует особых знаний для реализации, а именно посредством USB-порта. Этот метод лишен всех недостатков, упомянутых ранее. Однако современные стандарты совместимости соединения всевозможного GPS-оборудования и весьма разнородного программного обеспечения сформировались довольно давно вокруг концепции COM-портов, ставших на текущий момент архаичными.

Это сопряжено с тем, что изначально практически любое оборудование, в том числе и GPS, было внешним, а его соединение с компьютером производилось посредством серийного кабеля, подключенного к одному из аппаратных портов. От пользователя в процессе настройки требовалось правильно подобрать номер порта и скорость трансляции данных по нему. В то время возник основной стандарт передачи данных от GPS-приемника к программе, который теперь называется NMEA-0183. Фактически данный стандарт предписывает всем разработчикам даже современнейшей аппаратуры и программного обеспечения обмениваться данными посредством COM-портов. И все это в условиях того, что на современных компьютерах, а также на КПК, уже давно главным является стандарт USB. А еще одна особенность состоит в том, что в последнее время GPS-приемники все чаще стали устанавливать непосредственно внутрь корпуса устройства, то есть между ним и основным девайсом вообще отсутствует какой-либо соединительный кабель.

Виртуальные КОМ-порты

Выход из положения был придуман, а именно разработаны «виртуальные» COM-порты. Получается, что внутреннее устройство КПК, к примеру, GPS-приемник, программно имитируется в виде COM-порта, при этом в аппаратном плане таковым не являясь. При этом программе, которая рассчитана на сопряжение посредством подобного стандарта, нет разницы, как он реализован. Тут допускается наличие виртуальной имитации, а не обязательное присутствие аппаратной реализации. Так и удается обеспечить совместимость GPS-программ старого образца с современным оборудованием.

Внесенные изменения

При этом управление COM-портом существенно не изменилось. Пользователь по старинке должен производить сложную настройку чуть ли не вручную. Однако современный COM-порт представляет собой уже не то громоздкое приспособление, размещавшееся на задней панели системного блока, а совсем иное устройство. И тут все дело в том, что с программной точки зрения все их реализации выглядят безлико, то есть нет разницы между виртуальными и реальными портами. Для программного обеспечения порты различаются только номерами, которые им присвоены производителями КПК на совершенно случайной основе. К примеру, приемник от ASUS обычно находится на COM5, а PocketLOOX 560 показывает приемник на COM8. Получается, что программа, которая желает получать от GPS-приемника данные, не имеет изначально никакой достоверной информации об условном номере, под которым фигурирует порт, прописанный соответствующим для приемника на данном КПК.

Как все это работает?

При том, что среди всех имеющихся COM-портов можно провести автоматический поиск подходящего, процедура такого опроса является довольно ненадежной и достаточно громоздкой. Связано это с тем, что устройства, отображаемые в системе в качестве COM-портов, могут быть довольно разнообразными и не иметь отношения к GPS, они могут совершенно непредсказуемо ответить на такой опрос. К примеру, на КПК бывают порты, сопряженные с внутренним сотовым модемом, с USB, с инфракрасным портом, а также с иными элементами. Обращение к ним программы, предназначенной для работы с конкретным приспособлением, может привести к совершенно непредсказуемой реакции, а также к различным сбоям в работе, что часто становится причиной зависания КПК. Именно поэтому попытка открыть COM-порт может привести к неожиданным ситуациям вплоть до включения Bluetooth или инфракрасного порта. А могут быть и более непонятные случаи.

Работа COM-порта

Для COM-портов в качестве основы используется микросхема асинхронного универсального приемопередатчика. Эта микросхема существует в нескольких разновидностях: Intel 16550A, 16550, 16450, 8250. Для каждого COM-порта она содержит регистры приемника и передатчика данных, а также ряд управляющих регистров, к которым есть доступ через программы BIOS, Windows и MS DOS. У последних версий микросхемы имеется набор буферов для временного хранения передаваемых и получаемых данных. Благодаря такой возможности можно реже прерывать работу центрального процессора, а также согласовать скорость трансляции данных.

Читайте также:  Взломали контакт как заблокировать

Основные параметры

Устройство COM-порта предполагает наличие таких характерных особенностей:

– базового адреса порта для ввода и вывода информации;

– номера аппаратного прерывания;

– размера одного блока информации;

– скорости, с которой передаются данные;

– режима детектирования честности;

– способа управления потоками информации;

– количества стоповых бит.

Как проверить COM-порт компьютера? На что обратить внимание?

Как уже было сказано ранее, этот тип порта представляет собой двунаправленный интерфейс для передачи информации на битовом уровне последовательным способом. Отличительной характеристикой в сравнении с параллельным портом тут является передача данных бит за битом. Анатомия COM-порта такова, что на компьютере не он один использует последовательный способ передачи данных. Например, такие интерфейсы, как Ethernet или USB, тоже используют аналогичный принцип, но так сложилось исторически, что последовательным принято называть именно порт стандарта RS232.

Очень часто требуется открыть COM-порт для проведения ремонта и диагностики компьютера, при этом его также необходимо проверить на работоспособность. Сжечь элемент ведь очень просто. Чаще всего это происходит по вине пользователя, который производит отключение устройства неправильно, выдергивая разъем при подключенном интерфейсе. Простейшим способом проверки работоспособности интерфейса является подключение к нему мышки. Однако так сложно получить полную картину, так как манипулятор задействует только половину сигнальных линий из восьми имеющихся. Только использование специальной заглушки и программы позволит провести проверку работоспособности. Для этих целей уже существует специально разработанное программное обеспечение.

После́довательный порт (англ. serial port , COM-порт [1] , англ. communications port ) — сленговое название интерфейса стандарта RS-232, которым массово оснащались персональные компьютеры. Порт называется «последовательным», так как информация через него передаётся по одному биту, последовательно бит за битом (в отличие от параллельного порта). Несмотря на то, что некоторые интерфейсы компьютера (например, Ethernet, FireWire и USB) тоже используют последовательный способ обмена информацией, название «последовательный порт» закрепилось за портом стандарта RS-232.

Содержание

Назначение [ править | править код ]

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

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

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

Разъёмы [ править | править код ]

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

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

Актуальность [ править | править код ]

Широко распространённый в IBM PC-совместимых компьютерах, интерфейс RS-232 не пригоден для развлекательных и офисных задач, зато широко используется в прикладных задачах, поэтому попытки избавиться в современных материнских платах от наследия старых интерфейсов обречены. Спецификация PC99 — один из безуспешных примеров нажиться [ источник не указан 135 дней ] на масштабной замене «устаревшего» оборудования. Про неё пишут [ источник не указан 135 дней ] , что она «ныне устарела и представляет исключительно исторический интерес», а производство «устаревшего» оборудования процветает. В офисных и домашних компьютерах, где расстояния и помехи невелики, а скорость обмена востребована, RS-232 практически вытеснен интерфейсом USB.

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

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

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

В виде UART, отличающегося уровнями напряжения и отсутствием дополнительных сигналов, присутствует практически во всех микроконтроллерах, кроме самых-самых маленьких, SoC, платах разработчиков, а также присутствует на платах большей части устройств, хотя разъём и не выведен на корпус. Такая популярность связана с простотой этого интерфейса, как с физической точки зрения, так и с легкостью доступа к порту со стороны ПО по сравнению с другими интерфейсами.

Аппаратура [ править | править код ]

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

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 и IBM PC/XT аппаратура порта была построена на микросхеме UART 8250 фирмы National Semiconductor, затем микросхема была заменена на 16450, программно совместимой с предыдущими, но позволявшей использовать скорости вплоть до 115200 бит в секунду, затем появилась микросхема 16550, содержавшая двунаправленный FIFO буфер данных для снижения нагрузки на контроллер прерываний. В настоящее время включена в SuperIO микросхему на материнской плате вместе с рядом иных устройств.

Программный доступ к СОМ-порту [ править | править код ]

UNIX [ править | править код ]

COM-порты в операционной системе Unix (Linux) — это файлы символьных устройств. Обычно эти файлы располагаются в каталоге /dev и называются

Для программного доступа к СОМ-порту необходимо открыть на чтение/запись соответствующий файл и сделать вызовы специальных функций tcgetattr (для того, чтобы узнать текущие настройки) и tcsetattr (чтобы установить новые настройки). Также может потребоваться сделать вызовы ioctl с определенными параметрами. После этого при записи в файл данные будут отправляться через порт, а при чтении программа будет получать уже принятые данные из буфера СОМ-порта.

Устройства с именами «ttyxx» используются как серверные, то есть приложение, открывшее данное устройство, обычно ожидает входящего звонка от модема. Классическим таким приложением, используемым по умолчанию, является getty, которая ожидает входящего звонка, далее настраивает COM-порт в соответствии с файлами конфигурации, выводит туда "login: ", принимает имя пользователя и запускает как потомка команду «login ИмяПользователя», со стандартным вводом и выводом, перенаправленными в COM-порт. Эта команда в свою очередь запрашивает и проверяет пароль, и в случае успеха запускает (не как потомка, а вместо себя вызовом execve в том же процессе) default user shell, прописанный в файле /etc/passwd.

Эта технология исторически возникла в 1970-е годы, когда под ОС UNIX использовались компьютеры вроде PDP-11 (в СССР серия называлась СМ ЭВМ) или VAX, позволяющие подключение многих терминалов для работы многих пользователей. Терминалы — а значит, и весь интерфейс пользователя — при этом подключались через последовательные порты, с возможностью подключения вместо терминала модема и дальнейшего дозвона на компьютер по телефону. До сих пор в UNIX-подобных ОС существует терминальный стек, и обычно 3 реализации терминалов — последовательный порт, консоль текстового режима экрана+клавиатура, и «обратная петля» в один из открытых файлов управляющего приложения (так реализованы telnetd, sshd и xterm).

Клиентские устройства последовательного порта, предназначенные для совершения звонков вовне, в многих UNIX (не во всех) называются cuaxx.

Так как последовательный порт в UNIX доступен только через терминальный стек, он может быть управляющим терминалом для процессов и групп (посылать SIGHUP при разрыве связи от модема и SIGINT при нажатии Ctrl-C), на уровне ядра поддерживать редактирование последней введенной строки клавишами стрелочек, и т. д. Для отключения этой возможности с целью превращения устройства в «трубу» для потока байт необходимы вызовы ioctl.

Windows [ править | править код ]

Имеется викиучебник по теме «COM-порт в Windows (программирование)»

С последовательными портами в Win32 работают как с файлами. Для открытия порта используется функция CreateFile. Портов может быть много, поэтому они обозначаются как COM1, COM2 и т. д. по порядку обнаружения драйверов соответствующих устройств. Первые 9 портов доступны в том числе как именованные каналы для передачи данных (доступны по именам «COM1», «COM2», …), такой метод доступа считается устаревшим. Рекомендуется ко всем портам обращаться как к файлам (по именам «\.COM1», «\.COM2»,… «\.COMx»).

Поиск PnP-имен устройств в системе осуществляется вызовом SetupDiGetClassDevs. В реестре существует раздел HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM, в котором отображаются имеющиеся в данный момент COM-порты.

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

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

OS/2 [ править | править код ]

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

Нуль-модемный кабель [ править | править код ]

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

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, она оснащена аппаратной очередью байтов. Она существенно снижает число возникающих прерываний.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *