Последовательный порт com 1. Что такое COM-порт. Установка драйверов com порт usb в Windows

01.07.2020

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

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

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

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

Назначение

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

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

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

Разъемы

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

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

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

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

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

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

Аппаратура

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

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

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

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

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

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

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

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

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

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

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

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

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

UNIX

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

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

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

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

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

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

OS/2

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

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

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

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

См. также

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

Примечания

Ссылки

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

Инструкция

Нажмите по значку «Мой компьютер» правой кнопкой мышки. В контекстном меню выберите «Свойства». Если у вас операционная система Windows XP, то в следующем окне выберите «Оборудование», затем - «Диспетчер устройств». Если на вашем компьютере установлена операционная система Windows 7, то диспетчер устройств можно выбрать сразу же.

Появится окно, в котором будет список всех устройств, которые есть на вашем компьютере. В этом списке вам нужно найти строку «Порты СОМ и LPT». Нажмите по стрелочке, которая находится рядом со строкой. Откроется список сом-портов, которые установлены на вашем ПК.

Нажмите по номеру порта правой кнопкой мышки, после чего в контекстном меню выберите «Свойства». Вы увидите устройство, которое подключено к этому порту. Таким способом вы можете узнать номер порта сом, к которому подключено нужное устройство.

Также можно воспользоваться программой диагностики и мониторинга компьютера AIDA64 Extreme Edition. Программа платная, но в интернете можно найти ее тривиальную версию. Возможностей бесплатной версии хватит для того, чтобы узнать номер сом-порта. Скачайте приложение из интернета и инсталлируйте его на жесткий диск компьютера.

Запустите AIDA64 Extreme Edition. После ее запуска придется подождать несколько секунд. Программа просканирует систему. После этого вы увидите, что меню разделено на два окна. Вам потребуется левое окно, в котором найдите строку «Устройства». Нажмите по стрелочке, которая находится рядом. Найдите в списке устройства, которые подключены к сом-портам (может быть просто написано «Cом-устройства»).

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

Источники:

  • В диспетчере устройств нет раздела

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

Инструкция

Самый простой вид прокси – это сайт-анонимайзер. Там достаточно просто указать адрес сайта, и вы окажетесь там (под прокси). Способ позволяет совершенно не заботиться о нужного прокси или даже программы . Однако, из-за того, что способ очень простой и возможности его очень ограничены. Простой пример такого сайта: http://anonymouse.org/

Существуют специальные программы, которые находят прокси через свой поиск, самая простая в использовании – это Hide IP Platinum, но, возможно, поскольку ее используют многие люди сразу и прокси многократно повторяются - это заметно отражается на скорости соединения. По этому, конечно, лучше использовать что-то побыстрее для удобного использования интернета.

Наиболее интересный вариант – это программа ProxySwitcher Standard, она может как находить прокси через свой поиск (причем тысячи на выбор), так и использовать ваши заданные адреса. Лучше, конечно, через эту программу использовать специальные адреса, поскольку их меньше, и если искать в специальных местах, то они качественнее. Также замечательной возможностью данной программы является сравнительно быстрая проверка прокси на работоспособность.

Для приведения механизма в работу, достаточно найти правильный адрес прокси и поместить в список ProxySwitcher Standard. Искать прокси, лучше всего здесь: http://www.aliveproxy.com/fastest-proxies/ . Как можно заметить, и небольшой список, и скорость неплохая, вполне подходящая для комфортного использования интернета анонимно.

Видео по теме

Источники:

  • как найти proxy в 2018

Подключаясь к сети интернет, большинство пользователей не оплачивает услугу статичного IP-адреса. По большому счету он им и не нужен, но если вдруг понадобится зайти в подключенный компьютер извне, то знание этого адреса просто необходимо. Как же его выяснить?

Инструкция

Откройте меню кнопки «Пуск». Перейдите в «Панель управления». Далее откройте раздел «Сетевые подключения». Кликните правой кнопкой мыши по значку подключения к сети интернет и выберите пункт «Состояние». Перед вами откроется окно. В нем выберите пункт «Поддержка». Узнать IP-адрес можно будет, посмотрев его в соответствующей строчке в открывшемся окне. Данный список операций подойдет для пользователей операционных систем Windows.

Откройте командную строку для выполнения следующего запроса: #sudo ifconfig (Способ установления IP-адреса для пользователей систем Unix). Если вы наделены правами администратора, введите: root-#ifconfig. После этого на экране появятся свойства всех имеющихся в настоящее время на компьютере сетевых интерфейсов. Ваше текущее сетевое подключение будет проходить под именем ppp1 или ppp0. Выяснить IP-адрес можно будет, посмотрев его в строке после слова inetaddr.

Перейдите по ссылкам: http://2ip.ru и http://speed-tester.info . Это необходимо, чтобы узнать IP-адрес, который по каким-то причинам маскируется провайдером. После тестов указанный сайтов вы сможете посмотреть IP-адрес в перечне другой информации, такой как скорость соединения, стабильность работы и т.д. Обратите внимание, что если в строке «Прокси» указано значение «используется», это означает, что ваше соединение осуществляется через промежуточный сервер, поэтому узнать IP по прокси не представляется возможным. Данный тип подключения, как правило, применяется крупными организациями и компаниями с обширной внутренней локальной сетью, объединяющей все .

Прокси-сервер – компьютер, который служит посредником при выходе в интернет с вашего компьютера. При подключении через такой сервер, вы остаетесь анонимным, а проверка видит IP-адрес прокси-сервера. Если вам известен прокси-сервер вида: "xxx.xxx.xxx.xxx", но неизвестен порт, не отчаивайтесь. Внимательно прочитав эту инструкцию, вы сможете подобрать порт к серверу.

Вам понадобится

  • Программа "Powerful Generator", доступ в Интернет.

Инструкция

Первым делом вам понадобится программа "Powerful Generator". Пройдите по ссылке http://upwap.ru/1796108 и скачайте её. Распакуйте архив. Некоторые антивирусные программы могут принять "Powerful Generator" за вирус, хотя программа чиста. Если это произойдет – отключите антивирус. Не хотите рисковать? Тогда этот метод не для вас, поищите другой.

В папке с программой создайте текстовый документ. В него запишите прокси-сервер. Назвать документ можно как душе угодно, но лучше всего назвать "Proxy.txt", чтобы не запутаться впоследствии.

Создание списка портов

1. Зайдите в программу "Powerful Generator", выберите "pass или uin лист".
2. Выберите вкладку "Лист uin’ов"
3. Выберите “Диапазон ” и в опции диапазона уинов выберите диапазон от 1 до 9999.
4. Выберите путь для сохранения файла, назовите его "Ports.txt".
5. Нажмите создать.

Создание списка вида "server:port"

1. Зайдите в программу "Powerful Generator", выберите "uin;pass лист".
2. Выберите вкладку "параметры уинов", затем опцию "лист уинов".
3. Укажите путь к "Proxy.txt".
4. Выберите вкладку "параметры паролей", затем опцию "лист паролей".
5. В опциях листа паролей укажите путь к "Ports.txt"
6. Выберите опцию "Делать для каждого уина все пароли, содержащиеся в листе".
7. Выберите вкладку "запись листа".
8. В поле "разделять знаком" напишите ":" вместо ";" (Поскольку прокси с портами пишутся именно через ":").
9. Выберите путь для сохранения файла, назовите его "Servers.txt".
10. Нажмите создать.

Итак, у вас есть текстовый документ в котором содержится десять тысяч прокси-серверов с различными портами (от 1 до 9999). Теперь необходимо определить, какой из них работоспособен. Как же это сделать? Элементарно, пройдите по ссылке http://www.onlinechecker.freeproxy.ru/ и скопируйте весь список из "Servers.txt" в окошко "Check Proxy Online". Нажмите "Check proxy!" Когда сервис завершит работу, он выдаст работающий сервер из вашего списка.
Полученный прокси-сервер можно использовать для различных целей.

Видео по теме

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

Вам понадобится

  • - доступ в интернет.

Инструкция

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

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

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

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

Если вы хотите проверить надежность используемого вами прокси-сервера, воспользуйтесь для этого специальными сайтами, например, на ресурсе http://privacy.net/analyze-your-internet-connection/, после анализа ваших данных сайт выдаст вам имеющуюся у него информацию о вас и вашем компьютере, которая может быть доступна и другим людям в сети.

Также вы можете использовать аналогичные сервисы, например, http://www.stilllistener.addr.com/checkpoint1/index.shtml. Если же в их меню вы найдете свой реальный адрес, значит выбранный вам прокси ненадежен.

Видео по теме

Полезный совет

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

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

Инструкция

Убедитесь в том, что понятна существующих типов прокси-серверов:- HTTP прокси - наиболее распространенный тип сервера, совместимый со всеми браузерами и поддерживающий функциональность веб-приложений;- Socks прокси, подразделяющийся по версиям протокола на Socks5 и Socks4, - задуманные для поддержки всех протоколов UDP и TCP/IP, но не совместимые с некоторыми интернет-приложениями (в основном используются IRC-клиентами и веб-пейджерами);- CGI прокси - представляют из себя веб-ресурс и работают только с браузерными программами;- FTP прокси - применяется в корпоративных сетях с ограничением доступа в интернет брандмауэром.

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

Вот мы и добрались до 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

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

В свое время COM-порт был самым используемым универсальным портом персонального компьютера. Через этот порт к компьютера подключали самые разнообразные устройства:

Другой компьютер

и другие устройства.

Многие устройства имеющие интерфейс USB, при подключении к компьютеру управляются через интерфейс виртуального COM-порта.

Причиной большой популярности COM-порта стала дешевизна провода, ведь в нем может быть всего 3 провода: земля, "туда" и "обратно". История показывает, что внешние соединения лучше делать с помощью последовательного канала связи. Параллельные порты популярны на очень небольших расстояниях. Хотя после появления SATA это утверждение можно подвергнуть сомнению. Идеальная линия связи - это один проводок, как, например, в технологии OneWire. Но и COM-порт для своего времени был достаточно неплох.

Передача данных через COM-порт

Процесс передачи данных по COM"у достаточно прост. Для простоты предположим что данные передаются только в одном направлении. В случае с двунаправленной передачей данных - все симметрично.

Данные передаются блоками по 5 - 8 бит. Обычно используется 7 или 8 байт. Когда передавать нечего, передатчик поддерживает на линии -12 Вольт - логическую единицу. Перед передачей очередной посылки на линии COM-порта появляется сигнал +12 Вольт (логической 0). Этот перепад напряжения сигнализирует удаленному COM-порту о том, что первый бит будет на следующем такте. Далее последовательно посылаются биты данных соответствующего уровня: -12 В = 1, а +12 В = 0. Биты передаются задом-наперед: сначала младший бит - потом старший. Если приемник на удаленной стороне работает на той же частоте, то все биты он примет правильно. Когда все биты передались - передается бит контрольной суммы. После этого линия опять устанавливается в -12 Вольт - происходит передача стоп-бита. Если данных больше нет, то линия так и остается в этом положении. И как только нужно будет еще что-нибудь передать - снова возникает напряжение +12 Вольт и все по новой. Такое относительно высокое напряжение в 12 вольт используется для помехозащищенности связи по COM-порту.

Периоды между посылками разделяются стоп-битом. Вернее сказать не битом, а периодом равным 1, 1.5 или 2 времени на передачу одного бита. С помощью стоп-бита принимающая сторона определяет границы посылок через COM-порт.

История COM-порта

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

Платы расширения COM

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

Если на материнской плане нет COM-портов (что очень редко) или их не хватает, то можно установить специальный контроллер - плату расширения. Она устанавливается в PCI или PCI-Express слот.

В случае с ноутбуками (нетбуками) можно воспользоваться USB-переходниками.

Модем и COM-порт

Многие контакты COM-порта используются только модемами. Например, 9-й контакт COM-порта используется модемом, чтобы посылать компьютеру сигнал о том, что кто-то пытается до него дозвониться. Контакт №1 используется модемом для извещения о том, что есть удаленное соединение активно. Обычно управление передачей (контакты 4, 6, 7 и 8) по умолчанию включено для модема.

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

При программировании COM-порта на аппаратном уровне используются порты ввода-вывода и таблица прерываний. Для первого COM-порта в IBM PC-совместимых компьютерах зарезервирован порт 3F8 и прерывание IRQ4. Для второго порта: 378 / IRQ3. Хотя эти настройки можно менять в настройках BIOS. На самом деле для каждого COM-порта существует не один порт ввода-вывода, а целых 8.

Похожие статьи