Serial Monitor Pro
- Войдите на сайт для отправки комментариев
Чт, 13/10/2016 - 17:34

Привет всем. Сегодня я хочу рассказать вам о моем личном проекте. Проект этот необычен для данного раздела форума, так как это не моргающая, ползающая или летающая штуковина :), а программа.
Программа эта называется Serial Monitor Pro или просто Монитор Порта Про.
Как вы догадались это альтернатива штатному монитору порта входящему в состав Arduino IDE.
По началу, программка была написана для себя любимого, но после того как я показал ее друзьям, и услышав хорошие отзывы, решил поделиться ей со всем миром.
И так, с вступлением мы закончили, теперь расскажу вам о ее преимуществах, и чем же она лучше штатной.
Основная фишка это поддержка различных языков. Т.е. теперь отправляя строки из ардуино при помощи функций Serial.print и Serial.println в мониторе порта появиться не какие-то кракозябры, а тот текст, который вы и хотели видеть, программка поддерживает кучу различных языков, от Русского и Украинского, до Немецкого и Итальянского.
Serial.println("Привет Мир!");
И мы увидим Привет Мир! :) без каких либо библиотек и заморочек.
Следующая возможность, это выводить текст в одну или несколько строк. На многих форумах я встречал такие вопросы и собственно вот оно решение.
Для вывода текста в одну или несколько строк, достаточно воспользоваться командой @clear@ которая очистит содержимое окна и выведет текст с начала.
void loop() { delay(500); Serial.println("@clear@"); Serial.println("Привет Мир!"); Serial.println(random()); }
В данном случае всегда будет отображаться только две строки, первая – «Привет мир!», а вторая это случайное число постоянно меняющееся.
Ну и оставшееся это возможность изменить шрифт, его размер и цвет. А так же сохранить все, что получили от ардуинки в файл.
На этом вроде все, пишите свои комментарии, оставляйте отзывы. Если программа будет пользоваться спросом, будет соответственно стимул добавлять новые возможности и фишки.
Пишите чего вам не хватает в штатном мониторе порта, и возможно это уже появиться в следующей версии. На будущее хочу сообщить, что в следующей версии планируется вывод состояния аналоговых или цифровых портов в виде графиков и диаграмм.
Подробнее вы можете прочесть на странице для скачивания.
На сколько я помню, в аск-2 кодах есть команда типа "новая страница" или даже "очистить экран", которая делает то же самое.
Просто надо копнуть в истоки....
Гипертерминал её должен выполнять.
А вот сериал монитор....наверно тоже.
Ну незнаю, должна ли программа эметировать терминал. но ок - пороюсь.
Кстати уже готов перехват прошивки ардуинки в Arduino IDE, тем самым программа больше не мешает прошивать ардуинку если общаеться с ней по ком порту в это время, ждите новой версии.
видел похожую поделку - плагин к Chrome- .прикольная
Это называется ESC-последовательности. Обычно терминалы их поддерживают, например, PuTTY или любой Linux терминал. Эти ESC-команды позволяют управлять выводом на терминал со стороны клиента, упрощая многие операции.
Про кракозябры не понял. Пишешь в IDE кириллицей и в мониторе - тоже кириллица. Или в мире виндоус как-то иначе? Винда вроде давно на юникоде, или я что-то путаю?
Вот вам пример в картинках.
Скетч
Arduino IDE
Serial Monitor Pro
Афигеть! А я и не знал, что есть такая проблема. Вот что линух животворящий делает!
=======
Просите уж меня! Это я шутил. Знаю я про косяки винды... Просто такой повод поиздеваться на видоус пропадал.
=======
Хотя вы мне идею подали: а зачем отдельная прога?Исходник IDE открыт, я не вижу трудности добавить перекодировку прямо туда.... Еще раз простите за шутку.
Это не проблема винды и она здесь обсалютно не при чем. Arduino IDE написана на Java, и прекрасно понимает Юникод.
Проблема с кодировкой искуственная, либо программистам лень этим заниматься, либо это сделанно умышленно. Во всяком случае это пару строк кода, в Delphi на котором написана данная програма и того 1 строка.
Городить свою альтернативную Arduino IDE просто с чуть навороченым монитором порта, дело обсалютно бесмысленное и бесполезное.
Я потратил на програмку пару часов, и пару часов уже после выхода. Разбираться в чужом коде, дорабатывать его, и тд и тп, куда геморойней.
есть такая проблема - многие ползатели не знают, передают они в монитор char или что иное.
Ну незнаю, должна ли программа эметировать терминал. но ок - пороюсь.
по крайней мере, не должна плодить сущности.
по крайней мере, не должна плодить сущности.
А остальные сущности Клапауция с этим согласны?
по крайней мере, не должна плодить сущности.
перенаправляю этот вопрос тупню - админу форума, неумные действия которого привели к тому, что Клапауций стал неубиваемым брендом и франшизой.
genaonyx
Добавь в строку статуса чекбокс "DTR on/off" или выпадающий список, как для выбора скорости или порта, чтобы при подключении программы к порту ардуина не ресетилась. Хорошо бы запоминать выбранные состояния и размер/положение окна при выходе.
Вот это здорово! С работы вернулся, комп разогрел, а тут уже мои пожелания воплощены в реальном проекте!
Попробовал. Работает.
1) Однако перекдючение DTR on/off на активном COM-порту не срабатывает. Ардуино должна перегрузиться при DTR On. Этот переключатель работает только после отключения/включения порта.
2) Новая кнопка "Программно перезагрузить" активирует порт с включённым DTR и, после перезагорузки ардуино, порт отключает. Пусть вернёт в состояние "до её нажатия". На мой взгляд она даже лишняя. Достаточно дёрнуть DTR (см. пункт 1).
3) Нашёл ещё одно маленькое неудобство. Данные COM-порт отправляются только по нажатию мышом кнопки "Отправить". Хочется, что бы по Enter тоже отправка срабатывала, как в терминале Arduino IDE.
Да, я до всяких мелочей люблю докапываться, не судите строго.
сделай народу режим "game mode" - это когда символы отправляются немедленно, а не после нажатия кнопки "отправить"
*удобно рулить дуино клавишами, спец клавишами, пилить консоли на стороне контроллера, интерактивные игрушки.
1. Монитор порта - средство отладки, зачем там что-либо кроме латинницы? Если хочется "плюшек" - есть Processing.
2. Зачем колхоз с @clear@, когда есть стандартизованные Esc-последовательности?
3. Из полезного вижу только запись в файл.
4. Из идей, что иногда было бы полезно: два окна, в одно из которых выдается, как обычно, текст, а в другое - то же самое, но HEX. Режимы: текстовое окно, гексовое окно, оба окна.
5. Соответственно, режим (или дополнительное поле ввода), в котором обратно отсылается не текст, а бинарные коды. Т.е. вводишь, скажем, "64", а в порт идет число 0x40.
6. Ну и хорошая идея Калапуция о режиме передачи без ожидания Enter.
Господа, встретился вот такой терминал https://sites.google.com/site/terminalbpp/. Вдруг можно что-то почерпнуть для собственного проекта.
здрасти, решил протестить,возникла проблемка, он как будто пропускает или зависает не знаю как обьяснить,загрузил блинк, этот скетч каждый тик светика прибавляет по 1000 к переменной , но как становится переменная больше 10000 то начинаются пропуски в мониторе было 10000 он пропустил несколько тиков потом сразу 13000 пришло
Ок, гляну
Привет всем, извените что давно небыло новостей. Был занят другим проектом.
И так, вчера выпустил новую версию 1.4.
Вот что нового:
- Исправлены проблемы с кодировкой в следствии чего некоторые данные пропадали (спасибо Алексею и Xumuk).
- Добавлены новые кодировки на выбор: ANSI, ASCII, Unicode, UTF7, UTF8.
- Менять DTR и RTS можно теперь в любое время.
- Нет необходимости теперь нажимать кнопку "Отправить". Можно отправить данные нажатием клавишей Enter.
- Редактор заменен на другой (на будущее).
- Программа запоминает при закрытии теперь не только свои размеры, но и состояние.
- Добавлена команда "\e[J" для поклонников консолей. Пример: Serial.print("\e[J"); // Аналог команды @clear@
- Добавлены задатки и для других консольных команд, которые будут пополняться с новыми версиями.
Xumuk в новой версии ваша проблема решена.
ent в новой версии все ваши замечания внесены.
Клапауций 232 ужа начал делать предложенный вами "игровой режим".
http://arduino.on.kg/serialMonitor Скачиваем и оставляем свои посты как тут так и комментарии на странице программы.
Клапауций 232 ужа начал делать предложенный вами "игровой режим".
ега не нужно делать - ега нужно разрешить.
он у тебя уже готов - просто разреши отправку введённого в монитор символа немедленно в порт.
У меня уже реализован глобальный перехват сообщений, с помощью которого я хотел реализовать и перехват нажатия ВСЕХ клавишь, вплоть до служебных. Тыкаете на кнопку, открываеться спец форма и запускаеться перехват. + на форме хотел сделать эдакий рисованый джойстик, таскание мышью которого отправляла координаты х и y. но пока непонятно в каком формате будет удобно эти данные получать. Но в целом да непроблема, все есть, если вам и другим мое придложение не устраивает, я выпущу новую версию.
если вам и другим мое придложение не устраивает, я выпущу новую версию.
лично мне не нужно - я юзаю Терминал для DigiUSB, просто делюсь опытом реализации функций, которые почему-то не реализованы в существующих проектах.
кусок исходника моего терминала, что бы понять, что ничего не нужно делать - достаточно принять скан-код из клавиатуры и немедленно его отправить, куда нужно.
естственно, то чем ты сканишь клаву должно реагировать не только на коды ascii, но и на всё, что тебе генерит клава. по крайней мере, в библиотеке PDCurses, которая используется в моём проекте - это настраивается.
Позанудствую немного.
Надо запретить "бесконечное" уменьшение окна программы. Элементы управления должны быть видны всегда, а не наезжать друг на друга и не скрываться за пределами окна.
Позанудствую немного.
Надо запретить "бесконечное" уменьшение окна программы. Элементы управления должны быть видны всегда, а не наезжать друг на друга и не скрываться за пределами окна.
надеюсь, размер окна ограничен размером одного пикселя.
надеюсь, размер окна ограничен размером одного пикселя.
Иначе бы программа калапсировала и форматировала винт
Результат:
Доброго времени суток, не могли бы вы сделать/подсказать Serial монитор с функцией очистки для Андроид?
Зачем Вы спрашиваете это тут, на форуме по Ардуино? Вам надо на форум разработчиков под Андроид, быстрее результат будет.
Друзья, вышла новая версия программы (1.6). Программа была почти полностью переписана с нуля. Изменился так же и подход к ее интерфейсу. Теперь вы можете убрать ненужные вам настройки с экрана, или добавить их. Так же появился файл конфигурации в котором можно задать все настройки программы.
Установил сегодня, нормально работает, спасибо.
Есть вопросы:
У игровом режиме, в монитор порта команда приходит в момент отпускания клавиши.
Т.е. нажимаю клавишу - ничего не происходит, отпускаю - появляется команда.
Это настраивается как-то? Иначе, например радиоуправление где ноут пультом работает сделать не получится.
И вот по этому документы можете дать разъяснения? Что чем рулит.
Раз уж вытащили на свет божий такую древнюю тему то ...
Это не проблема винды и она здесь обсалютно не при чем. Arduino IDE написана на Java, и прекрасно понимает Юникод.
Проблема с кодировкой искуственная, либо программистам лень этим заниматься, либо это сделанно умышленно. Во всяком случае это пару строк кода, в Delphi на котором написана данная програма и того 1 строка.
1. Проблема как раз именно винды! Потому что винда для кодирования UNICODE использует UTF-16, тогда как все нормальрные люди для этого используют UTF-8.
2. Но это только цветочки ... потому что ягодки будут в том, что ваша винда отображает только кодовую страницу CP-1251 (если вы её вречную не поменяете), или в CP-866, если вы свой сериальный порт станете отображать в терминал.
Далее...
3. Никто! Никто в мире, ни одна операционная система, язык программирования и приложение не может "прекрасно понимать Юникод", потому что UNICODE - это чисто теоретическая таблица кодов для всех в природе символов. А "понимать" программный код может только и исключительно выбранный для него способ кодирования UNICODE, из которых приняты и используются UTF-32, UTF-16 (точнее аж 2: UTF-16-BE и UTF-16-LE) и UTF-8.
И вот те "краказябры", которые вы показывали - это и есть несоответствие способов кодирования.
Про кракозябры не понял. Пишешь в IDE кириллицей и в мониторе - тоже кириллица. Или в мире виндоус как-то иначе? Винда вроде давно на юникоде, или я что-то путаю?
Винда не только не умела внятно и совместимо с другими работать с UNICODE в 2016г., когда была написана эта реплика, но так же точно не умеет этого делать и в нынешнем 2018-м.
ну так вперёд - сделать и показать сообществу...
ну так вперёд - сделать и показать сообществу...
И что ж хотела бы "посмотреть" эта оскорблённая ощественность?
На то как Processing взаимодействует с Andruino? Так у вас тут на форуме целый раздел относительно Processing есть (и очень здорово что есть!) - раззуй глаза и читай аж до тошноты ... А инсталлировать этот как Processing - так там в экзамплах и документации пару десятков примеров такого взаимодействия.
Или про то, как используя Processing быстро строить оконные (GUI) приложения? Так там сотня примеров ... вставь в READ.ME свою фамилию - и у тебя уже готов свой проект ;-D
Или о том, как строить клиент-серверное взаимодействие скетча Arduino через Serial (как вариант) с серверной частью на хост-компьютере? Так тут, во-первых, прежде чем "посмотреть", оскорблённая ощественность должна бы понимать что вообще из себя представляет клинт-серверное взаимодействие. Готова общественность???
А во-вторых, такое взаимодействие 2-х программных компонент, клиента и сервера, происходит не на уровне визуальных картинок на "посмотреть", а на уровне внутреннего обмена какими-то данными ... в зависимости от прикладной области приложения. Ну, напишу и покажу я код на хосте, взаимодействующий с Arduino ... напишу на языке Python, или Go, или Swift, или Kotlin, или Rust ... - для "посмотреть" общественности. Рассмотрение этого кода сильно попустит оскорблённое чувство общественности?
Иногда лучше жевать, чем говорить.
Olej
1.Пока что у нас нет западных ценностей. Кто чем хочет - тем и пользуется. Я не навязываю вам процессинг, терминалы и прочее. Я выложил программу, хотят, скачивают, хотят, не скачивают. Хотят, пользуются, хотят, не пользуются. Прошу не разводить обсуждения, что лучше, а что хуже, создайте отдельную тему или напишите статью с вашим субъективным мнением о тех или иных программах.
2.По поводу кодировки вы немного недопоняли, дело тут не в операционной системе и ее кодировке.
КонстантинБ
1. Нет, это не настраивается, исправлю в выходных, добавлю отправку кода клавиши и по нажатию и по отпусканию клавиши.
2. Это конфиг файл в котором сохраняются все настройки по завершению программы.
- Секция [MainForm] содержит стандартные настройки размера формы. Ширина, высота, положение на экране, обычное состояние окна или развернуто на весь экран.
- Секция [Font] содержит настройки шрифта.
- Секция [Settings] содержит основные настройки.
- Секция [Visible] содержит настройки видимости того или иного компонента, где 1 виден, 0 не виден.
Почти все настройки задаются в меню программы, кроме AutoConnect.
блин. ну, сколько можно? - влазить в темы, где уже сто раз всеми обсосано и народ пришёл к какому-то консенсусу, и играть роль тупого Капитана Очевидность.
1.Пока что у нас нет западных ценностей. Кто чем хочет - тем и пользуется.
Я не знаю про ваши ценности...
Но только в 2018г. кроить велсипед на Delphi, которому уже 20 лет место только как на свалке ... это даже не смешно уже.
А потом заниматься вечной дрочиловкой со шрифтами и кодовыми таблицами, которым никогда не будет конца. Потому что победить это нельзя в принципе.
Люди вам сделали Arduino IDE, худо там или бедно ... но используя хотя бы инструментарий (Java) и кодировки (UNICODE, UTF-8), которые появились уже после того, как Delphy должен был уже благополучно умереть. А теперь вы этими граблями разгребаете то, что сделано гораздо более по стандартам современным, а потом будет победоносно годами бороться со сложностями, которые сами себе нагородили.
Ну ... Флаг в руки ... и с криком: "Банзай"!
Люди вам сделали Arduino IDE, худо там или бедно ...
ну, хватит тупить - народ желает по UART комфортно работать с более, чем 1-байтными кодировками.
штатный монитор этого не позволяет. точка.
Блин. Ну какая разница пользователю на чем написана программа. Я вас наверное удивлю но 6 миллиардов людей не знают на чем написана windows. А миллиард и вовсе не видело ПК. Ещё первым сообщением я дал понять что писать надо по теме. Мне в лом отвлекаться на пустые рассуждения. Есть предложение по программе. Пишите. Баг нашли - пишите. Вы бы еще зашли на форум flprog и попытались объяснить их 5000 комьюнити. Что есть си и писать скетчи на другом языке ненадо. И прога вообще написана не на избранном языке. Прям Тереза Мэй какая-то.
КонстантинБ
Спасибо.
Olej ты не на Хонде ездишь случайно?
Привет, программа отличная и очень нужная.
Нужно исправить некоторые ошибки.
_____________________________________________
long times; void setup() { Serial.begin(115200); } void loop() { Serial.print(F("Счётчик: ")); Serial.println(times); times++; }
______________________________
1) каким образом изучить данные, если они приходят быстро? (например нужно посмотреть в течении 5 сек на "Счётчик: 400", а потом "Счётчик: 1000". Каким образом выделить и скопировать данные например "Счётчик: 800 - Счётчик: 3400" в блокнот? (нужно сохранить сначала буфер в файл, а потом от туда копировать? неудобно.)
2) откл. "Автопрокрутка" запоминает № строки и не даёт нормально листать, возвращаясь к прежней строке.
3) ждём когда значение будет "Счётчик: 135500" и как наблюдаются эти значения на экране? (мерцает? программа тормозит? хотя "Счётчик: 256350" это файл 1,8Мб)
4) дабы не вводить в заблуждение значком Ардуино на панели задач, лучше его поменять, к примеру, повернуть на 90 градусов и проинвертировать цвет.
5) изменить подсказку на кнопку "Игровой режим" на типа "перехват нажатия клавиатуры в коды клавиш".
6) при выборе отображения в другом формате (HEX, ANSI и т.д.), отображение меняется только при поступлении новых данных, хотя на экране старые данные имеются, они при смене формата, не меняются.
___________________
Best regards.
Добрый день. Программирую в Ардуино недавно. Искал Подобную программу. Мне ваша программа очень понравилась. К сожалению терминал порта в Ардуино никто не хочет дорабатывать. У вас поднята тема управляющих команд. Я нашёл только одну Serial.println(“@clear@”); но её маловато. Хотелось бы ещё что то вроде Serial.println(“@SaveFile@c:\file.txt”) Serial.println(“@AddFile@c:\file.txt”)для сохранения в файл всего что есть в мониторе порта.
В принципе имя файла можно вводить в строке для отправки текста. Ардуно его ловит и результаты складывает где указано. Но здесь есть один нюанс. Данные в монитор порта могут поступать какие угодно если Ардуино заточено не под вашу программу. И чем больше управляющих команд тем больше вероятность непредвиденных действий. Для этого желательно просто добавить кнопку Включить/Отключить управляющие команды – Стазу все или по отдельности.
Также хотелось бы видеть данные в графическом представлении. Что-то вроде ПЛОТЕРА. Запускаемого одновременно с монитором порта. А данные разделять с помощью управляющих команд. Самое простое разделение - числовые данные на плотер а все символьные в монитор порта. И конечно предусмотреть очистку окна плотера.
genaonyx, можно исходник? И на чём писалось. Нужно нечто подобное, но с другим дизайном.