Кстати, нажимать можно как Enter, так и Ctrl+Enter. В первом случае строка консоли очистится, во втором нет, что даёт возможность многократно отправить команду.
Да, все настройки сохраняются автоматически при изменении. Сделано так, чтобы не потерять изменения, если терминал по какой-либо причине зависнет. Например, если были отправлены байты в порт, которого уже нет (кто-то ногой задел кабель и выдернул USB-COM). Также может зависнуть в случае отправки пакета в виртуальную пару com0com, если на приёмном конце соединения нет. Эти ситуации поправимы, но слишком редкие, чтобы допиливать код.
По поводу экрана можно ещё покопаться. Полагаю, что координаты запоминаются относительно второго экрана, а при повторном запуске терминал открывается на первом экране в том положении, в котором он был на втором экране. На досуге покопаюсь.
Добавил данный алгоритм. При закрытии главной формы сохраняется текущая позиция. При запуске форма располагается в ранее сохранённой позиции. Учтена ситуация, когда окно было частично задвинуто за область видимости. В этом случае оно будет оттуда выдвинуто так, чтобы было полностью в области видимости. Также сделал запоминание статуса окна: если при закрытии программы окно было развёрнуто на весь экран, то при следующем старте оно также само автоматически развернётся на весь экран. Интересно узнать, как это будет работать на втором экране. Разворот будет на оба экрана или только в пределах второго? Пока нет возможности проверить на домашнем компе.
Также для дополнительных форм изменил стартовое положение с позиции относительно экрана на позицию относительно главной формы.
TerminalTMB v6.052b можно скачать на том же яндекс-диске.
По поводу отключения отображения непечатаемых символов в конце статьи недавно добавил скрин. Add menu...-> LOG -> нижний чекбокс.
Непечатаемые символы отключаются только для режима ASCII. В этом случае данные символы в логе и в текстовом файле лога никак не отображаются, но учитываются во всей остальной логике, т.е. при подсчёте байтов и при разделении строк в процессе вывода лога. Для остальных режимов (DEC, HEX и CUSTOM), данная настройка ничего не меняет.
Одной из идей терминала было исключение необходимости плодить папки с настройками под каждый конкретный прибор. Каждый список команд (макросов) в общем случае - это работа с отдельным прибором со своими настройками списков команд, режимов, разделителей, горячих клавиш, и джойстиков.
Все настройки сохраняются автоматически. Для каждого прибора можно задать свои настройки (режим отправки/чтения, условия разделения строк, список макросов-команд, шаблон контрольной суммы, последняя отправленная команда) и они будут сохранены. Настройки будут переключаться вместе со списками команд-макросов. Нет никакой необходимости что-то редактировать или запускать несколько терминалов в зависимости от прибора.
Более того, есть возможность одним терминалом мониторить работу сразу нескольких приборов, при этом все данные разными цветами можно выводить в окно лога, писать в файл и обрабатывать парсером.
Перевод строки настраивается отдельно. Add menu... -> Line separator. Далее можно настроить любое условие для завершения строки и перехода на новую в логе. Строки можно разделять по числу байт, по паузе между байтами и/или переходить на новую строку после заданной последовательности из 1..4 байт. Данная универсальность нужна больше для работы с бинарными данными, но и для текстовых строк настройка находится здесь же.
Нужно включить режим чтения CUSTOM, для которого можно настроить своё отображение для каждого принимаемого байта. В статье это описано. В руководстве на яндекс-диске это предпоследняя страница.
Сигнал DTR не приходилось использовать, поэтому не было необходимости его как-то учитывать в программе. При организации сниффера используется виртуальная пара com0com, в которой сигнал DTR пропадает. В данной статье описание алгоритма настройки сниффера порта больше подходит для работы с виртуальными портами через USB, а не с железными. Не должно быть никаких проблем при считывании лога виртуального порта, который эмулируется с помощью USB. Обмен по железному порту можно посмотреть, если используются только TX и RX. В крайнем случае можно и проводками подпаялиться к TTL-выводам, чтобы считать лог. На досуге поразбираюсь с включением контроля сигнала DTR.
При первом запуске терминал по умолчанию настроен для работы с обычной текстовой строкой. Далее уже можно настроить всё под свою задачу. Естественно, можно под себя что-то написать на каком-нибудь языке, но это потребует времени на отладку и тестирование. Например, если нужно распарсить пакет и сохранить десяток графиков в файл, то в этом терминале нужно поставить несколько галочек и нажать пару кнопок за пару минут, а написание отдельной программы потребует явно намного больше времени.
Задать пределы шкалы слева (Min-Max) или в режиме осциллографа поставить чекбокс AutoScale.
Для возможности вывода дробной части на графопостроитель в версии 7.124 добавил возможность ввода множителя для чисел типа float.
Графопостроитель может работать только с целой частью числа.
Кстати, нажимать можно как Enter, так и Ctrl+Enter. В первом случае строка консоли очистится, во втором нет, что даёт возможность многократно отправить команду.
Естественно. Нужно выбрать данный режим отправки.
В версии 6.055b добавлена настройка автоматического сохранения положения форму на момент закрытия
В версии 6.053b доработан алгоритм сохранения положения формы с учётом возможной работы с несколькими экранами.
Да, все настройки сохраняются автоматически при изменении. Сделано так, чтобы не потерять изменения, если терминал по какой-либо причине зависнет. Например, если были отправлены байты в порт, которого уже нет (кто-то ногой задел кабель и выдернул USB-COM). Также может зависнуть в случае отправки пакета в виртуальную пару com0com, если на приёмном конце соединения нет. Эти ситуации поправимы, но слишком редкие, чтобы допиливать код.
По поводу экрана можно ещё покопаться. Полагаю, что координаты запоминаются относительно второго экрана, а при повторном запуске терминал открывается на первом экране в том положении, в котором он был на втором экране. На досуге покопаюсь.
Добавил данный алгоритм. При закрытии главной формы сохраняется текущая позиция. При запуске форма располагается в ранее сохранённой позиции. Учтена ситуация, когда окно было частично задвинуто за область видимости. В этом случае оно будет оттуда выдвинуто так, чтобы было полностью в области видимости. Также сделал запоминание статуса окна: если при закрытии программы окно было развёрнуто на весь экран, то при следующем старте оно также само автоматически развернётся на весь экран. Интересно узнать, как это будет работать на втором экране. Разворот будет на оба экрана или только в пределах второго? Пока нет возможности проверить на домашнем компе.
Также для дополнительных форм изменил стартовое положение с позиции относительно экрана на позицию относительно главной формы.
TerminalTMB v6.052b можно скачать на том же яндекс-диске.
По поводу отключения отображения непечатаемых символов в конце статьи недавно добавил скрин. Add menu...-> LOG -> нижний чекбокс.
Непечатаемые символы отключаются только для режима ASCII. В этом случае данные символы в логе и в текстовом файле лога никак не отображаются, но учитываются во всей остальной логике, т.е. при подсчёте байтов и при разделении строк в процессе вывода лога. Для остальных режимов (DEC, HEX и CUSTOM), данная настройка ничего не меняет.
Одной из идей терминала было исключение необходимости плодить папки с настройками под каждый конкретный прибор. Каждый список команд (макросов) в общем случае - это работа с отдельным прибором со своими настройками списков команд, режимов, разделителей, горячих клавиш, и джойстиков.
Все настройки сохраняются автоматически. Для каждого прибора можно задать свои настройки (режим отправки/чтения, условия разделения строк, список макросов-команд, шаблон контрольной суммы, последняя отправленная команда) и они будут сохранены. Настройки будут переключаться вместе со списками команд-макросов. Нет никакой необходимости что-то редактировать или запускать несколько терминалов в зависимости от прибора.
Более того, есть возможность одним терминалом мониторить работу сразу нескольких приборов, при этом все данные разными цветами можно выводить в окно лога, писать в файл и обрабатывать парсером.
В версии 6.047b добавлена возможность отключения вывода непечатаемых символов для режима ASCII как для отправляемых, так и для принимаемых пакетов.
^
Перевод строки настраивается отдельно. Add menu... -> Line separator. Далее можно настроить любое условие для завершения строки и перехода на новую в логе.
Строки можно разделять по числу байт, по паузе между байтами и/или переходить на новую строку после заданной последовательности из 1..4 байт. Данная универсальность нужна больше для работы с бинарными данными, но и для текстовых строк настройка находится здесь же.
Нужно включить режим чтения CUSTOM, для которого можно настроить своё отображение для каждого принимаемого байта. В статье это описано. В руководстве на яндекс-диске это предпоследняя страница.
Покопался в данном терминале. Хотел найти парсер и графопостроитель. Этот функционал в нём есть?
Сигнал DTR не приходилось использовать, поэтому не было необходимости его как-то учитывать в программе. При организации сниффера используется виртуальная пара com0com, в которой сигнал DTR пропадает. В данной статье описание алгоритма настройки сниффера порта больше подходит для работы с виртуальными портами через USB, а не с железными. Не должно быть никаких проблем при считывании лога виртуального порта, который эмулируется с помощью USB. Обмен по железному порту можно посмотреть, если используются только TX и RX. В крайнем случае можно и проводками подпаялиться к TTL-выводам, чтобы считать лог. На досуге поразбираюсь с включением контроля сигнала DTR.
Скорость можно вводить вручную, а способ распространения использовал дедовский. По этому вопросу пока не думал.
Как сделать правильно?
Спасибо. Не подумал. Добавлю данное бла-бла-бла.
При первом запуске терминал по умолчанию настроен для работы с обычной текстовой строкой. Далее уже можно настроить всё под свою задачу. Естественно, можно под себя что-то написать на каком-нибудь языке, но это потребует времени на отладку и тестирование. Например, если нужно распарсить пакет и сохранить десяток графиков в файл, то в этом терминале нужно поставить несколько галочек и нажать пару кнопок за пару минут, а написание отдельной программы потребует явно намного больше времени.
Какая лицензия? Всё бесплатно на чистом энтузиазме.
По поводу подсветки байтов можно и доработать, но зелёный цвет на белом фоне мне больше нравится.