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

Переходник COM — USB

В данной статье приведена подборка схем, позволяющая собрать несложное, но крайне полезное устройство: переходник Com USB.

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

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

На сегодняшний день подавляющее большинство компьютеров не оснащаются RS-232 разъемом, поскольку широкое распространение получил стандарт USB. Но еще существуют многого внешних устройств работающих только с COM портом (различные программаторы, диагностическое оборудование, ресиверы и пр.). Выходом из данной ситуации является использование устройства переходник COM-USB. Ниже приведем несколько вариантов наиболее популярных схем данного переходника.

Применение

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

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

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

Драйвер коммутационный порт компьютера

[com0com]

Null-modem emulator [1] это драйвер виртуального последовательного порта Windows, работающий в режиме ядра (kernel-mode driver), с открытым исходным кодом, доступный под защитой лицензии GPL. Null-modem emulator позволяет Вам создавать неограниченное количество пар виртуальных COM-портов. Каждая пара COM-портов состоит из 2 COM-портов, виртуально соединенных друг с другом каналом данных. Выход одного COM-порта пары соединяется со входом другого COM-порта пары, и наоборот. Следовательно, можно использовать любую пару для соединения любого одного приложения, рассчитанного на работу с COM-портом, с другим приложением, также работающего с COM-портом, и они будут передавать данные друг другу.

com0com setup

Null-modem emulator может использоваться для предоставления последовательного интерфейса к эмуляторам устройств. В этом случае программа эмуляции устройства использует один порт пары, и другой порт пары может использоваться операционной системой Windows или приложением DOS, которое требует COM-порта для обмена с устройством. Например, прием/отправка факсов через сетевой канал IP: Вы можете соединить приложение Windows Fax с приложением t38modem [2] (T38FAX Pseudo Modem, это часть проекта t38modem) через пару виртуальных COM-портов.

T38 Modem setup

[com2tcp]

Также Null-modem можно использовать для последовательного интерфейса к редиректорам COM-порта. Например, с приложением com2tcp [3] (редиректор COM-порта в сокет TCP, это часть проекта com0com [1]) Вы можете обмениваться через последовательный интерфейс с серверами TCP/IP (очень полезно для работы с модулями наподобие ESP8266 [4]). Если Вы чувствуете, что com2tcp это примерно то, что искали, но все-таки в нем нет каких-то нужных возможностей, то присмотритесь к проекту hub4com вместо него (например, для поддержки RFC 2217).

com2tcp use

[hub4com]

Вместе с приложением hub4com [5] (HUB for communications, хаб для обмена данными, это часть проекта com0com [1]) можно несколькими приложениями обрабатывать данные и сигналы одного устройства с последовательным интерфейсом (например, несколько приложений могут использовать одни и те же данные от одного устройства GPS). Также можно использовать реальные последовательные порты находящегося в отдалении компьютера (подключенного через сеть), как если бы эти интерфейсы существовали на локальном компьютере.

Вы можете найти больше информации по использованию com0com и com2tcp в файле ReadMe.txt для com0com, ReadMe.txt для com2tcp, ReadMe.txt для hub4com и так далее на страничке проекта сайта SourceForge [1].

[Virtual Serial Port Driver]

Альтернативно можно для тех же целей использовать Virtual Serial Port Driver [6] компании Eltima Software. Это программное обеспечение позволяет создавать большое количество виртуальных COM-портов и дает Вам большие возможности для полной эмуляции последовательного порта. Virtual Serial Port Driver предоставляет гибкое создание порта, управление портами, удаление портов, что позволяет через виртуальные порты тестировать программы, поддерживать управляющие сигналы и высокие скорости передачи.

Virtual Serial Port Driver

Основные возможности Virtual Serial Port Driver:

• Создание любого количество виртуальных COM-портов.
• Полная эмуляция настроек реальных портов.
• Управление всеми сигнальными линиями.
• Немедленное создание портов позволяет работать с портами, даже до того, как PnP manager определил только что созданные порты.
• Полная поддержка Windows 10.

[VIRTUAL NULL MODEM]

Назначение нуль-модемного кабеля — позволить двум RS-232 устройствам типа DTE (Data Terminal Equipment, под этим обычно подразумеваются модемы и любые устройства, которыми можно управлять через текстовую консоль терминала) обмениваться данными между собой без использования дополнительного оборудования (т.е. устройств типа DCE, расшифровывается как Data Circuit-terminating Equipment, под этим обычно подразумеваются компьютеры или другие устройства, к которым подключены устройства DTE).

Virtual Null Modem — специальная программа, которая эмулирует одну или несколько пар портов RS232, соединенных между собой нуль-модемным кабелем. Функционал абсолютно тот же, что и у com0com. Вы можете создать множество виртуальных последовательных портов, которые практически будут неотличимы от настоящих портов (например, COM10, COM11, COM127 и т.д.), соединенных попарно виртуальным нуль-модемным кабелем.

Для чего нужна утилита Virtual Null Modem? Допустим, что у вас есть две программы, которые вы хотите соединить между собой. Обычно вам необходимо два настоящих последовательных порта, соединенных нуль-модемным кабелем. Современные компьютеры обычно имеют в наличии только один порт, а ноутбуки не имеют и одного. При использовании программы Virtual Null Modem вы можете эмулировать нуль-модемное соединение, так что две программы на одном компьютере могут общаться между собой без дополнительного оборудования и железа.

Virtual Null Modem setup

virtual null modem main window

virtual null modem devices menu

virtual null modem system menu

virtual null modem options

virtual serial port properties

virtual device power management

virtual serial port devices manager

[Ссылки]

1. Null-modem emulator (com0com) site:com0com.sourceforge.net .
2. t38modem site:sourceforge.net .
3. COM port to TCP redirector (com2tcp) site:sourceforge.net .
4. ESP8266: микросхема Wi-Fi.
5. HUB for communications (hub4com) site:sourceforge.net .
6. Virtual Serial Port Driver site:eltima.com .
7. VIRTUAL NULL MODEM site:aggsoft.ru .

Виртуальный СОМ-порт CDC-232 на AVR-микроконтроллере

AVR-CDC предназначена для конвертации RS232 и USB данных с применением AVR-микроконтроллеров, без использования какого-либо специализированного USB-чипа. Данная технология основывается на Object Deveopment’s V-USB (Software-USB на AVR), и CDC (Communication Device Class) протоколах. AVR-CDC позволяет компьютеру взаимодействовать с USB-устройствами через виртуальный COM-порт. В этом проекте я хочу привести несколько вариантов реализации виртуального COM-порта на AVR-микроконтроллерах.

CDC-232 создает виртуальный COM-порт на ПК, который не имеет физического порта RS- 232C. Он обеспечивает соединение RS-232C (без управляющих линий) после подключения устройства и установки драйвера.

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

Запишите программу в AVR, соберите схему и подсоедините устройство к USB порту ПК. Установите драйвер под ОС Windows. Подключитесь к устройству через появившийся виртуальный COM-порт с помощью программного обеспечения терминала или вашего приложения. Управляющие линии (DTR, DTS, RTS, CTS) не используются хост приложением. Запрограммируйте терминальное приложение как «no flow-control» (без управления потоками данных).

ОС Windows повторно запросит установку драйвера при подключении к другому USB порту. Далле произойдет автоматическое обнаружение ранее установленного драйвера. После этого будет назначен другой номер COM-порта. Если вы введете номер последовательного порта в AVR (обновите с измененным файлом usbconfig.h), тогда вы получите тот же самый COM-порт на любом USB порте. Однако нельзя подключить несколько CDC устройств к одному и тому же последовательному порту.

Перед отключением устройства закройте вручную COM-порт с помощью программного обеспечения терминала или вашего приложения. В противном случае вы не сможете подключиться к устройству снова из-за повреждения индекса файла. Далее перезапустите программное обеспечение терминала или ваше приложение. Переключитесь в режим быстрой передачи, используя файл «lowcdc.vbs». Это позволит получить скорость передачи данных выше, чем 9600 бит/сек.

Циклический тест для версии ATtiny45

Схемные решения

Данные схемы предназначены для ATtiny45/85, ATtiny2313/AT90S2313, и ATmega8/48/88/168. Их микропрограммное обеспечение можно загружать через ISP-разъем. Красный светодиод понижает USB напряжение с 5В до 3.3В, затем оно подается на AVR. Ток составляет около 10мА, и его недостаточно для управления другой схемой. При подключении к другому микроконтроллеру, подсоедините вывод Gnd, а также перекрестно TxD и RxD. R4 ограничивает утечку тока, когда напряжение питания микроконтроллера Vcc составляет 5В. Резистор можно не использовать, если Vcc совпадает. R5 защищает вывод TxD, если он будет закорочен на Gnd. Поэтому вы можете не использовать оба резистора R4 и R5, если подключитесь к RS- 232C драйверу через MAX232. Используйте кварцевый генератор. Хотя керамический резонатор отлично работает в большинстве случаев, он становится нестабильным, когда отклонение частоты увеличивается.

ATtiny45/85 использует внутренний RC-генератор и PLL. Он калибруется USB сигналом при подключении устройства. Универсальный асинхронный интерфейс UART реализован программным методом. Этого недостаточно для скоростной передачи данных. Если TxD и RxD инверсные (обновите с помощью опции DUART_INVERT), вы сможете напрямую подключаться к линии RS-232C. Скорость 1200 – 4800бит/сек, протокол 8N1.

CDC-232 для ATtiny45-20

CDC-232 для ATtiny45-20

Пример ATtiny45 при использовании мини-B коннектора

ATtiny2313/AT90S2313 имеет программную память величиной 2кБ. Хотя скорость передачи данных конфигурируется автоматически, некоторые функции не используются. Скорость 600 – 38400бит/сек, протокол 8N1.

​CDC-232 для ATtiny2313-20

CDC-232 для ATtiny2313-20

Внутренний Универсальный асинхронный интерфейс UART ATmega8/48/88 конфигурируется с помощью ПК. Поддерживается управление потоком данных (RTS/CTS).

Скорость 600 – 38400бит/сек, данные 7/8, контроль по четности N/E/O, стоп 1/2.

CDC-232 для ATmega8/48/88-20

CDC-232 для ATmega8/48/88-20

Подключение к RS-232C каналу требует инвертирования полярности и подбора уровня TxD и RxD. Используйте выделенную ИС, такую как MAX232. Вы сможете заменить ей эту простую схему.

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

Драйвер коммутационный порт компьютера

Терминал (для работы с COM портом) под Windows.

Зачем понадобилось создавать еще одну программу терминал .

На просторах интернета полно подобных программ ?!

Что есть, то есть !

Но есть маленькое НО, все дело в нюансах !

— Требуемый функционал был разбросан по нескольким программам и это было очень не удобно.

— Часть требуемых функций не было и вовсе.

— Часть программ банально падали в самый неподходящий момент.

— Часть функций реализованы с ошибками.

Так жить нельзя и работать тоже . 🙂

Значит надо создать свою программу, с необходимым функционалом.

Данный проект задумывался как вспомогательный для тестирования большого проекта связанного

с телеметрией. В проекте требовалось принимать и передавать данные через COM порт компьютера.

Проект готов и сдан. Программа осталась и продолжает использоваться по назначению, для отладки

разного рода устройств !

На текущий момент программа продолжает дорабатывается, исправляются ошибки, добавляются

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

Краткое описание программы.

Программа создана в среде Microsoft Studio 2008, на языке VB.

Репозитарий программы представлен на GitHub, готовый бинарный файл(exe) в виде Zip архива.

Собранная программа представляет из себя один запускаемый файл.

Программа не требует установки и работает из любого места.

Программа не требует для запуска привилегий администратора.

1. Подключаться к любому com порту в системе.

2. Выставлять параметры работы com порта, включая нестандартные скорости работы порта

(при условии что драйвер windows поддерживает нестандартные скорости,

хотя как показала практика погрешность может быть очень большой.

Например: При заданной 250000 — в железе получаем 256000, ;(

увы точнее делитель не устанавливается. ).

3. Производить запись принимаемых данных в файл.

4. Передавать в порт строку с разными концовками в виде дополнительных кодов.

5. Циклически передавать в порт строку с заданным интервалом времени.

6. Передавать в порт файл.

7. Проиграть сценарий из файла (передача данных + задержка между данными).

Программа пока не может:

1. Разбирать ESC последовательности.

2. Вести историю передаваемых строк.

3. Передавать в порт кода нажатых клавиш в окне приема и передачи.

На текущий момент планов по развитию и доработки программы много.

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

появляется необходимость в новом функционале.

Так в программу попадает новый функционал, продиктованный практикой.

При добавления нового функционала в программу, иногда добавляются и проявляются

глюки (по недосмотру), прошу отнестись с понимание 🙂

Глюки исправляются, и новая версия выкладывается в репозитарий.

На основе данной программы была создана еще одна утилита для работы по протоколу PELCO-D,

для тестирования и управления камерами и поворотными платформами.

Текущая версия: v1.3.7

[+] Исправление: Зависание программы при отключении COM порта из системы (выдернули кабель. ).

Текущая версия: v1.3.6

[+] Исправление: Перепутаны STOP BIT 1.5 2.

Текущая версия: v1.3.5

[+] Исправление: Не корректный вывод кодов r n.

Текущая версия: v1.3.4

[+] Исправление: Подвисание интерфейса при приеме не отображаемых кодов (0x00-0x19).

[+] Исправление: Конвертации кодов n -> nr.

Текущая версия: v1.3.2

[+] Вывод подробного описания СОМ портов.

[+] Проигрывание сценария из текстового файла.

Пример сценария (Файл TXT), формат:

81 01 04 07 03 FF
> 100
81 01 04 07 02 FF

Где:
81 01 04 07 03 FF — значения байт в TXT-HEX формате отправляемых в СОМ порт.
> 100 — Формирование паузы 100 мс.
81 01 04 07 02 FF — значения байт в HEX формате отправляемых в СОМ порт.

[+] Перевод строки в TXT-HEX виде в байтовый массив и передача в СОМ порт.

Версия: v1.2.2

[+] Добавлена история ввода передаваемых строк.

Версия: v1.2.1

[+] Внесены изменения в интерфейс. Часть функций вынесены в окно приема.

[+] Добавлена функция Вкл/Выкл печати символа с кодом 0x0A.

0x0D + 0x0A -> 0x0D.

[+] Решено: При закрытии порта продолжалась передача в порт.

[+] Добавлена подсказка при наведении курсора на элементы управления.

[+] При запуске программы производится автоматический поиск СОМ портов в системе.

Версия: v1.1.0

[+] Добавлена передача в порт кодов нажатых клавиш в окне приема и передачи.

Глава 10. Порты. Прокси. Файерволл

Глава 10. Порты. Прокси. Файерволл Когда большинство пользователей компьютерных технологий видят слово «порт», то обычно с ним ассоциируются такие аббревиатуры, как COM, LPT, PS/2. То есть — попросту названия «гнезд», куда можно присоединить какие — либо периферийные

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

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector