Найти тему
TehnoZet-2

Бесплатная программа TerminalTMB для работы с COM портом

Оглавление

Обновление от 15.05.2024 (добавлены актуальные ссылки)

Вместо предисловия.

На сегодняшний момент очень много программ мониторов COM порта, но чаще всего мониторы последовательного порта идут в "нагрузку", по необходимости, это легкие, встроенные подпрограммки. Подключились посмотрели буковки и символы, ну и все хватит, а зачем больше? А вот профессиональных программ которые позволяют не просто смотреть, но и полноценно работать с COM портом мало и самое интересное со временем их становится не больше, а меньше. Раньше во времена "нуль" модемов их было "как грязи", а сейчас попробуй найди! Да, и как то боязно качать не пойми откуда, вирусы, трояны, дополнительное, навязываемое программное обеспечение всего этого навалом, а софтовые сайты где и ютятся это забытые программки превратились в сплошные разносчики заразы!

Предыстория

В очередной раз мне понадобилась поработать с устройством по UART (COM) порту, а программ то и нет! С трудом нашел только две программы и выложил статью, вот она: "Программы для работы с COM (Serial) портом". И какое же было мое удивление когда чрез пару месяцев откликнулся один из создателей программы TerminalTMB, в девичестве Termial ST Иван (тут он под ником Дейл). Оказалось, что пишет он эту программу для себя и своей работы, а именно для связи с навигационными терминалами и для имитации ответов датчиков по последовательному порту. Нужно было сократить время для ввода консольных команд, отправляемых по COM-порту или UARTу, а еще нужно было где-то хранить заготовки команд с их описанием. Программа писалась эпизодически, по вечерам с 2018года, а функции добавлялись по мере необходимости. Но так как он пишет сам, для себя, естественно, не документации, не внятных объяснений и разъяснений нет. И я попросил его написать статью и очень рад, что Иван (Дейл) откликнулся, засел за статью (А я знаю как это сложно! Программисту - разработчику и так все понятно, а вот другим пользователям...) и он написал ее! Я очень рад , что внес свою маленькую, посильную лепту в создание законченного профессионального программного продукта. Ну да ладно (смахивая скупую слезу) хватит высокопарных слов, к делу! Ниже описание программы TerminalTMB написанное ее разработчиком Абдулхаевым Иваном (тут ник Дейл), редактирование мое.

Бесплатная программа TerminalTMB

Последняя актуальная версия

Так как не всегда успеваю, могу изменять статью последняя актуальная версия доступна по ссылкам:

Старая версия 2.31 (на 28.02.2021)

TerminalTMB 2.31 (мой Гугл диск)

TerminalTMB 2.31 (мой Яндекс диск)

Альтернативная ссылка

- доработана логика работы: пустые кнопки макросов становятся неактивными; разрешена отправка только хвоста сообщения, например, отправка $0D в текстовом режиме;

- перекомпанованы кнопки в соответствии с логикой работы с терминалом;

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

Старые версии

Версия 2.25 (на 05.02.2021)

TerminalTMB 2.25 (мой Гугл диск)

TerminalTMB 2.25 (мой Яндекс диск)

Альтернативная ссылка

- добавлена возможность включения окна лога отправленных команд;

- доработана логика настройки шрифта: в диалоговом окне при открытии устанавливаются текущие настройки;

- добавлена возможность настройки директорий для сохранения логов и быстрого поиска файлов с командами и данными (длина пути не больше 250 символов);

- изменена логика работы алгоритма логирования: при старте записи в файл предлагается задать префикс имени файла, при остановке записи предлагается открыть файл лога;

- добавлена возможность запуска блокнота для просмотра текущего файла лога или любого ранее сохранённого;

- доработан интерфейс главного окна: шрифт на кнопках дополнительных настроек и режимов меняется на подчёркнутый жирный, пока активно соответствующее открытое окно;

- доработана логика настройки режимов фильтрации и захвата.

Версия 2.14

TerminalTMB 2.14 (мой Гугл диск)

TerminalTMB 2.14 (мой Яндекс диск)

- устранены незначительные уязвимости в алгоритме сохранения макросов; - добавлены подсказки к некоторым кнопкам для отображения при наведении указателя мыши.

Проверка на вирусы

Проверка на вирусы сайт: https://www.virustotal.com

Антивирусная программа находит два вируса:

  • Microsoft: Program:Win32/Wacapew.C!ml
  • VBA32: BScope.Trojan.Wacatac

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

И кстати во многих специальных программах антивирусы находят типа "вирусы", недавно я прогнал известные программы tftpd64 и Putty через Virustotal и там то же "вирусы"

Язык программирования

Delphi

Назначение

Терминал для работы с COM-портом на профессиональном уровне.

Распространение.

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

От автора

В настоящее время “железный” COM-порт на современных настольных компьютерах давно уже ушёл в небытие, но идеи работы с ним всё ещё живут и воплощаются в виде эмуляторов через USB или в виде переходников USB-COM. В промышленной электронике “железный” COM-порт всё ещё живёт и здравствует. Нет предпосылок к уходу в историю интерфейсов UART в большинстве даже самых простых микроконтроллеров. А раз так, то ещё долгое время будет использоваться последовательный интерфейс во всевозможных реализациях. Для работы с последовательным портом и создана данная программа, терминал ручной работы - TerminalTMB. В данной программе постарался собрать все удобства найденных в сети терминалов и добавить полезные плюшки.

Запуск программы

После копирования программы в пустую папку её запуска создаются несколько пустых файлов для хранения настроек конфигурации, ранее отправленных команд и макросов, это CmdConfig, OldCmdList, Cfg1, AddCmd. После чего открывается главное окно программы.

Давайте разберем что это за файлы:

  • CmdConfig - файл с макросами для главного окна;
  • OldCmdList - файл со списком ранее отправленных команд;
  • Cfg1 - настройки главного окна: COM-порт, настройки шрифта, последняя отправленная команда, настройки фильтра и режима отправки команд;
  • AddCmd - файл со списками дополнительных команд, который открывается по нажатию кнопки "L" - List.

Главное окно программы TerminalTMB

Главное окно программы TerminalTMB
Главное окно программы TerminalTMB

Терминал позволяет отправлять команды в:

  • ASCII - текстовом виде
  • HEX - бинарном виде

При отправке в данных в текстовом виде в порт "улетают" данные в том виде, в котором они представлены в консольной строке, макросе или в строке из файла.

При отправке в бинарном виде данные следует записывать побайтно с разделителем в один символ между ними, например: строка “01 0A FF AA” будет равноценна строке “01-0A-FF-AA-“, т. е. терминал берёт каждые первые и вторые символы, а третьи воспринимает как разделители. В данном режиме нужно не забывать ставить разделитель в самом конце команды, если предполагается прикрепление “хвоста” в конец последовательности байтов.

О "Хвосте" сообщений

"Хвост" сообщения - это последовательность байтов, автоматически прикрепляемых к каждому отправляемому сообщению, например, в конце каждой консольной команды обычно ставят байт 0D (\r) или 0D0A (\r\n). Ещё можно в конец строки автоматически добавлять контрольную сумму последовательности, которая задаётся одним из шаблонов, доступном в выпадающем списке окна для хвоста сообщений.

Если нужно добавлять в конец строки в режиме ASCII 0D0A, то в окне ввода "хвоста" нужно писать "$0D$0A", в HEX режиме "0D 0A". Если в режиме ASCII в "хвост" нужно добавлять обычный текст и специальные символы, то текст можно написать как есть, а специальные символы пишутся со знаком "$" перед кодом символа, например: нужно к каждой команде добавлять " cmd_write" и два байта 0D0A. В этом случае следует записать так: " cmd_write$0D$0A". В режиме HEX "хвост" записывается в виде последовательности байтов в формате XX через пробел. Есть возможность вставки в конец строки контрольной суммы из списка предлагаемых вариантов по нажатию клавиши "стрелка вниз". Пример шаблона контрольной суммы: [XOR_8 (0..n)] данный шаблон позволяет вычислить контрольную сумму путём сложения всех предыдущих байтов, начиная с нулевого, по логике "исключающее или". Значение контрольной суммы вставляется в то место, где установлен шаблон. Например, при формировании сообщений NMEA контрольная сумма считается для всех символов, начиная со второго и добавляется в конец строки через разделитель " * ". Для формирования такого окончания строки следует задать шаблон " *[XOR_8 (1..n)]$0D$0A " и в результате в конец строки будет добавляться "хвост" в виде *XX$0D$0A", где XX - рассчитанная контрольная сумма в текстовом виде. Для режима HEX шаблон контрольной суммы ставится на том месте, где должно быть соответствующее число, шаблон должен быть отделён от других байтов пробелами, например: "[XOR_8 (1..n)] 0D 0A".

О программе

О программе и её разработчике можно узнать нажав " I " - Info, информация.

" I " - Info
" I " - Info

Окно информации

Информация о программе
Информация о программе

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

VK: vk.com/id22066903

Верхняя панель терминала

Верхняя панель терминала
Верхняя панель терминала

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

Автоматизация отправки сообщений (AutoConn, Send on connect)

Для автоматизации процесса используются команды:

  • AutoConn - автоматическое создание соединения
  • Send on connect - отправить команду в порт при создании соединения
AutoConn, Send on connect
AutoConn, Send on connect

Если используется режим отправки команд из файла, то при включенной опции “Send on connect” в порт будут отправлены все команды из файла в соответствии с заданным режимом отправки команд. Это удобно, когда имеется тысяча приборов, в которые нужно отправить одни и те же настройки через эмулятор COM-порта по USB.

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

Работа с буфером, фильтрация

Работа с буфером, фильтрация
Работа с буфером, фильтрация
  • TimeRX – это время накопления приёмного буфера перед отображением в окне лога. Данная опция удобна в том случае, когда ответ от устройства приходит в течение нескольких десятков или сотен миллисекунд. В обычном режиме в окне лога ответ будет разложен на несколько строк. В бинарном режиме это не очень удобно лицезреть, поэтому эта настройка может пригодиться именно для данного режима. Чуть правее настройки TimeRX имеется возможность задать фильтр отображаемых сообщений в окне лога.
  • Out – режим фильтрации “Out”, в окне лога будут отображаться те сообщения, которые содержат в себе последовательность из окна фильтра.
  • Capt – останавливается прокрутка лога в тот момент, когда в прочитанном сообщении попадается комбинация, заданная в окне фильтра.

Настройка режимов вывода

Настройка режимов вывода
Настройка режимов вывода

Можно указать размера шрифта. Кнопка “Clear” очищает окно лога. “Font” – настройки шрифта окна лога. “Start/Pause/Go” – управление процессом записи лога в текстовый файл. “AW” – открытие дополнительного окна лога, в котором вывод осуществляется в отличном от заданного режима вывода лога в главном окне, т.е. если выбран режим HEX, то в дополнительном окне будут выводиться данные в режиме ASCII. Это удобно, когда нужно видеть данные одновременно в двух режимах. Для упрощения поиска нужных данных на бесконечной простыне байтов рекомендую включать отображение временного штампа с каждым прочитанным буфером данных. “||” – кнопка остановки/запуска прокрутки лога. “С” – кнопка переключения предустановленных цветовых тем фона и шрифта. “M/D” – включение режима просмотра/диалога. “L” – режим работы со списками команд, на котором остановлюсь поподробнее.

"L” – режим работы со списками команд

"L” – режим работы со списками команд
"L” – режим работы со списками команд

При выборе режима работы со списками команд открывается соответствующее дополнительное окно.

Дополнительное окно
Дополнительное окно

В данном режиме можно формировать список отправляемых команд, после отправки каждой из которых нужно выдержать заданную паузу. Последняя отправленная команда подсвечивается зелёным цветом. Отправка может выполняться вручную или автоматически. В обоих режимах доступными для отправки будут только активные команды. Команды можно редактировать непосредственно в строке или в отдельном окне по двойному клику мыши. Пока ещё несохраненная команда выделяется жирным шрифтом. В отдельном окне редактирования можно также написать краткую справку к каждой команде. Список команд можно отправлять однократно или циклически. Также можно задать диапазон страниц с командами для автоматической отправки, если команд больше 32. Режим отправки данных задаётся отдельно для каждого списка команд.

Все ранее отправленные команды сохраняются в памяти и отображаются в выпадающем списке под консольной строкой по нажатию клавиши “Стрелка вниз”, когда фокус ввода находится в консольной строке. Если в консольной строке уже записаны несколько первых символов, то отобразится список ранее отправленных команд, которые начинаются с введённой последовательности. Список ранее отправленных команд ранжирован по времени отправки, т.е. вверху списка будет последняя отправленная команда. Всего в данном списке сохраняются не более 200 команд.

Выбор режима отправки сообщений (Send)

Send
Send

Режим отправки сообщений может быть:

  • Manual - ручным, по нажатию кнопки: "Enter" или "Ctrl+Enter";
  • When choosing - "при выборе", команда отправляется по нажатию кнопки с макросом;
  • After answering - "после ответа", команда отправляется после получения ответа с другой стороны кабеля.
  • Periodic - режим периодической отправки с заданным интервалом.

Логирование

В окне лога к каждому входящему или исходящему сообщению может прикрепляться время приёма/передачи данных (“TIME”) и объём отправленных или принятых данных ("CNT”). Для включения данных опций нужно поставить соответствующие галочки “TIME” и “CNT” в панели выбора режима отображения данных.

Логи
Логи

На скриншоте показан лог отправленного и принятого сообщения в текстовом режиме при включенном отображении времени и числа принятых/отправленных байт.

Пример настройки лога
Пример настройки лога

Макросы

В терминале можно использовать макросы с готовыми командами в текстовом или бинарном виде. Для редактирования макросов нужно нажать на кнопку “Editor”, после чего будет доступно простое редактирование названия команды и её самой.

Редактирование макросов
Редактирование макросов

В данном режиме можно переключаться между списками макросов и выбирать редактируемую сущность команды (Name или Command).

-14

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

Все макросы сохраняются в одном из файлов конфигурации ("CmdConfig")

Для каждого списка команд сохраняется свой “хвост” строки и режим отправки команд (HEX или ASCII).

Отправка команд из файла

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

Отправка команд из файла
Отправка команд из файла

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

Отправка файлов

Имеется возможность отправки файлов в порт. Максимальный размер файла не может быть больше 1 МБ. Для отправки из файла нужно нажать кнопку “SendFile…” и затем указать нужный файл.

Отправка файлов
Отправка файлов

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

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

Дополнение 2.25 от 04.02.2021

LSC - лог отправленных данных (команд, последовательностей)

В терминале добавлено окно для просмотра лога отправленных данных (команд, последовательностей). Для включения данного окна следует нажать кнопку LSC в верхней панели:

LSC - лог отправленных данных (команд, последовательностей)
LSC - лог отправленных данных (команд, последовательностей)

Данное окно удобно в том случае, когда автоматически прокручиваемый лог главного окна не позволяет держать в поле зрения ранее отправленные команды. На данном окне имеется опция отображения режима отправки данных: [H ] – данные отправлены в HEX -виде, [A ] – данные отправлены в виде текстовой строки. Линейка показывает степень заполнения буфера окна перед его автоматической очисткой.

Sett - настройка директорий для хранения файлов логов, команд и данных

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

Sett - настройка директорий для хранения файлов логов, команд и данных
Sett - настройка директорий для хранения файлов логов, команд и данных

OpenLog

При старте записи в файл лога терминал предложит задать префикс имени файла, в который будет вестись запись. Данный файл или любой другой ранее записанный в любой момент можно открыть с помощью блокнота по нажатию на кнопку “OpenLog ”.

Префикс имени файла
Префикс имени файла
 Кнопка “OpenLog ”
Кнопка “OpenLog ”

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

Все остальные изменения касаются улучшения внешнего вида интерфейса.

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

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

И обязательно, продолжение следует...

Всегда с вами, канал TehnoZet-2, подписывайтесь, у нас много интересного! Мы только развиваемся! Понравилась статья, хотите продолжения - ставьте лайк, жмите палец вверх! И не забывайте про комментарии!