04.05.2024

COM-порт (последовательный порт). Порты COM и USB Com порт что можно подключить


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

Последовательный порт, как и параллельный, появился задолго до появления персональных компьютеров архитектуры IBM PC. В первых персоналках COM-порт использовался для подсоединения периферийных устройств. Однако сфера его применения несколько отличалась от сферы применения параллельного порта. Если параллельный порт использовался в основном для подключения принтеров, то COM-порт (кстати, приставка COM – это всего лишь сокращение от слова communication) обычно применялся для работы с телекоммуникационными устройствами, такими, как модемы. Тем не менее, к порту можно подключить, например, мышь, а также другие периферийные устройства.

COM-порт, основные сферы применения:

  1. Подключение терминалов
  2. ~ внешних модемов
  3. ~ принтеров и плоттеров
  4. ~ мыши
  5. Прямое соединение двух компьютеров

В настоящее время сфера применения СОМ-порта значительно сократилась благодаря внедрению более быстрого и компактного, и, кстати, тоже последовательного, интерфейса USB. Почти вышли из употребления внешние модемы, рассчитанные на подключение к порту, а также «COM-овские» мыши. Да и редко кто теперь соединяет два компьютера при помощи нуль-модемного кабеля.

Тем не менее, в ряде специализированных устройств последовательный порт до сих используется. Можно найти его и на многих материнских платах. Дело в том, что по сравнению с USB COM-порт имеет одно важное преимущество – согласно стандарту последовательной передачи данных RS-232, он может работать с устройствами на расстоянии в несколько десятков метров, в то время как радиус действия кабеля USB, как правило, ограничен 5 метрами.

Принцип работы последовательного порта и его отличие от параллельного

В отличие от параллельного (LPT) порта, последовательный порт передает данные побитно по одной-единственной линии, а не по нескольким одновременно. Последовательности битов группируются в серии данных, начинающиеся стартовым битом и кончающиеся стоповым битом, а также битами контроля четности, использующимися для контроля ошибок. Отсюда происходит и еще одно английское название, которое имеет последовательный порт – Serial Port.

Последовательный порт имеет две линии, по которым передаются собственно данные – это линии для передачи данных от терминала (ПК) к коммуникационному устройству и обратно. Кроме того, существует еще несколько управляющих линий. Обслуживает Serial port специальная микросхема UART, которая способна поддерживать относительно высокую скорость передачи данных, достигающую 115 000 бод (байт/с). Правда, стоит отметить, что реальная скорость обмена информацией зависит от обоих коммуникационных устройств. Кроме того, в функции контроллера UART входит преобразование параллельного кода в последовательный и обратно.

Порт использует электрические сигналы сравнительного высокого напряжения – до +15 B и -15 В. Уровень логического нуля последовательного порта составляет +12 В, а логической единицы – -12 В. Такой большой перепад напряжений позволяет гарантировать высокую степень помехоустойчивости передаваемых данных. С другой стороны, используемые в Serial port высокие напряжения требуют сложных схемотехнических решений. Это обстоятельство также поспособствовало снижению популярности порта.

Последовательный интерфейс RS-232

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

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

В современных компьютерах разъем Serial port представляет собой 9-штырьковый разъем типа «вилка» DB-9, хотя стандарт RS-232 описывает также разъем с 25–ю контактами ­– DB-25, который часто применялся на старых компьютерах. Разъем DB-9 обычно расположен на системной плате ПК, хотя в старых компьютерах он мог находиться на специальной мультикарте, вставляемой в слот расширения.

9- штырьковое гнездо DB-9 на материнской плате

Разъем DB-9 на кабеле подключаемого к порту устройства

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

Назначение линий разъема Serial port DB-9 согласно RS-232 и их соответствие контактам разъема DB-25:

Контакт DB-9 Английское название Русское название Контакт DB-25
1 Data Carrier Detect Несущая обнаружена 8
2 Transmit Data Передаваемые данные 2
3 Receive Data Принимаемые данные 3
4 Data Terminal Ready Готовность терминала 20
5 Ground Земля 7
6 Data Set Ready Готовность передающего устройства 6
7 Request To Send Запрос на отправку данных 4
8 Clear To Send Передача данных разрешена 5
9 Ring Indicator Индикатор звонка 22

Конфигурирование и прерывания

Поскольку в компьютере может быть несколько последовательных портов (до 4), то в системе для них выделяется два аппаратных прерывания - IRQ 3 (COM 2 и 4) и IRQ 4 (COM 1 и 3) и несколько прерываний BIOS. Многие коммуникационные программы, а также встроенные модемы используют для своей работы прерывания и адресное пространство портов COM. При этом обычно применяются не реальные порты, а так называемые виртуальные порты, которые эмулируются самой операционной системой.

Как и в случае многих других компонентов материнской платы, параметры работы портов COM, в частности, значения прерываний BIOS, соответствующих аппаратным прерываниям, можно настроить через интерфейс BIOS Setup. Для этого используются такие опции BIOS, как COM Port, Onboard Serial Port, Serial Port Address, и т.п.

Заключение

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

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

Приветствую Вас, друзья. Продолжаем изучать системный блок. Сегодня расскажу о компьютерных портах. Что это такое? С бурным развитием интернет-технологий понятие «порт», «сокет» у многих на слуху. Это другая ветвь, и мы сегодня не будем говорить о ней. Тема этой статьи содержит информацию о сугубо «железных», » реальных» разъемах (или портах), которые предназначены для подключения различных устройств к системному блоку.

«Железо» тоже совершенствуется и с каждой генерацией мы обнаруживаем новые виды разъемов (или порты) на купленных системных блоках. К ним подключаются различные, так называемые периферийные устройства. Системный блок + монитор = компьютер. Все что подключается к ним (принтеры, сканеры, программаторы, видеокарты, мониторы и так далее) — это периферия.

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

На нее так же можно дополнительно установить и дополнительные устройства через специальные слоты расширения. К таким устройствам относятся дискретные видеокарты, сетевые карты, адаптеры Wi-Fi, USB-хабы, карт-ридеры, электронные замки, видеокарты и много чего еще.

Наличие слотов расширения позволяет самостоятельно собирать компьютер наподобие конструктора, на основе ваших предпочтений, не тратя лишних денек. Потому что разработчики давно стандартизировали выпускаемое оборудование. При необходимости можно провести его обновление. Это главная причина того, что IBM-PC совместимые компьютеры (так называется такая платформа) когда-то вытеснили с рынка Apple Macintosh.

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

Краткий список портов компьютера

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

  1. Последовательный порты;
  2. Параллельный порт;
  3. Порты для компьютера и мыши;
  4. Порты USB;
  5. Порты SCSI;
  6. Видео-порты;
  7. Разъемы сетевых кабелей;
  8. Разъемы аудио;
  9. Карт-ридеры;

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


Такие платы могут поддерживать и аудио или видеоформаты сторонних производителей (Sony, Philips) и тогда можно встретить на таком компьютере соответствующий разъем. Особым разнообразием сегодня могут похвастаться аудио и видео порты.

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

Последовательный порт — сегодня уже морально устаревшая вещь. Но для специалистов, которые занимаются ремонтом электронных устройств они представляют ценность. Изначально такой порт использовался для подключения модема. Скорость передачи данных типичная — от 110 до 115200 бит в секунду. Их обычно было по два с разъемами DB 9 типа «папа»:

Скорости вполне хватает для программатора, чтобы прошить микроконтроллер или мобильный телефон. Или для обмена данными с источником бесперебойного питания. Называются эти порты COM1 и COM2.

Параллельный порт — знаком многим, потому что в основном предназначался для подключения принтера. Так же почти исчезнувший вид. Использовался так же для подключения аппаратных ключей защиты.


Для подключения используется разъем DB25 типа «мама». Скорость передачи данных небольшая — но вполне хватает для программатора или старого лазерного принтера. У большинства старых компьютеров всегда было по два последовательных порта и один параллельный.

Порты для клавиатуры и мыши знакомы всем пользователям. В современных компьютерах они имеют фиолетовый и зеленый цвета. Такого же цвета штекеры у мыши и клавы. Перепутать сложно. Разъемы шестиконтактные (mini -Din) типа «мама». Их придумали в Германии и это стало стандартом. Другое название IBM/PC2

так как впервые они были использованы на уже упомянутой платформе IBM PC. Если перепутали при подлкючении разъемы — устройства работать не будут. Несомненный плюс — экономят USB порты. Минус — обязательно требуется перезагрузка компьютера если подключили неправильно. Кстати, тоже исчезающий вид. На многих современных компах этот порт оставлен всего один — и покрашен он одновременно в фиолетово-зеленый цвет. Подключать к нему можно только одно устройство или мышь — или клаву.

Порты USB. Универсальная последовательная шина, (Universal Serial Bus ). C 1998 года вытесняет другие порты; даже на автомагнитолах и видеокамерах Вы сегодня найдете этот разъем. У первых поколений скорость передачи данных была около 12 мб /сек. — умопомрачительная по тем временам. Сегодня мы используем USB 3, скорость которого 5 Гбит/с

Эти порты внешне не изменились. На компьютере стоят разъемы типа «А». Разъем на любом подключаемом устройстве принято называть «B». Имеет четыре контакта два для тока, два для передачи данных. Соответственно, на портах USB 3.0 контактов в два раза больше.

Порты SCSI (Small Computer Systems Interface). Довольно специфическая и редкая вещь у нас; мне думается что и за рубежом ее уже не встретишь у рядового пользователя. Полагаю, что устройства с такими интерфейсами делались под заказ — для корпоративного использования. Это — сетевой интерфейс для обмена данными, со скоростью до 160 мбит/с.


Мне попался один раз ноутбук, привезенный из америки 1999 г. выпуска, фирмы Dell. У него имелся один из таких многоконтактных портов. Расположен он был таким образом, что использовать его можно было, только установив ноутбук на стол. Сам разъем закрыт шторками на пружинках. Следовательно, где -то в Америке были и столы, в которые этот разъем встроен… Приносишь,ставишь на стол, и он подключен к корпоративной сети.

Разновидностями интерфейса являются уже знакомый нам DB-25, а так же 50-High-Density, 68-контактный -High-Density, 80-контактный SCA, Centronics. Можно было подключать и жесткие диски к этому интерфейсу. Отвечает за подключение специальная плата — хост-адаптер.


Видеопорты . Их так же не спутаешь с другими. Стандартный видеопорт — 15 контактный VGA разъем типа D синего цвета, «мама». Служит для подключения монитора. Это старый стандарт, принятый в 1987 году. Не на всех материнских платах он бывает. Если его нет у вас «на борту», то его можно найти в нижней части системного блока. В слот расширения установлена видеокарта:

Если вы решили установить видеокарту в дополнение к уже имеющейся («на борту»), то последняя работать уже не будет. Это нормально. Монитор будет работать только при подключении к установленной.

На современных видеокартах VGA порт уже стало трудно встретить; их заменяют другой разновидностью — DVI. На материнской плате переходного типа это выглядит как то так:

Очень часто встречаются случаи, когда выходит из строя VGA- видеокарта. После покупки новой, обнаруживается, что на ней только DVI — порты.В этом случае нужно приобрести переходник и установить его на разъем DVI:

Обращайте внимание, на тип переходника. Дело в том, что и DVI разъемы отличаются — на новых дорогих видеокартах стоят DVI-D или DVI-I порты. Переходники не взаимозаменяемые, уточняйте этот момент у продавца.

В этом случае не нужно будет покупать новый монитор. Новые мониторы пока тоже идут с двумя типами разъемов — VGA и DVI.

Порт HDMI. Куда теперь без него в 21 веке? Мультимедиа-интерфейс предназначен для передачи видео и аудио высокой четкости с защитой от копирования. Одновременно заменяет как и вышеперечисленные видео так и некоторые аудио порты(SCART, VGA, YPbPr, RCA, S-Video.). Наверное этот интерфейс со временем заменит все остальное. Его можно встретить на любой цифровой технике — от фотоаппарата до компьютера (или ноутбука).

Размер сравним с USB портом, а скорость передачи данных огромна по сравнению с выше перечисленными — до 48 Гбит в секунду. Передача данных осуществляется по кабелю с хорошей защитой от помех. Кабель можно подключить к ноутбуку и к телевизору и смотреть видео. Длинна кабеля не должна превышать 10 метров, в противном случае нужен усилитель/повторитель сигнала.

Про аудио-разъемы подробно говорить не буду. Все примерно так же выглядит, как на домашнем DVD проигрывателе, если речь идет о чем- то особенном. В качестве такого примера можно привести разъем SPDiF, который можно было устанавливать на слот расширения:

Аудиостандарт от фирмы SONY и PHILIPS, эта карта подключается к материнской плате с помощью коннектора на соосветствующий разъем. Стандартные гнезда для подключения микрофона, колонок, наушников выглядят так:

Если хотите HD аудио, то возможно вам придется подключить соответствующий адаптер вот сюда. Читайте документацию по своей материнке:

Сетевые порты. Без них в наше время никак не обойтись. Мы получаем интернет именно через сетевой интерфейс по кабелю, или по радио. На материнских платах стоит стандартный встроенный разъем RJ 45 для подключения интернет- кабеля:

На старых компьютерах стандарт скорости был 100 мбит /с, современные сетевые карты выдают 1000 мбит/сек. Если Вам не достаточно одной сетевой карты, можно купить дополнительную и вставить ее в слот расширения:

Такая карта подходит для PCI слота. Есть варианты и поменьше, для PCI-express:

Уточняйте скорость передачи данных той или иной карты при покупке. Для любителей беспроводных сетей так же представлен широки выбор Wi-Fi адаптеров:

Их так же можно подключить в слоты расширения PCI ,либо PCI — ехpress. Однако, если Вы не хотите ковыряться в системном блоке, можно купить и USB — вариант такой карты:

Вы вставляете ее в порт и вводите пароль от WIFI. И у вас подключено еще одно периферийное устройство. У многих моделей домашних принтеров так же есть адаптер WIi-Fi, и при такой настройке можно печатать без проводов. Благо, сегодня богатый выбор и сетевых карт и принтеров.

Как отключить USB порты при выключении компьютера?

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

Клавиатура так же светится, что ночью не совсем удобно, хотя и не плохо (если печатаешь в темноте). Для того, чтобы отключить питание портов насовсем — попробуйте набрать сочетание клавиш Win+R и в строке «Выполнить» вставить команду powercfg /h off.

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

В трудных случаях может помочь документация по материнской плате. Находите нужную перемычку (джампер) и вручную отключаете питание. Но это слишком сложно. А самый простой способ — это купить USB — хаб с выключателями и к нему уже подсоединить нужную периферию. И не мучиться. Пока, до новых встреч!

Описание интерфейса RS-232, формат используемых разъемов и назначение выводов, обозначения сигналов, протокол обмена данными.

Общее описание

Интерфейс RS-232, совсем официально называемый "EIA/TIA-232-E", но более известный как интерфейс "COM-порта", ранее был одним из самых распространенных интерфейсов в компьютерной технике. Он до сих пор встречается в настольных компьютерах, несмотря на появление более скоростных и "интеллектуальных" интерфейсов, таких как USB и FireWare. К его достоинствам с точки зрения радиолюбителей можно отнести невысокую минимальную скорость и простоту реализации протокола в самодельном устройстве.

Физический интерфейс реализуется одним из двух типов разъемов: DB-9M или DB-25M, последний в выпускаемых в настоящее время компьютерах практически не встречается.

Назначение выводов 9-контактного разъема


9-контактная вилка типа DB-9M
Нумерация контактов со стороны штырьков
Направление сигналов указано относительно хоста (компьютера)
Контакт Сигнал Направление Описание
1 CD Вход Обнаружена несущая
2 RXD Вход Принимаемые данные
3 TXD Выход Передаваемые данные
4 DTR Выход Хост готов
5 GND - Общий провод
6 DSR Вход Устройство готово
7 RTS Выход Хост готов к передаче
8 CTS Вход Устройство готово к приему
9 RI Вход Обнаружен вызов

Назначение выводов 25-контактного разъема

Контакт Сигнал Направление Описание
1 SHIELD - Экран
2 TXD Выход Передаваемые данные
3 RXD Вход Принимаемые данные
4 RTS Выход Хост готов к передаче
5 CTS Вход Устройство готово к приему
6 DSR Вход Устройство готово
7 GND - Общий провод
8 CD Вход Обнаружена несущая
9 - - Резерв
10 - - Резерв
11 - - Не используется
12 SCD Вход Обнаружена несущая #2
13 SCTS Вход Устройство готово к приему #2
Контакт Сигнал Направление Описание
14 STXD Выход Передаваемые данные #2
15 TRC Вход Тактирование передатчика
16 SRXD Вход Принимаемые данные #2
17 RCC Вход Тактирование приемника
18 LLOOP Выход Локальная петля
19 SRTS Выход Хост готов к передаче #2
20 DTR Выход Хост готов
21 RLOOP Выход Внешняя петля
22 RI Вход Обнаружен вызов
23 DRD Вход Определена скорость данных
24 TRCO Выход Тактирование внешнего передатчика
25 TEST Вход Тестовый режим

Из таблиц видно, что 25-контактный интерфейс отличается наличием полноценного второго канала приема-передачи (сигналы, обозначенные "#2"), а также многочисленных дополнительных управляющих и контрольных сигналов. Однако, часто, несмотря на наличие в компьютере "широкого" разъема, дополнительные сигналы на нем просто не подключены.

Электрические характеристики

Логические уровни передатчика: "0" - от +5 до +15 Вольт, "1" - от -5 до -15 Вольт.

Логические уровни приемника: "0" - выше +3 Вольт, "1" - ниже -3 Вольт.

входное сопротивление приемника не менее 3 кОм.

Данные характеристики определены стандартом как минимальные, гарантирующие совместимость устройств, однако реальные характеристики обычно существенно лучше, что позволяет, с одной стороны, питать маломощные устройства от порта (например, так спроектированы многочисленные самодельные data-кабели для сотовых телефонов), а с другой - подавать на вход порта инвертированный TTL-уровень вместо двуполярного сигнала.

Описание основных сигналов интерфейса

CD - Устройство устанавливает этот сигнал, когда обнаруживает несущую в принимаемом сигнале. Обычно этот сигнал используется модемами, которые таким образом сообщают хосту о обнаружении работающего модема на другом конце линии.

RXD - Линия приема хостом данных от устройства. Подробно описана в разделе "Протокол обмена данными".

TXD - Линия передачи хостом данных к устройству. Подробно описана в разделе "Протокол обмена данными".

DTR - Хост устанавливает этот сигнал, когда готов к обмену данными. Фактически сигнал устанавливается при открытии порта коммуникационной программой и остается в этом состоянии все время, пока порт открыт.

DSR - Устройство устанавливает этот сигнал, когда включено и готово к обмену данными с хостом. Этот и предыдущий (DTR) сигналы должны быть установлены для обмена данными.

RTS - Хост устанавливает этот сигнал перед тем, как начать передачу данных устройству, а также сигнализирует о готовности к приему данных от устройства. Используется при аппаратном управлении обменом данными.

CTS - Устройство устанавливает этот сигнал в ответ на установку хостом предыдущего (RTS), когда готово принять данные (например, когда предыдущие присланные хостом данные переданы модемом в линию или есть свободное место в промежуточном буфере).

RI - Устройство (обычно модем) устанавливает этот сигнал при получении вызова от удаленной системы, например при приеме телефонного звонка, если модем настроен на прием звонков.

Протокол обмена данными

В протоколе RS-232 существуют два метода управления обменом данных: аппаратный и программный, а также два режима передачи: синхронный и асинхронный. Протокол позволяет использовать любой из методов управления совместно с любым режимом передачи. Также допускается работа без управления потоком, что подразумевает постоянную готовность хоста и устройства к приему данных, когда связь установлена (сигналы DTR и DSR установлены).

Аппаратный метод управления реализуется с помощью сигналов RTS и CTS. Для передачи данных хост (компьютер) устанавливает сигнал RTS и ждет установки устройством сигнала CTS, после чего начинает передачу данных до тех пор, пока сигнал CTS установлен. Сигнал CTS проверяется хостом непосредственно перед началом передачи очередного байта, поэтому байт, который уже начал передаваться, будет передан полностью независимо от значения CTS. В полудуплексном режиме обмена данными (устройство и хост передают данные по очереди, в полнодуплексном режиме они могут делать это одновременно) снятие сигнала RTS хостом означает его переход в режим приема.

Программный метод управления заключается в передаче принимающей стороной специальных символов остановки (символ с кодом 0x13, называемый XOFF) и возобновления (символ с кодом 0x11, называемый XON) передачи. При получении данных символов передающая сторона должна соответственно остановить передачу или возобновить ее (при наличии данных, ожидающих передачи). Этот метод проще с точки зрения реализации аппаратуры, однако обеспечивает более медленную реакцию и соответственно требует заблаговременного извещения передатчика при уменьшении свободного места в приемном буфере до определенного предела.

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

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

Один из возможных алгоритмов работы приемника следующий:

  1. Ожидать уровня "0" сигнала приема (RXD в случае хоста, TXD в случае устройства).
  2. Отсчитать половину длительности бита и проверить, что уровень сигнала все еще "0"
  3. Отсчитать полную длительность бита и текущий уровень сигнала записать в младший бит данных (бит 0)
  4. Повторить предыдущий пункт для всех остальных битов данных
  5. Отсчитать полную длительность бита и текущий уровень сигнала использовать для проверки правильности приема с помощью контроля четности (см. далее)
  6. Отсчитать полную длительность бита и убедиться, что текущий уровень сигнала "1".

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


  • ONESTOPBIT - один стоповый бит;
  • ONE5STOPBIT - полтора стоповых бита (практически не
    используется);
  • TWOSTOPBIT - два стоповых бита.

После того как все поля структуры DCB заполнены, необходимо
произвести конфигурирование порта, вызвав функцию SetCommState:

BOOL SetCommState(

HANDLE hFile,

LPDCB lpDCB

В случае успешного завершения функция вернет отличное от нуля
значение, а в случае ошибки - нуль.

Второй обязательной структурой для настройки порта является
структура COMMTIMEOUTS. Она определяет параметры временных задержек
при приеме-передаче. Вот описание этой структуры:

typedef struct _COMMTIMEOUTS {

DWORD ReadIntervalTimeout;

DWORD ReadTotalTimeoutMultiplier;

DWORD ReadTotalTimeoutConstant;

DWORD WriteTotalTimeoutMultiplier;

DWORD WriteTotalTimeoutConstant;

} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

Поля структуры COMMTIMEOUTS имеют следующие значения:


  • ReadIntervalTimeout - максимальное временной промежуток
    (в миллисекундах), допустимый между двумя считываемыми с
    коммуникационной линии последовательными символами. Во время
    операции чтения временной период начинает отсчитываться с момента
    приема первого символа. Если интервал между двумя
    последовательными символами превысит заданное значение, операция
    чтения завершается и все данные, накопленные в буфере, передаются
    в программу. Нулевое значение данного поля означает, что данный
    тайм-аут не используется.
  • ReadTotalTimeoutMultiplier - задает множитель (в


    умножается на количество запрошенных для чтения символов.
  • ReadTotalTimeoutConstant - задает константу (в

    операции чтения. Для каждой операции чтения данное значение
    плюсуется к результату умножения ReadTotalTimeoutMultiplier на
    количество запрошенных для чтения символов. Нулевое значение полей
    ReadTotalTimeoutMultiplier и ReadTotalTimeoutConstant означает,
    что общий тайм-аут для операции чтения не используется.
  • WriteTotalTimeoutMultiplier - задает множитель (в
    миллисекундах), используемый для вычисления общего тайм-аута

    умножается на количество записываемых символов.
  • WriteTotalTimeoutConstant - задает константу (в
    миллисекундах), используемую для вычисления общего тайм-аута
    операции записи. Для каждой операции записи данное значение
    прибавляется к результату умножения WriteTotalTimeoutMultiplier на
    количество записываемых символов. Нулевое значение полей
    WriteTotalTimeoutMultiplier и WriteTotalTimeoutConstant означает,
    что общий тайм-аут для операции записи не используется.

Немного поподробнее о тайм-аутах. Пусть мы считываем из порта 50
символов со скоростью 9 600 бит/с. Если при этом используется 8 бит
на символ, дополнение до четности и один стоповый бит, то на один
символ в физической линии приходится 11 бит (включая стартовый бит).
Значит, 50 символов на скорости 9 600 бит/с будут приниматься

50×11/9600=0,0572916 с

или примерно 57,3 миллисекунды, при условии нулевого интервала
между приемом последовательных символов. Если же интервал между
символами составляет примерно половину времени передачи одного
символа, т. е. 0,5 миллисекунд, то время приема будет

50×11/9600+49×0,0005=0,0817916 с

или примерно 82 миллисекунды. Если в процессе чтения прошло более
82 миллисекунд, то мы вправе предположить, что произошла ошибка в
работе внешнего устройства и можем прекратить считывание, тем самым
избежав зависания программы. Это и есть общий тайм-аут операции
чтения. Аналогично существует и общий тайм-аут операции записи.

Формула для вычисления общего тайм-аута операции, например,
чтения, выглядит так:

NumOfChar x ReadTotalTimeoutMultiplier +
ReadTotalTimeoutConstant

где NumOfChar - число символов, запрошенных для операции чтения.

В нашем случае тайм-ауты записи можно не использовать и
установить их равными нулю.

После заполнения структуры COMMTIMEOUTS, необходимо вызвать
функцию установки тайм-аутов:

BOOL SetCommTimeouts(

HANDLE hFile,

LPCOMMTIMEOUTS lpCommTimeouts

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

BOOL SetupComm(

HANDLE hFile,

DWORD dwInQueue,

DWORD dwOutQueue

Допустим, вы обмениваетесь с внешним устройством пакетами
информации размером 1024 байта, тогда разумным размером буферов
будет значение 1200. Функция SetupComm интересна тем, что она может
просто принять ваши размеры к сведению, внеся свои коррективы, либо
вообще отвергнуть предложенные вами размеры буферов - в таком случае
эта функция завершится ошибкой.

Приведу пример открытия и конфигурирования последовательного
порта COM1. Для краткости - без определения ошибок. В данном примере
порт открывается для работы со скоростью 9 600 бит/c, используется 1
стоповый бит, бит четности не используется:

#include

. . . . . . . . . .

HANDLE handle;

COMMTIMEOUTS CommTimeOuts;

DCB dcb;

handle = CreateFile(«COM1», GENERIC_READ | GENERIC_WRITE,
NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

SetupComm(handle, SizeBuffer, SizeBuffer);

GetCommState(handle, &dcb);

dcb.BaudRate = CBR_9600;

dcb.fBinary = TRUE;

dcb.fOutxCtsFlow = FALSE;

dcb.fOutxDsrFlow = FALSE;

dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;

dcb.fDsrSensitivity = FALSE;

dcb.fNull = FALSE;

dcb.fRtsControl = RTS_CONTROL_DISABLE;

dcb.fAbortOnError = FALSE;

dcb.ByteSize = 8;

dcb.Parity = NOPARITY;

dcb.StopBits = 1;

SetCommState(handle, &dcb);

CommTimeOuts.ReadIntervalTimeout= 10;

CommTimeOuts.ReadTotalTimeoutMultiplier = 1;

// значений этих тайм – аутов вполне хватает для уверенного
приема

// даже на скорости 110 бод

CommTimeOuts.ReadTotalTimeoutConstant = 100;

// используется в данном случае как время ожидания
посылки

CommTimeOuts.WriteTotalTimeoutMultiplier = 0;

CommTimeOuts.WriteTotalTimeoutConstant = 0;

SetCommTimeouts(handle, &CommTimeOuts);

PurgeComm(handle, PURGE_RXCLEAR);

PurgeComm(handle, PURGE_TXCLEAR);

После открытия порта первым делом необходимо сбросить его, так
как в буферах приема и передачи может находиться “мусор”. Поэтому в
конце примера мы применили ранее не известную нам функцию
PurgeComm:

BOOL PurgeComm(

HANDLE hFile,

DWORD dwFlags

Эта функция может выполнять две задачи: очищать очереди
приема-передачи в драйвере или же завершать все операции
ввода-вывода. Какие именно действия выполнять, задается другим
параметром:


  • PURGE_TXABORT
    записи, даже если они не завершены;
  • PURGE_RXABORT - немедленно прекращает все операции
    чтения, даже если они не завершены;
  • PURGE_TXCLEAR - очищает очередь передачи в драйвере;
  • PURGE_RXCLEAR - очищает очередь приема в
    драйвере.
    Эти значения можно комбинировать с помощью побитовой
    операции OR. Очищать буферы рекомендуется также после ошибок
    приема-передачи и после завершения работы с портом.

Настало время для рассмотрения непосредственно операций
чтения-записи для порта. Как и для работы с файлами, используются
функции ReadFile и WriteFile. Вот их прототипы:

BOOL ReadFile(

HANDLE hFile,

LPVOID lpBuffer,

DWORD nNumOfBytesToRead,

LPDWORD lpNumOfBytesRead,

LPOVERLAPPED lpOverlapped

BOOL WriteFile(

HANDLE hFile,

LPVOID lpBuffer,

DWORD nNumOfBytesToWrite,

LPDWORD lpNumOfBytesWritten,

LPOVERLAPPED lpOverlapped

Рассмотрим назначение параметров этих функций:


  • hFile - описатель открытого файла коммуникационного
    порта;
  • lpBuffer - адрес буфера. Для операции записи данные из
    этого буфера будут передаваться в порт. Для операции чтения в этот
    буфер будут помещаться принятые из линии данные;
  • nNumOfBytesToRead, nNumOfBytesToWrite - число ожидаемых
    к приему или предназначенных для передачи байт;
  • nNumOfBytesRead, nNumOfBytesWritten - число фактически
    принятых или переданных байт. Если принято или передано меньше
    данных, чем запрошено, то для дискового файла это свидетельствует
    об ошибке, а для коммуникационного порта - совсем не обязательно.
    Причина в тайм-аутах.
  • LpOverlapped - адрес структуры OVERLAPPED, используемой
    для асинхронных операций.

В случае нормального завершения функции возвращают значение,
отличное от нуля, в случае ошибки - нуль.

Приведу пример операции чтения и записи:

#include

…………..

DWORD numbytes, numbytes_ok, temp;

COMSTAT ComState;

OVERLAPPED Overlap;

char buf_in = «Hello!»;

numbytes = 6;

// если temp не равно нулю, значит - порт в состоянии
ошибки

if(!temp) WriteFile(handle, buf_in, numbytes,
&numbytes_ok, &Overlap);

ClearCommError(handle, &temp, &ComState);

if(!temp) ReadFile(handle, buf_in, numbytes, &numbytes_ok,
&Overlap);

// в переменной numbytes_ok содержится реальное число
переданных-

// принятых байт

В этом примере мы использовали две неизвестные нам ранее
структуры COMSTAT и OVERLAPPED, а также функцию ClearCommError. Для
нашего случая связи “по трем проводам” структуру OVERLAPPED можно не
рассматривать (просто использовать, как в примере). Прототип функции
ClearCommError имеет вид:

BOOL ClearCommError(

HANDLE hFile,

LPDWORD lpErrors,

LPCOMSTAT lpStat

Эта функция сбрасывает признак ошибки порта (если таковая имела
место) и возвращает информацию о состоянии порта в структуре
COMSTAT:

typedef struct _COMSTAT

DWORD fCtsHold:1;

DWORD fDsrHold:1;

DWORD fRlsdHold:1;

DWORD fXoffHold:1;

DWORD fXoffSent:1;

DWORD fEof:1;

DWORD fTxim:1;

DWORD fReserved:25;

DWORD cbInQue;

DWORD cbOutQue;

} COMSTAT, *LPCOMSTAT;

Нам могут пригодиться два поля этой структуры:


  • CbInQue - число символов в приемном буфере. Эти символы
    приняты из линии, но еще не считаны функцией ReadFile;
  • CbOutQue - число символов в передающем буфере. Эти
    символы еще не переданы в линию.

Остальные поля данной структуры содержат информацию об
ошибках.

И наконец, после завершения работы с портом его следует закрыть.
Закрытие объекта в Win32 выполняет функция CloseHandle:

BOOL CloseHandle(

HANDLE hObject

На нашем сайте вы можете найти полный текст класса для работы с
последовательным портом в асинхронном режиме “по трем проводам”, а
также пример программы с использованием этого класса. Все это
написано под Builder С++, но, поскольку используются только функции
API Win32, текст программы легко изменить под любой компилятор С++.
Возможно также, что класс написан не совсем “по правилам” - прошу
извинить, автор не является “правильным” программистом и пишет так,
как ему удобно J .


© 2024
exotop.ru - ExoTop - интернет и технологии