Универсальный терминал для работы с COM-портом “Termial ST”
В настоящее время ПК и ноутбуки с “железными” COM-портами в наборе интерфейсов уверенно перемещается в ряды экспонатов раритетной техники, но в мире микроконтроллерной техники и в промышленном оборудовании он будет ещё долго держать свои позиции. Для возможности беспроблемного сопряжения ПК и микроконтроллерных устройств выпускаются различные платы расширения и переходники типа USB-RS232, RS232-Bluetooth, USB-RS485 и т.д, также во все МК с USB-интерфейсом можно записать код для эмуляции обычного COM-порта. Во многие датчики встроены микроконтроллеры для оцифровки и первичной обработки сигналов от сенсоров различных типов, а результаты обработки во внешний мир передаются в цифровом виде опять же через тот самый последовательный интерфейс. Разработчики часто осваивают новые протоколы непосредственно “в железе”, используя в качестве ведущего устройства микроконтроллер или ПК. С помощью микроконтроллера можно сформировать пакеты из любой последовательности байтов данных для отправки и любой алгоритм обработки принимаемых данных. В своей практике на первом этапе разработки ПО для работы с различными устройствами через UART стараюсь вначале освоить работу с ним через ПК, на котором должен быть соответствующий терминал. Существуют множество терминалов для работы с COM-портом, но универсального на все случаи своей практики не нашёл, поэтому решил сделать его сам. Далее сильно напряг фантазию и в целях однозначности идентификации поисковиками дал ему название “Terminal ST”.
Общий вид терминала (версия 3)
Один из читателей из города Тамбова прислал обновленную версию терминала для работы с COM портом и статью описывающие особенности программы. Особенностью данной программы является возможность формировать групп команд, для удобного общения с различными устройствами через последовательный порт. Примечание Alex_EXE.
Предыстория представлена здесь терминал для GSM модема SIM900 — SIM900 DIALOG и здесь терминал — GSM DIALOG.
Особенности данного терминала:
- возможность хранения и редактирования до 1485 символьных и/или бинарных последовательностей (команд). Все команды разбиты на группы и подгруппы.
- возможность хранения и редактирования краткой справки по каждой команде; Сохранённая справка появляется при наведении курсора мыши на кнопку с соответствующей командой, т.е. не нужно держать под рукой соответствующие справочники.
- возможность выбора одного из четырёх режимов отправки команд, описание которых приведено далее;
- возможность добавления в конец каждой команды заготовленной последовательности символов, например <0D><0A> или “<0D><0A>exit<0D>” для текстового режима или любую последовательность данных в формате HEX для бинарного.
- возможность устанавливать задержку для накопления данных в приёмном буфере, чтобы визуально весь ответ располагался в одной строке.
- автоматическое переподключение к выбранному порту на случай кратковременной потери связи или временного пропадания COM-порта в диспетчере устройств Windows, что актуально при использовании переходника USB-COM или в случае перезапуска МК с соответствующим эмулятором.
Показана последовательность кликаний мышкой для успешного сохранения команды с описанием.
Описание алгоритма редактирования команд можно прочитать в статье GSM DIALOG. Во всём остальном интерфейс постарался сделать максимально понятным.
Опишу дополнительные особенности терминала.
- Имеются 4 режима отправки команд. Режим ручной отправки очевиден – вводите команду (вручную или нажатием соответствующей кнопки) и нажимаете “Отправить”, далее с предвкушением ожидаете ответ. Режим отправки “После ответа” реализован так, что текущие данные из командной строки будут отправлены сразу же после получения ответа на предыдущий запрос. Следует иметь ввиду, что ответ от устройства может приходить частями, если его длительность превысит 1-10 мс, но программа после успешного считывания приёмного буфера сразу же отправит содержимое командной строки устройству. Во избежание недоразумений имеется опция “Время накопления буфера чтения, мс”, с помощью которой можно задать время ожидания заполнения приёмного буфера после отправки последнего байта устройству, т.к. обычно устройства отсылают сформированный ответ без разбивки на части во времени. Милисекунды в данном случае условные ввиду того, что Windows по своей природе не является операционной системой реального времени. Режим отправки “При выборе” означает то, что команда в порт будет отправлена сразу же после нажатия соответствующей кнопки, т.е. не нужно каждый раз двигать мышкой в сторону кнопки “Отправить”. Следующий режим – периодичная отправка, которая подразумевает возможность задать период отправки содержимого командной строки, после чего с заданной периодичностью последовательность будет отправляться в порт вне зависимости от того, приходит ответ от устройства или нет. Опция “Накопление буфера чтения” актуальна для всех режимов отправки команд.
- Имеется возможность выбора формата обмена данными. Можно работать с данными в бинарном или в текстовом формате. Первый вариант обычно актуален при работе с датчиками, второй с законченными устройствами. Каждый байт бинарного запроса записывется в формате 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
- добавлена возможность отправки команды по нажатию «Enter», кнопка «Esc» очищает строку с командой
- добавлена возможность копирования лога из окна диалога, переключение в интерактивный режим окна осуществляется установкой соответствующей галочки.
- добавлена возможность отправки команд из файла. Отправлять можно циклически или до достижения конца файла. Для считывания очередной команды из файла в ручном режиме нужно нажать кнопку «Из файла» и затем «Отправить». В режиме «После ответа» и «Периодически» следующая команда из файла будет считываться автоматически. Это удобно в том случае, если в последовательный порт нужно отправить последовательность команд с ожиданием ответа на каждую команду или отправку нужно выполнять с определённым интервалом.
- улучшен интерфейс программы.
- добавлен счётчик отправленных и полученных пакетов.
- добавлены кнопки для более быстрого переключения вкладок с командами.
- исправлены замеченные ошибки в коде.
Скачать программу Termial ST v3
Изменения в версии v4 от 2018.08.27
- Добавлен режим однократной отправки содержимого консольной строки в порт после восстановления соединения;
- На главную панель добавлена дублирующая кнопка Отключить/Подключить;
- Для кнопок с командой добавлена всплывающая строка, отображающая полностью всю надпись;
- Исправлена ошибка вывода смешанных данных (бинарных и текстовых), доработан интерфейс программы.
Режим однократной отправки удобно применять в том случае, когда имеются несколько приборов и в каждый из них нужно отправить одну и ту же команду. При использовании данного режима пользователю нужно будет только подключать разъём к очередному прибору, а программа сама будет устанавливать соединение и отправлять заданную команду один раз, но предварительно должно быть настроено и установлено соединение с первым прибором, это работает с эмулятором USB, но не с «железным» COM-портом. Если подключен один и тот же прибор со встроенным эмулятором COM-порта, но в консольной строке будет команда для перезапуска, то терминал в данном режиме будет бесконечно перезапускать прибор, т.к. после каждого перезапуска кратковременно теряется соединение. Так же удобно использовать данный режим для отслеживания перезапусков прибора с эмулятором порта в микроконтроллере, факт перезапуска можно фиксировать по времени отправленной команды в лог-файле.
Скачать программу Termial ST v4
Программа обновлена 27.08.2018
Иван Абдулхаев | 27.02.2018 | Программы |
Сергей пишет 24.10.2018 в 19:25 #
В ручном режиме не добавляет в конец строки , сколько не проси. Не работает должным образом.
Иван Абдулхаев пишет 24.10.2018 в 21:01 #
Я этот терминал с нуля переписываю в свободное время, скоро выложу более удобную версию с новыми возможностями. Этот момент учту.
Иван Абдулхаев пишет 27.05.2019 в 16:36 #
Полностью переработанный терминал с упрощённым интерфейсом вот в этой статье https://alex-exe.ru/programm/terminal-tmb/