Обновление программы терминала — Terminal TMB

Продолжаю дальше развивать проект терминала для работы с COM-портом. Предыстория проекта данного представлена здесь:
Универсальный терминал для работы с COM-портом «Termial ST»
Терминал — GSM DIALOG
Терминал для GSM модема SIM900 — SIM900 DIALOG

Общий вид TerminalTMB
Общий вид терминала (версия 3)

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

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

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

Рекатор макросов
Общий вид терминала (версия 3)

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

Если нажать клавишу «стрелка вниз» при нахождении фокуса ввода у командной строки, то появится окно выбора из списка ранее отправленных команд. Далее используются клавиши со стрелками и Enter, для закрытия окна нужно нажать «Esc».

Список последних отпрпавленных команд
Общий вид терминала (версия 3)

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

Терминал может работать с текстовыми командами и с бинарными данными. С текстовыми командами у читателя вопросов не возникнет, пример работы с бинарными последовательностями показан на рисунке ниже:

Список команд
Общий вид терминала (версия 3)

Бинарные последовательности хранятся и отправляются в текстовом виде в формате XX XX XX XX … XX[пробел]. Нужно следить за тем, чтобы впереди этой последовательности не было пробела, иначе вся строка при распарсивании разъедется.

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

К содержимому командной строки добавляется строка из дополнительного окна. Если в текстовой режиме нужно добавить бинарное число, то оно записывается в формате $XX. Если числа два, то конец строки будет выглядеть следующим образом: $XX$XX и т.п., например $0D или $0D$0A, аналогично в хвост каждой команды можно добавлять и текстовую строку, например «command$0D». В режиме HEX передаваемые байты записываются без символа $ перед XX при обязательном условии наличия одного пробела в конце последовательности в командной строке. Если в HEX режиме дополнительное поле остаётся пустым, то наличие пробела в конце последовательности необязательно.

Режим отправки команд задаётся на соответствующей панели:

Выбор режима отправки команд
Общий вид терминала (версия 3)

В ручном режиме команда отправляется по нажатию клавиши Enter или по нажатию кнопки «Отправить».
В режиме «При выборе» команда отправляется сразу же в порт, а содержимое командной строки не изменяется.
В режиме «После ответа» команда отправляется после получения ответа на предыдущую. Критерием завершения получения ответа является наличие символов перевода каретки или/и перехода на новую строку. В бинарном режиме критерием завершения передачи является превышение заданного времени ожидания следующего байта. Для запуска обмена следует начать процесс отправкой команды вручную. Данный режим удобен для отлавливания момента, когда прибор может не ответить на команду – в этом случае лог остановится и будет до последнего ждать какого-нибудь ответа.
В режиме «Период, мс» командная строка отправляется с указанным интервалом в независимости от наличия приходящих ответов. Это хороший способ завалить консоль прибора входящими запросами.
Далее можно установить флажок «Однократно при соединении». При установленном флажке отправка данных будет начинаться автоматически при восстановлении соединения с прибором в соответствии с выбранным режимом. Здесь нужно будет включить режим автоматического восстановления соединения с COM-портом. Это удобно, если используется эмулятор USB-COM сам по себе или эмулируется микроконтроллером. В этом случае после перезапуска прибора ему будет отправляться нужная команда. Удобно это и тогда, когда сотне приборов нужно отправить одну и ту же последовательность. В такой ситуации каждое лишнее движение пользователя по временнЫм затратам умножается на количество приборов, а в данном случае нужно будет только подключать и отключать кабель USB от прибора.

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

Отправка команд из файла
Общий вид терминала (версия 3)

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

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

Перейдём к верхним панелям:

Верхняя панель
Общий вид терминала (версия 3)

Здесь находится панель для работы с соединением и с окном лога. Настройки COM-порта стандартные, в нешатных ситуациях программа об этом сообщит. Если программа не нашла имеющийся порт, то его можно выбрать вручную. Такая ситуация возможна, если программа запущена от имени пользователя, а не администратора. Про флаг «AutoConnect» я уже упоминал – этот флаг включает режим автоматического подключения к порту после его повторного обнаружения в системе, если соединение было потеряно. Правее от этого флажка можно задать таймаут ожидания ответа в мс. В текстовом режиме терминал определяет коней ответа по символам перевода и возврата каретки, но если они не используются или пользователь работает с бинарными данными, то разделителем между пакетами будет временной интервал, превышающий заданное значение. Это удобно, если терминал используется для мониторинга полудуплексной линии связи, например, RS485 Без временного разделителя в окне терминала будет сплошное полотно байтов, а с таким разделителем запросы и ответы будут разнесены по разным строкам в окне лога. В идеале ещё можно будет увидеть время прихода данных с точностью до нескольких миллисекунд.

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

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

Диалоговое окно - сохранить изменения макросов
Общий вид терминала (версия 3)

С уважением, Иван Абдулхаев.

Скачать программу TetminalTMB

Скачать программу TetminalTMB v1.10

Скачать программу TetminalTMB v1.13

Изменения в версии v1.14 от 2018.11.26 по сравнению с версией v1.10:

  • добавлена отправка команды по Enter (с удалением строки) и по Ctrl+Enter (без удаления строки);
  • исправлена ошибка, приводившую к зависаниям программы при работе с некоторыми драйверами (нужно отключить AutoConnect);
  • в структуру файла хранения настроек добавлен номер выбранного списка команд;
  • добавлена кнопка включения полноэкранного режима просмотра отправляемых и принимаемых данных;
  • изменения в интерфейсе;
  • продублировано нажатие кнопки переключения режима окна лога двойным кликом по окну.

Скачать программу TetminalTMB v1.14

Программа обновлена 26.11.2018

2 комментария »

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

2 комментария на « Обновление программы терминала — Terminal TMB»

  1. Дмитрий пишет 30.11.2018 в 20:09 #

    Что то версия 1.14 подглючивает
    Подключил переходник на CP2102 замкнул RX TX
    При отправке в ASCII всё нормально приходит
    А в режиме HEX если написать вот так вместе приходит:
    [ 18:07:32:068 > ] AABBCCDDEEFF
    [ 18:07:32:092 < ] AA BC DD EF

  2. Иван Абдулхаев пишет 03.12.2018 в 14:17 #

    Это не глюк. Бинарные числа нужно записывать через пробел или через какой-нибудь разделитель. Программа считывает символы 1-2, 3 пропускает, 4-5, 6 пропускает. Выводит HEX-числа через пробел. Т.е. в Вашем случае нужно отправить строку AA BB CC DD EE FF или AA|BB|CC|DD|EE|FF, или AA»BB»CC»DD»EE»FF. Каждый третий символ программа воспринимает как разделитель и игнорирует.

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

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