Анатомия COM-порта. COM-порт. Сопряжение устройств с ПК. Программирование

Возможности 19.08.2019
Возможности

Вот мы и добрались до COM порта. Но с ним все не так просто как с LPT, и его полноценное использование потребует значительно больших усилий. Главной загвоздкой является и его главное преимущество - передача данных в последовательном виде. Если в LPT байт данных передается по 8-ми линиям по биту на каждую, и состояние каждой линии можно было легко посмотреть, то в COM порту байт данных передается бит за битом по одной линии (относительно земли, конечно) и посмотреть что там передается с помощью одних светодиодов не удастся. Для этого нужно специальное устройство - преобразователь потока последовательных данных в парраллельный, т.н. USART (Universal Synchronous/Asynchronous Receiver Transmitter). Например, он есть в составе материнской платы компьютера, снабженного COM портом, в любом более мение серьезном микроконтроллере.


Надеюсь, вы еще пали духом в освоении COM порта. Все не так уж и мрачно. Некоторые результаты можно получить и без USART. Сформулируем задачу, которую реализуем на начальном этапе работы с COM портом:


"Хочу что бы к компьютеру через COM порт подключался светодиод. Запускаю программу. Далаю какое-то действие в этой программе, светодиод загорается, делаю другое - светодиод тухнет."


Задача довольно специфичная (с учетом того, что USART не используется) и является чистой "самопальщиной", но вполне реализуема и работоспособна. Давайте приступим к ее реализации.


1. COM порт

Опять берем системный блок вашего ПК и смотрим в тыловую часть. Примечаем там 9-ти штырьковй разъем - это и есть COM порт. Реально их может быть неколько (до 4-х). На моем ПК установлено два COM порта (см. фото).


2. Удлинитель COM порта


3. Аппаратная часть

С аппаратной частью нам тоже придется "повозиться", в том смысле что она будет сложнее чем с первым устройством для LPT порта. Дело в том что протокол RS-232 по которому идет обмен данными в COM порту, имеет несколько отличное соотношение логическое состояние - напряжение. Если обычно это логический 0 0 В, логическая 1 +5 В, то в RS-232 это соотношение следующее: логический 0 +12 В, логическая 1 -12 В.

И например, получив -12 В не сразу понятно что с этим напряжением делать. Обычно проводят преобразование уровней RS-232 в ТТЛ (0, 5 В). Самый простой вариант - стабилитроны. Но я предлагаю сделать этот преобразователь на специальной микросхеме. Называется она MAX232.

Теперь давайте посмотрим, а какие сигналы из COM порта мы можем посмотреть на светодиодах? В действительности, в COM порту есть аж 6 независимых линий, представляющих интерес для разработчика устройств сопряжения. Две из них пока для нас недоступны - линии по передаче последовательных данных. А вот оставшиеся 4 предназначены для управления и индикации процесса передачи данных и мы сможем "передалать" их под свои нужды. Две из них предназначены для управления со стороны внешнего устройства и мы их пока трогать не будем, а вот последние две оставшиеся линии мы сейчас и поиспользуем. Они называются:

  • RTS - Запрос на передачу. Линия взаимодействия, которая показывает, что компьютер готов к приему данных.
  • DTR - Компьютер готов. Линия взаимодействия, которая показывает, что компьютер включен и готов к связи.

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

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

А вот ее практичекая реализация. Я думаю вы меня простите, что я сделал ее в таком стремном макетном варианте, ибо делать плату для такой "высоко продуктивной" схемы не хочется.


4. Программная часть

Тут все попроще. Давайте создадим Windows приложение в Microsoft Visual C++ 6.0 на основе MFC для управления двумя линиями взаимодействия COM порта. Для этого создаем новый проект MFC и указываем ему имя, например, TestCOM . Далее выбираем вариант построения на основе диалога.

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

Class CTestCOMDlg: public CDialog { // Construction public: CTestCOMDlg(CWnd* pParent = NULL); // standard constructor HANDLE hFile;

Чтобы наша программа могла упрявлять линиями COM порта, его надо сначала открыть. Напишем код, ответственный за открытие порта при загрузке программы.

HFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) { MessageBox("Не удалось открыть порт!", "Ошибка", MB_ICONERROR); } else { MessageBox("Порт успешно открыт", "Ok", MB_OK); }

С помощью стандарной функции Win API CreateFile() открываем COM-порт COM2 . Далее проверяем успешность открытия с выводом информационного сообщения. Вот тут надо сделать важное замечание: COM2 - это в моем компьютере, а на Вашем компьютере Вы могли подключить его к другому COM порту. Соответственно, его имя нужно изменить на то, кокай порт Вы используете. Посмотреть, какие номера портов присутствуют на Вашем компьютере, можно так: Пуск -> Настройка -> Панель управления -> Система -> Оборудование -> Диспетчер устройств -> Порты (COM и LPT) .

В итоге, функция CTestCOMDlg::OnInitDialog() , расположенная в файле TestCOMDlg.cpp , класса нашего диалога должна принять вид:

BOOL CTestCOMDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application"s main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here hFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) { MessageBox("Не удалось открыть порт!", "Оштбка", MB_ICONERROR); } else { MessageBox("Порт успешно открыт", "Ok", MB_OK); } return TRUE; // return TRUE unless you set the focus to a control }

Теперь добавим обработчики кнопок управления линиями. Я дал им соответствующие имена: функция, которая устанавливает еденицу на линии DTR - OnDTR1(), 0 - OnDTR0(). Для линии RTS соответственно аналогичным образом. Напомню, что обработчик создается при двойном щелчке на кнопке. В итоге, эти четыре функции должны принять вид:

Void CTestCOMDlg::OnDTR1() { // TODO: Add your control notification handler code here EscapeCommFunction(hFile, 6); } void CTestCOMDlg::OnDTR0() { // TODO: Add your control notification handler code here EscapeCommFunction(hFile, 5); } void CTestCOMDlg::OnRTS1() { // TODO: Add your control notification handler code here EscapeCommFunction(hFile, 4); } void CTestCOMDlg::OnRTS0() { // TODO: Add your control notification handler code here EscapeCommFunction(hFile, 3); }

Поясню немного как они работают. Как видно, внитри себя они содержат вызов одной и той же Win API функции EscapeCommFunction() с двумя параметрами. Первый из них - это хэндл (HANDLE) на открытый порт, второй - специальный код действия, соответствующий необходимому состоянию линии.

Все, комилируем, запускаем. Если все хорошо, должны увидеть сообщение об успешном открытии порта. Далее, нажатием соответствующих кнопок мигаем светодиодами, подключенными к COM порту.

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

Иногда приходится решать задачу связи электронного устройства с компьютером, будь то просто обмен данными или удалённое управление. Эта статья описывает, как это можно реализовать, используя последовательный порт. Главным его преимуществом является то, что стандартный программный интерфейс 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. Она проста в понимании и одновременно может преобразовывать два логических сигнала.

Ниже приведена схема её включения:


Думаю, трудностей быть не должно. Это один из вариантов использования этой микросхемы: передача данных с микроконтроллера на ЭВМ и наоборот. Передаваемый сигнал поступает на ножки Tx IN с одной стороны и на Rx IN с другой. Входные сигналы снимаются с Tx OUT и Rx OUT соответственно.

Программирование

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

Ниже представлены адреса 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). Ниже приведена зависимость скорости передачи данных от коэффициента делителя:

Interrupt Enable Register (IER)

Если DLAB=0, то он используется как регистр управления прерываниями от асинхронного адаптера, если DLAB=1, то в нём задаётся старший байт делителя частоты тактового генератора.

Interrupt Identification Register (IIR)

Прерывание – это событие, при котором останавливается выполнение основной программы и начинается выполнение процедуры прерываний. Этот регистр определяет тип произошедшего прерывания.

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)

Регистр состояния модема.

Ну вот и всё. Оперируя этими регистрами, можно напрямую общаться с COM-портом, управлять передачей и приёмом данных. Если вам не хочется возиться с памятью, можно воспользоваться уже готовыми компонентами для различных сред программирования: C++, VB, Delphi, Pascal и т.д. Они интуитивно понятны, поэтому, думаю, здесь не стоит заострять на них внимание.

Последовательный порт это устройства ввода-вывода (I/O device). Как устройство I/O это только путь для передачи данных из компьютера и в него. существует также множество других устройств ввода-вывода, таких как последовательные порты, паралельные порты, контроллеры дисков, сетевые карты, устройства универсальной последовательной шины USB, и т.п. Большинство компьютеров имеют один или два последовательный порта . Какждый имеет 9-ти контактный разъем (иногда 25-ти контактный) (рис.1) на задней стенке системного блока компьютера. Программы могут отсылать данные (байты) через контакт отправки данных (output) и получать байты через другой контакт приема данных (input). Все остальные контакты служат для управления и земли.

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

Большинство электронных компонентов последовательного порта сосредоточено в одно компьютерном чипе (микросхеме) называемом UART .

Контакты и провода

Старые компьютеры используют 25-ти контактные разъемы, но только 9 контактов реально задействовано на сегодняшний день. Каждый из 9-ти контактов соединен обычно с проводом. за исключением двух проводов для передачи и приема данных, остальные используются для контроля и земли. Напряжение на каждом из контактов и проводов измеряется относительно сигнальной земли. Поэтому минимальное количество проводом для двунаправленной передачи данных - 3. В редких случаях для работы может хватитть и двух проводов (без сигнальной земли), однако это может привести к низкой производительности, и иногда к ошибкам при передаче данных.

Остается еще несколько проводов, которые предназначены только для управления (контроля) и не используются для передачи данных. Все эти сигналы могли бы передаваться по одной линии, но вместо этого, для выделены отдельные провода. Некоторые (или все вместе) эти сигнальные линии называются "линии состояния модема". Линии состояния могут находиться в одном из двух состояний установленном (включено) +12 вольт или сброшенном (выключено) -12 вольт. Одни из этих проводов сигнализируют компьютеру о том, что нужно прекратить передачу данных через последовательный порт. Другие в свою очередь сигнализируют устройству, подключенному к последовательному порту, прекратить передачу даных в компьютер. Если подключенно устройство это модем, то оставшиеся линии могут указывать модуме на то, что нужно занять телефонную линию или сигнализируют компьютеру о том, что соединение было установлено или что есть звонок на телефонной линии (значит кото-то соединиться с компьютером). Смотрите раздел Контакты и сигналы с более полной информацией.

RS-232 или EIA-232, и т.п.

Последовательный порт (serial port ) (не путать с USB) обычно соответствует стандарту RS-232-C , EIA-232-D , или EIA-232-E . Это три обозачения одного и тоже. Основной стандарт RS (рекомендованный стандарт - Recommended Standard) получил префикс EIA (Electronics Industries Association) и позднее EIA/TIA после того как организация EIA было объединена с TIA (Telecommunications Industries Association). Спецификация EIA-232 также охватывает синхронную передачу данных, но в большинстве случаев синхронная передача данных не поддерживается чипами в компьютерах. Обозначение RS устарело, однако до сих пор широко используется. EIA будет использоваться далее на этом сайте более часто. Некоторые документы используют полное обозначение EIA/TIA.

Обмен данными (Скорости передачи данных)

Данные (байты из которых состоят письма, картинки и т.п.) проходят через последовательный порт. Скорости передачи данных (такие как 56k (56000) бит/сек) называются (неверно) "скоростью". Большинство людей неверно говорят "скорость" вместо "коэффициент скорости".

Важно знать, что средняя скорость передачи данных зачастую меньше максимально заявленной. Задержки (или периоды ожидания) и в результате скорость становится меньше. Эти задержки могут увеличиваться в щависимости от типа контроля передачи данных. Даже в лучшем случае всегда есть задержки между байтами, пусть даже и небольшие (несколько микросекунд). Если устройство, соединенное с компьютером через последоватльный порт не может работать на полной скорости, то средняя скорость должна быть уменьшена.

Контроль передачи данных

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

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 — хаб с выключателями и к нему уже подсоединить нужную периферию. И не мучиться. Пока, до новых встреч!



Рекомендуем почитать

Наверх