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

Терминал моей мечты (COM-порт)

Сб янв 25, 2020 19:18:15

Народ, я тут продолжаю изобретать велосипед... то есть терминал для СОМ-порта.
putty - хорошо, но слишком скромно
Termail by Br@y++ - лучше, но не совсем удобно
CoolTerm - только по названию крутой терминал, а так ничего необычного.

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

Короче, интересует ли кого проблема выбора терминальной программы, чтобы изучать, как работают всякие изделия, а так же управлять на тапе разработки своими поделками по последовательному порту из-под Windows?

На сегодня я сделал следующее (только ключевые особенности, которых либо нет в других прогах, либо они не так удобно с моей т.з. реализованы):
- автосканирование COM-портов: при подключении USB-переходников они автоматом появляются в программе, и исчезают при их отключении;
- поддержка неограниченного количества портов (в отличие от Termail by Br@y++), причем не обязательно с названиями COM* (например, программа com0com может создавать виртуальные порты с любыми именами);
- выделение разным цветом того, что принято и того, что отправено;
- возможность при приеме текста видеть спецсимволы в "удобном" формате;
- наличие "истории" отправленного текста, чтобы повторно отправлять его в один клик мышкой (не нужно отдельно "программировать" кнопки как в Termail by Br@y++, да и глубина истории до 100 сообщений);
- гибкие настройки внешнего вида: в программе предусмотрено 9 разных окон с информацией разного назначения, и все они могут быть в любом порядке показаны или скрыты, сохраняя функцинальность. например, если вам нравится Termail by Br@y++ за то, что все настройки видны сразу, точно так же можно сделать и в моей программе, но лучше: у меня можно расположить окно настроек в любом месте интерфейса, хоть сверху, хоть сбоку, хоть снизу... хоть вообще выделить в плавающее окно и передвинуть на второй монитор (если он у вас есть);
- система фильтров входящих данных. имхо, такого нет ни в одной программе! входной поток вы можете пропустить последовательно через любое количество расположенных в любом порядке фильтров с гибкими настройками, чтобы увидеть наилучшим образом входняе данные. например, вы можете сразу форматрировать их в "пакеты" - вместо безликих байтов 00 01 02 03 04 05 06 вы можете сразу видеть что-то типа Адрес=0100, данные=020304, CRC=0605. можете запустить фильтр, который будет ждать определенную последовательность байт, и только приняв её, начнет показывать данные... можно разбивать данные на пакеты по маске, или на строки, или показывать только строки по определенному условию... ну и много чего еще;
- окно форматированного ввода данных. если вы работаете с протоколом WAKE или MQTT, вам наверняка будет удобнее вводить не просто байты данных, а осмсленные числа, причем делать это не в строке ввода, а в диалоге, где каждый элемент протокла в отдельном окошке... так вот, у меня это сделано так, что можно работать с любыми пакетами по вашему усмотрению. многие терминальные программы содержат подобные окошки под 1-2 протокола, а я сделал так, что вы сами за 30 секунд модифицируете это окно под собственный протокол.

как бы это главное, много мелочей... вроде Drag'n'Drop, чего мало где встретишь...

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

Несколько скриншотов чисто для затравки:
1. Интерфейс может быть таким:
Изображение
а может быть и таким (минималистичный вариант):
Изображение
при этом функционал обоих вариантов одинаков, доступ к любой спрятанной области мгновенный.
2. можно видеть и отправлять в HEX-е:
Изображение
3. можно видеть коды спецсимволов прямо в текстовом окне:
Изображение
4. а можно задать фильтр, и видеть вместо '\r' даже вот такое:
Изображение

Добавлено after 2 minutes 12 seconds:
5. а вот так (пока бета-версия) выглядит окно, где можно настроить по-своему ввод данных (в верхней части строка-формат, задающая формат пакета):
Изображение
вводите свой формат - получаете свои поля ввода данных в любом из форматов: десятичном (со знаком и без), шестнадцатеричном, восьмеричном, двоичном или текстовом. пока не реализовано, но планируется поле авто-CRC по наиболее распространенным полиномам (CRC8, CRC16 и CRC32).

Добавлено after 1 minute 31 second:
да, на скриншотах putty использовалась для отправки текста в мою программу, а не наоборот.
Вложения
6.png
(19.11 KiB) Скачиваний: 3725
5.png
(47.22 KiB) Скачиваний: 3781
4.png
(33.19 KiB) Скачиваний: 3736
3.png
(35.9 KiB) Скачиваний: 3783
2.png
(22.99 KiB) Скачиваний: 3748
1.png
(51.47 KiB) Скачиваний: 3763

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 10:40:30

Могу рассказать что есть в терминалке, которой пользуюсь:
— все настройки в ini-файле;
— можно добавлять кнопки, по нажатию на которые будут посылаться какие-то данные;
— посылаемые данные могут запрашиваться у пользователя;
— выделение хидера и/или трейлера в пришедших данных, форматирование данных по шаблону.

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 11:07:37

Gudd-Head писал(а):что есть в терминалке, которой пользуюсь
как можно ознакомиться с нею, чтобы переплюнуть? ;)
Gudd-Head писал(а):все настройки в ini-файле;
даже странно... а это играет какую-то роль? у меня в XML...
Gudd-Head писал(а):можно добавлять кнопки
у меня они добавляются автоматом - как пользователь нажал Enter, так кнопочка самодобавилась.
Gudd-Head писал(а):посылаемые данные могут запрашиваться у пользователя
см.выше - есть, причем в желаемом пользователем виде
Gudd-Head писал(а):выделение хидера и/или трейлера в пришедших данных, форматирование данных по шаблону
см.выше - есть, и не только это.

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 13:02:13

Что вы за фигню придумываете? В простейшем случае все команды тупо отправляются при помощи echo "команда" > /dev/ttyUSB0, а ответ читается при помощи cat /dev/ttyUSB0. Если tee натравить, то будет еще и дамп в файл писать. Потом grep'ом, sed'ом и awk легко из этого нужную информацию извлечь.
А для интерактивной работы этих терминалов вообще 100500 штук. Начиная со screen-сессии...

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 13:09:18

Eddy_Em писал(а):Что вы за фигню придумываете?
назовите известный вам терминал для Windows, который бы мог делать вышеописанное.

приведите пример (конкретные команды в вашей любимой программе) для того, чтобы видеть приходящие из последовательного порта байты в текстовом виде, причем если коды приходящих байтов "непечатные" (например, \n), то и выводились бы они ЖИРНЫМ КРАСНЫМ цветом в виде их "текстовго обозначения", как принято в С/С++. чтобы пользователь мог бы послать в терминал строку текста, в середине которой был бы код символа 0x02.

если можно, прошу критиковать конкретно, объективно и беспристрастно.

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 13:13:31

для Windows

Я на извращенца похож что ли - для работы игровые приставки использовать?

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 14:03:02

Eddy_Em писал(а):Я на извращенца похож что ли
перечитайте еще раз первое сообщение и решите для себя - стоит ли вам участвовать в этой теме?

что за привычка со своим уставом во все монастыри лезть?!

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 14:05:21

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

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

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 14:33:41

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

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

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

Re: Терминал моей мечты (COM-порт)

Вс янв 26, 2020 20:31:20

Интересная тема, буду наблюдать. :)

Re: Терминал моей мечты (COM-порт)

Пн янв 27, 2020 16:27:08

А, протоколы связи типа Modbus RTU, DCON мастер, слейв, или типа того будут?

Re: Терминал моей мечты (COM-порт)

Пн янв 27, 2020 16:40:25

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

Re: Терминал моей мечты (COM-порт)

Пн янв 27, 2020 17:52:46

Очень порадовал тот факт, что всё подписано на родном языке (по-русски)… если данная концепция не поменяется – буду очень рад. :beer:

Re: Терминал моей мечты (COM-порт)

Пн янв 27, 2020 18:10:18

Я, очень рад. Буду ждать.

Re: Терминал моей мечты (COM-порт)

Пн янв 27, 2020 18:50:11

на русском языке - русификация (и хелп). язк определяется по системным установкам ОС: если у вас системный язык не русский, то интерфейс будет английским. но можно сделать перевод :)

Re: Терминал моей мечты (COM-порт)

Пн янв 27, 2020 19:15:30

ОС у меня русифицирована. Другими не пользуюсь по незнанию забугорного… заметил тенденцию у программистов – всё чаще и чаще (по сравнению с былыми временами), все надписи в своих программах пишут на русском… Вам без разницы, а мне приятно! :)

Re: Терминал моей мечты (COM-порт)

Пн янв 27, 2020 19:31:49

2 раза читал и так и не вьхал о чем тут... если мало билофского криврно гипертерминала есть putty..

Re: Терминал моей мечты (COM-порт)

Пн янв 27, 2020 23:07:36

2 раза читал и так и не вьхал о чем тут... если мало билофского криврно гипертерминала есть putty..

я ваши сообщения читал 100500 раз - и ни разу не понял, что вы пишите. не всем дано...

:)))

Добавлено after 1 hour 25 minutes 14 seconds:
выкладываю первую бета-версию моего терминала: https://cloud.mail.ru/public/Audn%2F95Vd3Xz1j
скачивать можно только один экзешник, или все подряд, сохраня структуру вложенности папок.

сам по себе экзешник будет работать на английском, функций минимум, но не сильно мало.
в папке Locale - русификация терминала.
в папке P l u g i n s - дополнительные модули, расширяющие возможности. у плагинов своя русификация внутри их папки, там же и справочные файлы к ним. плагины можно удалить в любой момент (когда программа не запущена, само собой) - как все, так и частями: в программе просто пропадет ряд функций. потом можно снова добавить.

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

программа сохраняет свои настройки в папке профиля пользователя AppData\Local\FTerm - это чтобы вручную вычистить остатки после экспериментов.

буду рад, если кто-нибудь протестирует и сообщит, что так, что не так, что надо улучшать, что добавлять и т.п. как по мне - так все пучком, а как со стороны...

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

Re: Терминал моей мечты (COM-порт)

Чт янв 30, 2020 23:00:34

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

Добавлено after 46 minutes 45 seconds:
Соврал: пока не завершена... обнаружил, что есть еще баги... что ж, буду отлавливать...

Re: Терминал моей мечты (COM-порт)

Пт янв 31, 2020 09:57:17

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

Добавлено after 2 minutes 11 seconds:
кстати, вот тут альтернативная версия описания :)))
Ответить