20.09.2019

Программы для работы с com портом windows. Терминальные программы


В настоящее время ПК и ноутбуки с “железными” COM-портами в наборе интерфейсов уверенно перемещается в ряды экспонатов раритетной техники, но в мире микроконтроллерной техники и в промышленном оборудовании он будет ещё долго держать свои позиции. Для возможности беспроблемного сопряжения ПК и микроконтроллерных устройств выпускаются различные платы расширения и переходники типа USB-RS232, RS232-Bluetooth, USB-RS485 и т.д, также во все МК с USB-интерфейсом можно записать код для эмуляции обычного COM-порта. Во многие датчики встроены микроконтроллеры для оцифровки и первичной обработки сигналов от сенсоров различных типов, а результаты обработки во внешний мир передаются в цифровом виде опять же через тот самый последовательный интерфейс. Разработчики часто осваивают новые протоколы непосредственно “в железе”, используя в качестве ведущего устройства микроконтроллер или ПК. С помощью микроконтроллера можно сформировать пакеты из любой последовательности байтов данных для отправки и любой алгоритм обработки принимаемых данных. В своей практике на первом этапе разработки ПО для работы с различными устройствами через UART стараюсь вначале освоить работу с ним через ПК, на котором должен быть соответствующий терминал. Существуют множество терминалов для работы с COM-портом, но универсального на все случаи своей практики не нашёл, поэтому решил сделать его сам. Далее сильно напряг фантазию и в целях однозначности идентификации поисковиками дал ему название “Terminal ST”.

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

Особенности данного терминала:

  • возможность хранения и редактирования до 1485 символьных и/или бинарных последовательностей (команд). Все команды разбиты на группы и подгруппы.
  • возможность хранения и редактирования краткой справки по каждой команде; Сохранённая справка появляется при наведении курсора мыши на кнопку с соответствующей командой, т.е. не нужно держать под рукой соответствующие справочники.
  • возможность выбора одного из четырёх режимов отправки команд, описание которых приведено далее;
  • возможность добавления в конец каждой команды заготовленной последовательности символов, например <0D><0A> или “<0D><0A>exit<0D> ” для текстового режима или любую последовательность данных в формате HEX для бинарного.
  • возможность устанавливать задержку для накопления данных в приёмном буфере, чтобы визуально весь ответ располагался в одной строке.
  • автоматическое переподключение к выбранному порту на случай кратковременной потери связи или временного пропадания COM-порта в диспетчере устройств Windows, что актуально при использовании переходника USB-COM или в случае перезапуска МК с соответствующим эмулятором.

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

Описание алгоритма редактирования команд можно прочитать в статье . Во всём остальном интерфейс постарался сделать максимально понятным.

Опишу дополнительные особенности терминала.

  1. Имеются 4 режима отправки команд. Режим ручной отправки очевиден – вводите команду (вручную или нажатием соответствующей кнопки) и нажимаете “Отправить”, далее с предвкушением ожидаете ответ. Режим отправки “После ответа” реализован так, что текущие данные из командной строки будут отправлены сразу же после получения ответа на предыдущий запрос. Следует иметь ввиду, что ответ от устройства может приходить частями, если его длительность превысит 1-10 мс, но программа после успешного считывания приёмного буфера сразу же отправит содержимое командной строки устройству. Во избежание недоразумений имеется опция “Время накопления буфера чтения, мс”, с помощью которой можно задать время ожидания заполнения приёмного буфера после отправки последнего байта устройству, т.к. обычно устройства отсылают сформированный ответ без разбивки на части во времени. Милисекунды в данном случае условные ввиду того, что Windows по своей природе не является операционной системой реального времени. Режим отправки “При выборе” означает то, что команда в порт будет отправлена сразу же после нажатия соответствующей кнопки, т.е. не нужно каждый раз двигать мышкой в сторону кнопки “Отправить”. Следующий режим – периодичная отправка, которая подразумевает возможность задать период отправки содержимого командной строки, после чего с заданной периодичностью последовательность будет отправляться в порт вне зависимости от того, приходит ответ от устройства или нет. Опция “Накопление буфера чтения” актуальна для всех режимов отправки команд.
  2. Имеется возможность выбора формата обмена данными. Можно работать с данными в бинарном или в текстовом формате. Первый вариант обычно актуален при работе с датчиками, второй с законченными устройствами. Каждый байт бинарного запроса записывется в формате XX, символы A..F должны быть в верхнем регистре, разделитель между байтами любой.
    Пример бинарного запроса:
    64"69"61"67"20"67"70"73"0D"
    64 69 61 67 20 67 70 73 0D
    Данные запросы идентичные, т.к. вид разделителя не играет никакой роли — терминал берёт в оборот первый и второй символ, третий пропускает, затем четвёртый и пятый, шестой пропускает и т.д.

Содержимое командной строки можно менять в любое время и при любом режиме отправки. Можно как вручную вносить изменения, так и нажатием соответствующей кнопки с командой.

Сейчас возможностей данного терминала мне хватает на все случаи моей творческой деятельности. На данном этапе пока все идеи по развитию закончились, буду ждать появления следующих или замечаний от читателей-писателей сайта. Советую делать копию файла “ComandConfig”, если в нём хранится большой объём команд с описаниями. На всякий случай. C уважением, ваш тамбовский товарищ:)

Изменения в версии v3 от 2018.08.19

Изменения интерфейса v6

  • добавлена возможность отправки команды по нажатию «Enter», кнопка «Esc» очищает строку с командой
  • добавлена возможность копирования лога из окна диалога, переключение в интерактивный режим окна осуществляется установкой соответствующей галочки.
  • добавлена возможность отправки команд из файла. Отправлять можно циклически или до достижения конца файла. Для считывания очередной команды из файла в ручном режиме нужно нажать кнопку «Из файла» и затем «Отправить». В режиме «После ответа» и «Периодически» следующая команда из файла будет считываться автоматически. Это удобно в том случае, если в последовательный порт нужно отправить последовательность команд с ожиданием ответа на каждую команду или отправку нужно выполнять с определённым интервалом.
  • улучшен интерфейс программы.
  • добавлен счётчик отправленных и полученных пакетов.
  • добавлены кнопки для более быстрого переключения вкладок с командами.
  • исправлены замеченные ошибки в коде.

Изменения в версии v4 от 2018.08.27

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

Режим однократной отправки удобно применять в том случае, когда имеются несколько приборов и в каждый из них нужно отправить одну и ту же команду. При использовании данного режима пользователю нужно будет только подключать разъём к очередному прибору, а программа сама будет устанавливать соединение и отправлять заданную команду один раз, но предварительно должно быть настроено и установлено соединение с первым прибором, это работает с эмулятором USB, но не с «железным» COM-портом. Если подключен один и тот же прибор со встроенным эмулятором COM-порта, но в консольной строке будет команда для перезапуска, то терминал в данном режиме будет бесконечно перезапускать прибор, т.к. после каждого перезапуска кратковременно теряется соединение. Так же удобно использовать данный режим для отслеживания перезапусков прибора с эмулятором порта в микроконтроллере, факт перезапуска можно фиксировать по времени отправленной команды в лог-файле.

Как работать с устройствами по COM-порту с помощью терминальной программы?
В различных инструкциях и руководствах вы можете увидеть рекомендации по работе с устройствами через терминальную программу. Как правило, такие действия производят с помощью HyperTerminal - стандартной программы в операционных системах Windows. Мы же рекомендуем использовать терминальную программу "Terminal v1.9b by bray " , потому что это более гибкий и удобный в работе инструмент. Ниже мы расскажем как работать с нашими устройствами на примере именно этой программы.

В первую очередь подключите устройство, с которым собираетесь работать, к компьютеру через COM-порт. Подключите питание.
Теперь запустите Terminal v1.9b .

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

В верхнем поле находятся параметры подключения:

  1. Колонка №1:
    Connect
    - кнопка для открытия COM-порта,
    Rescan - пересканировать список COM-портов,
    Help - справка,
    About.. - о программе,
    Quit - выход из программы.

    Колонка №2:

  2. Поле выбора номера COM-порта для подключения.
    Колонка №3:
  3. Выбор скорости COM-порта.
    Колонка №4:
  4. Выбор количества бит данных.
    Колонка №5:
  5. Выбор четности.
    Колонка №6:
    Выбор количества стоповых бит.
    Колонка №7:
  6. Выбор типа управления потоком.
В разделе Settings находятся дополнительные параметры. Они пригодятся для написания скриптов, работы с нестандартными скоростями или для записи

В разделе Recieve находятся параметры отображения ответа от устройства.

В разделе Transmit находятся параметры передачи данных на устройство. Кнопки DTR и RTS устанавливают соответствующие выводы в положительное состояние.

Макросы

Поле Macros предназначено для создания пользовательских быстрых клавиш.
Для этого нужно нажать на кнопку SetMacros и в открывшемся окне присвоить каждой кнопке определённую последовательность символов, которая будет отправляться на устройство.
  1. Блок №1:
    Поле для ввода последовательности символов для отправки. Для того чтобы отправить специальные символы, необходимо воспользоваться ASCII таблицей и ввести код символа, предварительно экранировав его знаком "$ ". Например, на картинке выше, вы можете видеть экранированный символ возврата каретки $0D (нажатие клавиши Enter )
    Блок №2:
  2. Здесь в левом поле задаётся имя кнопки, а в правом отображается сама кнопка.
    Блок №3:
  3. Тут задаётся задержка при автоматическом повторении команд.
    Блок №4:
  4. Включение автоматического повтора команды через интервал времени, заданный в п.3.
Кнопки Load и Save позволяют сохранить или загрузить файл с макросами, введёнными в этом окне.

Отправка и прием данных



Блок №1:
В этом большом поле вы будете видеть ответы от вашего устройства.
Если в разделе "Settings " вы не забыли поставить галочку "Time ", то перед каждой строкой будет проставлена метка времени. Это бывает очень полезно при анализе логов с устройства.

Блок №2:
Тут находится поле для отправки текста сообщений. Установленная галочка "+CR" будет дописывать к отправляемому сообщению символ возврата каретки (эмулировать нажатие клавиши Enter). Кнопка "->Send" отправит ваше сообщение на устройство.

Блок №3:
В самом низу находится поле, где вы можете видеть отправленные на устройство команды.


Теперь вы знакомы с интерфейсом Terminal 1.9b!

Как происходит общение с устройством, вы можете посмотреть в этих статьях.

Как работать с устройствами по COM-порту с помощью терминальной программы?
В различных инструкциях и руководствах вы можете увидеть рекомендации по работе с устройствами через терминальную программу. Как правило, такие действия производят с помощью HyperTerminal - стандартной программы в операционных системах Windows. Мы же рекомендуем использовать терминальную программу "Terminal v1.9b by bray " , потому что это более гибкий и удобный в работе инструмент. Ниже мы расскажем как работать с нашими устройствами на примере именно этой программы.

В первую очередь подключите устройство, с которым собираетесь работать, к компьютеру через COM-порт. Подключите питание.
Теперь запустите Terminal v1.9b .

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

В верхнем поле находятся параметры подключения:

  1. Колонка №1:
    Connect
    - кнопка для открытия COM-порта,
    Rescan - пересканировать список COM-портов,
    Help - справка,
    About.. - о программе,
    Quit - выход из программы.

    Колонка №2:

  2. Поле выбора номера COM-порта для подключения.
    Колонка №3:
  3. Выбор скорости COM-порта.
    Колонка №4:
  4. Выбор количества бит данных.
    Колонка №5:
  5. Выбор четности.
    Колонка №6:
    Выбор количества стоповых бит.
    Колонка №7:
  6. Выбор типа управления потоком.
В разделе Settings находятся дополнительные параметры. Они пригодятся для написания скриптов, работы с нестандартными скоростями или для записи

В разделе Recieve находятся параметры отображения ответа от устройства.

В разделе Transmit находятся параметры передачи данных на устройство. Кнопки DTR и RTS устанавливают соответствующие выводы в положительное состояние.

Макросы

Поле Macros предназначено для создания пользовательских быстрых клавиш.
Для этого нужно нажать на кнопку SetMacros и в открывшемся окне присвоить каждой кнопке определённую последовательность символов, которая будет отправляться на устройство.
  1. Блок №1:
    Поле для ввода последовательности символов для отправки. Для того чтобы отправить специальные символы, необходимо воспользоваться ASCII таблицей и ввести код символа, предварительно экранировав его знаком "$ ". Например, на картинке выше, вы можете видеть экранированный символ возврата каретки $0D (нажатие клавиши Enter )
    Блок №2:
  2. Здесь в левом поле задаётся имя кнопки, а в правом отображается сама кнопка.
    Блок №3:
  3. Тут задаётся задержка при автоматическом повторении команд.
    Блок №4:
  4. Включение автоматического повтора команды через интервал времени, заданный в п.3.
Кнопки Load и Save позволяют сохранить или загрузить файл с макросами, введёнными в этом окне.

Отправка и прием данных



Блок №1:
В этом большом поле вы будете видеть ответы от вашего устройства.
Если в разделе "Settings " вы не забыли поставить галочку "Time ", то перед каждой строкой будет проставлена метка времени. Это бывает очень полезно при анализе логов с устройства.

Блок №2:
Тут находится поле для отправки текста сообщений. Установленная галочка "+CR" будет дописывать к отправляемому сообщению символ возврата каретки (эмулировать нажатие клавиши Enter). Кнопка "->Send" отправит ваше сообщение на устройство.

Блок №3:
В самом низу находится поле, где вы можете видеть отправленные на устройство команды.


Теперь вы знакомы с интерфейсом Terminal 1.9b!

Как происходит общение с устройством, вы можете посмотреть в этих статьях.


эмулятор нуль-модемного провода Null-modem emulator Бесплатная программа com0com позволяет в пару кликов создать в системе пары виртуальных COM портов. Это позволяет, например, отлаживать ваши программы, использующие последовательные порты, не подключая никаких кабелей, или на компьютере, у которого вообще нет ни одного COM порта. Вы можете легко связать две программы, работающие с такими портами через этот драйвер, просто выбрав в одной программе первый виртуальный порт из пары, а во второй программе - второй порт. После этого программы смогут обмениваться данными, как если бы они были запущены на разных машинах, соединенных кабелем через их COM порты. К примеру вы пишете программу, которая посылает текстовые сообщения через последовательный порт. Вы можете отлаживать такую программу, назначив ей один из пары виртуальных портов, а на второй виртуальный порт из пары "повесить" программу - терминал. Тогда вы сможете в терминале наблюдать данные, которые посылает в порт ваша программа.

Другое применение - отладка проектов на микроконтроллерах в симуляторе Proteus. разработчики очень часто используют COM PORT (UART интерфейс) в микроконтроллерных приложениях, так как аппаратный UART модуль имеется практически в любом современном микроконтроллере, и использовать его легко и просто. В программе Proteus есть специальный компонент для связи с COM портом компьютера (не важно, реальный это порт или виртуальный). Компонент называется COMPIM и выглядит вот так:


Этот компонент - практически "мостик", связывающий симуляцию Proteus c внешним по отношению к симулятору миром.

Предположим мы разрабатываем устройство на микроконтроллере, которое связывается с компьютером и, возможно, управляется от него, через COM порт. Одновременно мы разрабатываем программу для компьютера, которая будет взаимодействовать с этим микроконтроллерным устройством. Используя драйвер виртуальных портов мы можем отлаживать такой комплекс внутри виртуального пространства компьютера без подключения каких-либо проводов и без сборки реального устройства на микроконтроллере. Просто "собираем" схему в Proteus, загружаем в модель контроллера прошивку, добавляем в проект компонент COMPIM, соединяем линии TXD и RXD контроллера с соответствующими линиями COMPIM. В компоненте COMPIM нужно выбрать один из пары наших виртуальных портов и задать правильную скорость обмена. С другой стороны, в компьютерной программе выбираем второй из пары COM портов. Запускаем проект Proteus на выполнение и любуемся результатом.

Более простой вариант - в качестве компьютерной программы можно использовать любой COM - терминал, например вот этот . Тогда в программе - терминале мы сможем видеть данные, поступающие с нашего микроконтроллера (из Proteus) и посылать ему команды, как если бы это было реальное "железное" устройство.

Для установки драйвера на windows 7..10 нужно временно перевести винду в режим разработчика. Для этого в меню пуск выберите "выполнить" и запустите команду
bcdedit.exe -set TESTSIGNING ON
после этого перезагрузите компьютер. Скачать программу - Virtual Serial Port Driver Com0Com



BComPort - Удобный в работе Delphi компонент для работы с COM- портом

Компонент для обмена данными с внешними устройствами через интерфейс RS-232 в асинхронном или синхронном режиме. Автор: Брусникин Игорь Викторович. Компонент довольно старый, но устанавливается без проблем в любой Delphi вплоть до 10.2 Tokio.

Внимание! В новых UNICODE- версиями Delphi компонент хоть и устанавливается без проблем, но работает некорректно, так как все новые версии Delphi используют тип String в Unicode. Я адаптировал компонент для использования в новых Delphi . Подправленная версия в том же архиве в папке BComPortUnicode . Оригинальная версия - в папке BComPort . Для установки в не-юникод версии Delphi (До 8-й включительно) нужно использовать оригинальную версию. Устанавливается просто. Например в Delphi 10.2 Tokio нужно выбрать Component - Install Component и потом выбрать файл BCPort.pas . В архиве есть инструкция на русском языке и примеры. Скачать архив с компонентом...

Если вам понадобится программа HyperTerminal в Windows 7, то смею вас огорчить: ее там больше нет. По какой-то причине разработчики компании Microsoft перестали включать эту замечательную утилиту в состав своих ОС (Vista, Server 2008/R2, Windows 7). Вероятно, одной из причин такого решения являться тот факт, что COM порты на современных компьютерах практически отсутствуют, а если и есть, то покрыты толстым слоем пыли…

Напомним, что HyperTerminal – это приложение, позволяющее эмулировать работу терминала при взаимодействии с удалёнными устройствами по последовательной шине (RS-232), dial-up-у или протоколу TCP/IP (последнее скорее редкость, предпочтительнее использовать telnet ). Через консольный COM порт обычно настраивают различное сетевое оборудование, такое как маршрутизаторы, модемы, свитчи, АТС и т.д.

Так как же работать с COM-портами и устройствами на них в Windows 7 , когда нужен функционал старого доброго гипертерминала?

Используем стандартный HyperTerminal из Windows XP

Чтобы вернуть HyperTerminal в Windows 7 достаточно просто скопировать файлы данной программы из Windows XP. Нам понадобятся следующие файлы:

  • C:\Program Files\Windows NT\hypertrm.exe
  • C:\WINODWS\system32\hypertrm.dll
  • C:\WINODWS\Help\hypertrm.chm
  • C:\Windows\Help\hyperterm.hlp

Скопируйте их в отдельный каталог в Windows 7, после чего можно запустить гипертерминал в Windows 7, открыв файл hypertrm.exe с явными правами админа (Run as administrator по правой кнопочке мыши).

Для тех счастливчиков, которые уже полностью мигрировали на Windows 7 и в чьем ведении не осталось Xp-шек, в архиве публикую все необходимые файлы.

Скачать hyperterminal для windows 7 : (215 Кб)

Putty как аналог гипертерминала

Если вы хотите радикально избавиться от устаревшего гипертерминала, придется искать его аналоги для Windows 7.

Из наиболее удобных вариантов аналога мне видится утилита Putty (тем более она входит в арсенал практически любого администратора). Все, что необходимо сделать для работы Putty с локальным COM-портом, выполнить следующую настройку.