Терминал для работы с COM-портом TerminalTMB (Версия 3)

Представляю очередную версию программы для работы с COM-портом TerminalTMB. Предыдущая статья и версии программы, доступны по ссылке. Идея создания данного проекта возникла после непродолжительного поиска на просторах сети терминала с нужным функционалом. Отправить байт, строку, увидеть принимаемые данные, записать лог, запомнить отправленные строки — это стандартный набор возможностей большинства подобных программ, но для моей деятельности этого мало. Некоторые идеи взял из других подобных программ и развил дальше, но пока не реализовал подсветку строк, не добавил возможность построения графиков, сценариев, как в Terminal 1.9b, Al_Terminal. Пока не реализована возможность прослушивания порта, как умеет COM Port Toolkit. Это всё будет в будущем по мере развития проекта. Есть программа работы с более богатым и гибким функционалом – Обсервер, но она и сложнее для использования.

Окно программы

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

Основные возможности терминала.

  • удобное хранение и использование 4800 макросов, разбитых на 100 списков с полным описанием каждого макроса;
  • работа в HEX и ASCII режиме;
  • 4 режима отправки команд из консольной строки: ручной, периодический, после ответа и при нажатии на кнопку с макросом;
  • отправка команд из файла;
  • отправка файлов размером до 16 МБ;
  • отправка списков команд с настраиваемыми временными интервалами;
  • эмулирование ответов на запросы (до 320 запросов по 16 возможных ответов на каждый запрос, конфигурации можно сохранить и прочитать из файла);
  • режим прямой отправки кодов символов с клавиатуры в момент нажатия клавиш;
  • настройка условий для разделения строк;
  • настройка условий для очистки лога;
  • одновременный просмотр лога в HEX и ASCII-режимах;
  • фильтрация сообщений перед выводом в лог;
  • захват нужных подстрок с остановкой прокрутки лога;
  • настройка условий для автоматического разворачивания окна терминала из свёрнутого состояния;
  • ведение статистики;
  • логирование событий в файл;
  • запись текстового и бинарного лога с любым расширением;
  • настройка цветов и шрифтов, возможность быстрого поиска по началу введённой команды из списка ранее отправленных;
  • вывод лога через прямой и инверсный фильтр, когда нужно выводить ссобщения с заданной подстрокой или игнорировать только их;
  • отправка команд в HEX или ASCII и приём ответов в любом одном или одновременно двух указанных режимах.

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

Окно программы

Настройки порта

При нажатии кнопки «Port» выполняется считывание существующих портов из реестра OC Windows, затем предлагается выбрать нужный порт для подключения. Первым в списке предлагаемых портов будет последний использованный, если такой был.

TerminalTMB v3

В открывшемся окне будет предложено выбрать порт и задать его настройки. Если скорость порта нестандартная, то в соответствующем окне можно вручную ввести необходимое значение. В настройках порта имеются две опции для настройки автоматического соединения. Первая нужна для случая, когда порт временно пропадает из системы и заново появляется в ней, например, при перезапуске микроконтроллера устройства или при переподключении кабеля USB. Вторая опция настройка автоматического соединения отвечает за автоматическое нажатие кнопки Connect после запуска терминала. В этой ситуации вероятна ситуация, когда терминал намертво зависнет (порт прописан в файле конфигурации, но из системы удалён вместе с переходником usb-com) и потребуется нажать три кнопки, но после данного способа выхода при повторном запуске эта опция будет отключена.

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

TerminalTMB v3

Работа с логом

TerminalTMB v3

На данной панели имеется команда очистки окна лога, окно ввода строки фильтра и настройки реакции программы при получении пакета, содержащего в себе заданную последовательность.
Miss – не выводить сообщения, содержащих подстроку из окна фильтра;
Out – в окно лога выводятся только те пакеты, которые содержат указанную подстроку;
Capt – при появлении пакета с заданной подстрокой окно лога останавливается;
No – никакое действие не выполняется (на случай, если нужно временно отключить фильтр);
Auto scroll – автоматическая прокрутка окна лога вниз при получении очередной порции байтов.
В окне статистики работы терминала отображается значение счётчика полученных подстрок, заданных в фильтре:

TerminalTMB v3

Для отображения данной статистики нужно нажать кнопку «Show stat»

TerminalTMB v3

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

«||» — кнопка остановки лога с последующим просмотром в отдельном окне, при этом в главном окне запись лога будет продолжаться. Для возврата в главное окно лога нужно нажать данную кнопку ещё раз (в это время на ней будет символ «>»).

Настройки программы

TerminalTMB v3

Start log – кнопка запуска записи лога. После её нажатия будет предложено ввести префикс названия файла, выбрать тип записываемого файла и записываемые данные: отправляемые и/или принимаемые данные для каждого записываемого файла.

TerminalTMB v3

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

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

TerminalTMB v3

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

TerminalTMB v3

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

Second Window – включение второго окна вывода лога, в котором можно указать режим вывода (ASCII или/и HEX) и направление выводимых сообщений (TX и/или RX). На скрине показан пример использования дополнительного окна, когда в левом окне отфильтрованный лог, а в правом полностью весь лог отображается. В левом окне запрещено выводить сообщения, содержащие подстроку “AT+”, в правом окне настроен вывод только прочитанных сообщений и только в формате ASCII. Включена опция игнорирования фильтра, чтобы выводить полный лог. Окно настроек дополнительного окна открывается при открытии этого окна или по двойному клику в его области.

Окно программы

Add Menu – отображение дополнительных пунктов меню настройки программы и включения дополнительных режимов программы.

TerminalTMB v3

Background color – выбор фонового цвета окна вывода лога;
Font settings – настройки шрифта окна вывода лога;
Monitor mode – скрытие/отображение нижней панели программы;

Описание нижеперечисленных кнопок будет в следующих разделах руководства:
EmulAns – режим эмулятора ответов в ответ на приходящие запросы;
Cmd list mode – режим отправки списков команд с заданными интервалами;
Fast send mode – режим прямой отправки кодов клавиатуры в порт;
Directories – настройки директорий хранения файлов, используемых программой;
Sent commands – окно отправленных в порт данных;
Sniffer – пока не задействована;
Line separator – настройка разделителя пакетов для отображения в логе;
Autocleaning – настройки автоочистки окна лога;
Buffer FIFO – работа с входным приёмным буфером;
Event alert – настройка отслеживаемых событий;
Event log – логирование событий и работы терминала;
ASCII table – таблица ASCII, актуальная для данной версии Windows.

Отображение лога

Окно программы

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

TerminalTMB v3

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

Режим отправки пакетов

TerminalTMB v3

Имеется возможность задать один из нескольких режимов отправки содержимого консольной строки в порт:

Manual – только ручная отправка по нажатию Enter (с очисткой строки), Ctrl+Enter(без очистки строки) или соответствующей кнопки отправки команды справа от окна ввода хвоста команды. Содержимое консольной строки меняется вручную или при нажатии соответствующей кнопки с макросом.

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

After answering – отправка содержимого консольной строки сразу после получения ответа на предыдущую команду или после прихода любых данных в общем случае. Содержимое консольной строки можно менять вручную или нажатием соответствующей кнопки с макросом. На частоту отправки команд влияет время, указанное в качестве разделителя строк, указываемое в дополнительном меню (Line separator).

Periodic – периодическая отправка содержимого консольной строки в порт с заданной периодичностью. Точность выдержки периодичности в пределах 10-30 мс, поэтому относительно точно период отправки будет выдерживаться при его значении больше 1000 мс. Содержимое консольной строки в данном режиме можно менять вручную или с помощью кнопок макросов.

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

TerminalTMB v3

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

TerminalTMB v3

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

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

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

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

Файл команд нужно обязательно завершать переходом на новую строку в конце файла.

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

Консольная строка

TerminalTMB v3

Пакет для отправки данных формируется из содержимого консольной строки и “хвоста сообщений”, которые склеиваются вместе перед отправкой. Для отправки консольной строки нужно нажать Enter, если нужно отправить строку с очисткой содержимого или Ctrl+Enter, если очищать не нужно. Нажатие стрелки вверх при нахождении фокуса ввода в консольной строке будет выполнена очистка окна лога. Нажатие стрелки вниз развернёт окно с историей ранее отправленных команд, начало которых совпадает с частично введённой командой. Если консольная строка пуста, то нажатие стрелки вниз отобразит все ранее отправленные из консольной строки команды (всего запоминается не более 500, повторно отправляемые команды в данный список не добавляются, а ранжируются в списке так, что в верхней строке списка будет последняя отправленная строка). Длина строки консоли не должна превышать 65000 символов для текстового режима и 205000 символов для бинарного.

«Хвост сообщений» – это та сущность, которая всегда добавляется к содержимому консольной строки. Если нужно добавить одно или несколько шестнадцатеричных чисел, то они записываются в виде $XX$YY$ZZ. Если нужно добавлять смешанные данные, то пример хвоста будет такой «text cmd$0D», также имеется возможность вставки в хвост сообщений шаблона контрольной суммы, рассчитываемого по одному из алгоритмов, например для NMEA-сообщений шаблон будет следующий: «*[XOR_8 (1..n)]$0D$0A»

TerminalTMB v3

Данные в консольной строке отправляются в том виде, который задан для отображения лога: ASCII или HEX. Всё ранее написанное было справедливо для текстового режима. При отправке данных из консоли в HEX-режиме строка формируется из двоичных чисел в формате XX через пробел, например «70 77 64 20 31 32 33 34 35 3B 65 63 68 6F 20 6F 66 66 2A 37 37 0D «, в аналогичном виде формируются строки файла команд, содержимое макросов и содержимое хвоста команд. Единственная необычность в том, что в конце консольной строки или команд в файле нужно ставить пробел, если предполагается добавление хвоста сообщений.

TerminalTMB v3

В хвост сообщений тоже можно добавлять один или несколько шаблонов контрольных сумм (для извращений) через пробел, например:

TerminalTMB v3

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

Макросы

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

TerminalTMB v3

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

Для переключения в режим простого редактирования нужно выбрать вкладку «Editor».

TerminalTMB v3

В данном режиме можно менять название списка макросов их имена и содержимое, доступно перелистывание списков и переключение между режимами отображения команды и имени. Для каждого списка макросов сохраняется свой хвост сообщений и свой режим работы (ASCII или HEX). Для режима HEX команды записываются в том же виде, как в консоли для данного режима, например: «11 22 33 44 55 0F AB CD » с обязательным добавлением пробела в конце, если предполагается прикрепление хвоста сообщений.

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

TerminalTMB v3

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

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

Имеется возможность отправки файлов в порт. Размер файла при этом не должен превышать 16 МБ. При отправке файла можно видеть лог отправки всегда в HEX-виде и статистику процесса в правом нижнем углу, которая отображается по нажатию кнопки «Show stat»

TerminalTMB v3

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

Теперь вернёмся к описанию дополнительных режимов работы и настройкам терминала, доступных по нажатию кнопки «Add menu».

Режим эмулятора ответов

TerminalTMB v3

В данном режиме можно настраивать списки ответов, возвращаемых в порт после получения целого запроса или его части, начало которого совпадает с одним из заданных в списке входящих пакетов. Для активации данного режима нужно нажать нижнюю правую кнопку со значком «>». В процессе работы можно на ходу делать активными шаблоны входящих запросов и варианты ответов на них установкой галочки в соответствующем чекбоксе. На скрине показан пример настройки режима автоматической отправки ответов на запросы с использованием только текущего списка запросов. В автоматическом режиме в ответ на запросы будут автоматически отправляться в случайном порядке один из активных ответов именно для конкретного запроса. Для каждого запроса можно задать до 16 возможных ответов. Если число возможных запросов не помещаются в списке, то можно задействовать все списки, установив соответствующий режим. Ответы могут отправляться в текстовом или в бинарном виде, что выбирается соотвествующими радиокнопками слева от каждого возможного ответа. Правило записи бинарных последовательностей такое же, как и для консольной строки, т.е. в виде «XX YY ZZ » с обязательным наличием пробела в конце строки, если предполагается использование хвоста сообщений. Хвост сообщений для данного режима задаётся в соответствующих окнах отдельно для каждого возможного ответа. По нажатию стрелки вниз в окне редактирования хвоста сообщений открывается список шаблонов контрольных сумм, а далее алгоритм формирования такой же, как и при работе с консольной строкой. Внизу окна находятся кнопки редактирования списков и изменения пропорции ширины окон редактирования запросов и ответов. Данный режим можно применять для эмулирования ответов датчиков, возвращающих данные по запросу. Не составит большого труда составить нужный алгоритм работы с GSM-модулем, если задать ответы-команды на каждое синхронное или асинхронное сообщение данного модуля. Ещё одно применение данного режима можно найти при тестировании софта, который должен работать с каким-либо устройством по последовательному порту. В данном случае следует применить пару виртуальных портов com0com, к одному из которых следует подключить тестируемую программу верхнего уровня, а ко второму данный терминал и задействовать этот режим. Ничто не мешает отвечать программе верхнего уровня вручную или с помощью макросов, но в реальном времени это часто бывает сложно делать из-за необходимости быстро отвечать на запросы и вот тут будет очень удобно применять этот режим. Для каждого устройства или программы можно сохранять и загружать свою конфигурацию запросов и ответов.

Режим списка команд

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

TerminalTMB v3

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

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

TerminalTMB v3

Данный режим позволяет отправлять печатаемые символы в порт сразу после нажатия.

Все режимы отправки команд можно использовать одновременно.

Окно просмотра ранее отправленных команд

TerminalTMB v3

В данном окне отображаются все ранее отправленные команды и опционально их режим отправки ([H] – HEX, [A] — ASCII). Данное окно очищается автоматически и/или вручную при нажатии соответствующей кнопки.

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

Настройки директорий

TerminalTMB v3

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

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

Следующие настройки не открываются в отдельных окнах:

TerminalTMB v3

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

TerminalTMB v3

Здесь имеются следующие возможности:

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

При нажатии на кнопку ASCII table открывается окно с соответствующей таблицей:

TerminalTMB v3

Таблица формируется программным способом, поэтому для каждой версии Windows может отличаться от представленной на рисунке.

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

Плагиат статьи приветствуется при указании ссылки на первоисточник. Даже если ссылка не будет указана в скопированном тексте, то она имеется в информации для обратной связи в самой программе по нажатию кнопки «Info».

Скачать программу TetminalTMB v3.98b

Изменения в версии 3.104b от 2021.06.22:

  • добавлена возможность выбора контрольной суммы LLS;
  • добавлена возможность привязки всех настроек отправки, приёма, отображения и т.д. к каждому списку макросов;
  • добавлены кнопки копирования и вставки списка максросов;
  • добавлена функция сравнения бинарных файлов;
  • небольшие визуальные улучшения.

Скачать программу TetminalTMB v3.104b

Абдулхаев Иван, г. Тамбов.

Комментировать »

Иван Абдулхаев | 13.05.2021 | Программы |

Комментарии RSS

Оставьте отзыв