Обновление программы терминала — 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

Изменения в версии v1.15 от 2019.01.29:

  • Изменил язык интерфейса на английский (гугл переводчиком);
  • Сделал автосохранение содержимого дополнительного поля строки (конец строки) для каждого списка команд.

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

Изменения в версии v1.16 от 2019.02.04:

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

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

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

14 комментариев »

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

14 комментариев на « Обновление программы терминала — 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. Каждый третий символ программа воспринимает как разделитель и игнорирует.

  3. Сергей пишет 25.01.2019 в 12:32 #

    Хорошая программа, спасибо!
    Даже немного «донатнул», так сказать на последующую разработку.
    Давно искал более-менее адекватную замену Comport Toolkit.
    Terminal v1.93b как-то не прижился у меня. А у Comport’a ценник не адекватный ИМХО.
    Из ‘хотелок’, чтобы хотелось видеть в обновлениях:
    1. Иногда хочется, одновременно видеть в получении HEX строку и ASCII. (у вас же, только по отдельности)
    2. Перенос строки в получении делать по выбору. например только 0А, или только 0D, или только по времени, по аналогии с Comport Toolkit, т.е. выбирать галками критерий переноса.
    3. В файл команд добавить оператор задержки между строками(командами). Поскольку иногда необходимо передавать строки с разными интервалами задержки. У вас же все интервалы одинаковые.
    4. В макросы добавить возможность выбора дополнять /r/n или нет. Пока при выборе передачи ASCII, сразу добавляется 0D, а это не всегда нужно, приходится помнить для каждого устройства нужен перенос или нет.
    5. А так же, штамп времени в получении ставить для каждой новой строки.
    6. Ну и возможность работы с комами выше com9.

    А так вполне хорошая программа, спасибо за труд !!!

  4. Иван Абдулхаев пишет 25.01.2019 в 16:06 #

    Спасибо за отзыв и за перечисленную приятность!

    1. Одновременное отображение HEX и ASCII возможно сделать — это вопрос наличия свободного времени.
    2. Критерий переноса тоже можно добавить. Сейчас перенос по таймауту имеется в HEX-режиме.
    3. Можно что-нибудь придумать на все случаи, у меня не было необходимости отправлять через разные интервалы.
    4. Тут можно наделать макросы в HEX-виде, но и ответ будет приходить в HEX.
    5. Штамп времени добавляется всякий раз, когда читается приёмный буфер, а в нём могут накопиться несколько ответов, поэтому не всегда можно добавить штамп к каждому ответу. Проще будет, если сам прибор к ответам будет приклеивать время.
    6. У меня старинная версия Delphi седого 2002 года, в которой только до ком9 порты имеются.

    Как дойдут руки до следующей версии, так через автора сайта выложу тут.

  5. Сергей пишет 25.01.2019 в 23:46 #

    Я так же лет 7 назад писал терминал для работы с конкретным прибором, на Delphi 7 (2002г), используя компонент BComPort. Пришлось Pascal со школы вспоминать.
    Вот думал опять вспоминать все и писать универсальный терминал, но увидел твою программу, которая меня в принципе, устроила.
    А вы случайно не этот же компонент использовали ?

  6. Иван Абдулхаев пишет 26.01.2019 в 16:33 #

    Данный компонент не использовал, пользовался только обычными функциями работы с COM-портом ( http://www.delphimaster.ru/articles/comport2/ )
    Начинал писать терминал для работы с GSM-модулем, затем всё больше и больше требовалось универсальности. Если дойдут руки, то сделаю в терминале возможность просмотра обмена по виртуальному COM-порту (монитор COM-порта). Бесплатных программ с данной функцией в сети я не нашёл. Это значит, что нужно писать самому 🙂

  7. Иван Абдулхаев пишет 26.01.2019 в 21:25 #

    «4. В макросы добавить возможность выбора дополнять /r/n или нет. Пока при выборе передачи ASCII, сразу добавляется 0D, а это не всегда нужно, приходится помнить для каждого устройства нужен перенос или нет. »

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

  8. Эдуард пишет 11.10.2019 в 01:53 #

    Доброго времени суток!
    Спасибо за труд, и возможность другим пользоваться вашей программой!
    Я не спец, но кое что понимаю, и паяльник в руках держать умею).
    Пришло с Али PL2303 PL2303HX USB к UART
    Заказал для эксперимента по прошивке приставки.
    Но, что первый адаптер, что второй не получается послать сообщение для проверки на само себя.
    rx с tx перемкнул.
    Драйвер установлен, в диспетчере нет вопросов.
    В вашей проге запущенной от имени администратора видно что вроде бы сом порт подключён-найден сом1
    Но в последней версии 1,16 вашей проги мужик начинает ругаться, Открой порт!
    Что посоветуете?

  9. Эдуард пишет 11.10.2019 в 01:54 #

    Windows 10 64bit

  10. Иван Абдулхаев пишет 11.10.2019 в 12:47 #

    В диспетчере выбери COM-порт, далее на правую кнопку мышки, в меню выбери «Отключить» и затем обратно «Включить». Обычно помогает. Если не получится, то в свойствах COM-порта выбери «Параметры», затем «Дополнительно…» и поменяй номер порта на COM1..COM9. Винда может поругать, но не обращай внимания. Другие терминалы подключаются к порту? Стабильность работы может даже зависеть от качества кабеля и питания. Переходник USB-COM за 300 рублёв будет работать явно хуже переходника за 3000.

  11. Эдуард пишет 11.10.2019 в 22:49 #

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

  12. Иван Абдулхаев пишет 14.10.2019 в 20:41 #

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

  13. Эдуард пишет 16.10.2019 в 09:52 #

    В том то и дело что комп новый!
    NUC 6i3 проц 6100

  14. Эдуард пишет 16.10.2019 в 09:56 #

    десктоп просто сейчас разобран(, по причине обновления материнки и проца. С 775 asus P5QL-P q9400 и 8gb на 1151 пока g4400 8gb (просто валялся у меня).

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

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