1

Тема: Serial Monitor Pro

Фото устарело, с выходом новых версий появляется и новый функционал, каждый раз менять фотку лень smile
http://arduino.on.kg/upload/content/images/1098e62617567597903eefb5e04d313c9ed5c7ca.gif

Привет всем. Сегодня я хочу рассказать вам о моем личном проекте. Проект этот необычен для данного раздела форума, так как это не моргающая, ползающая или летающая штуковина smile, а программа.

Программа эта называется Serial Monitor Pro или просто Монитор Порта Про.

Как вы догадались это альтернатива штатному монитору порта входящему в состав Arduino IDE.

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

И так, с вступлением мы закончили, теперь расскажу вам о ее преимуществах, и чем же она лучше штатной.

Основная фишка это поддержка различных языков. Т.е. теперь отправляя строки из ардуино при помощи функций Serial.print и Serial.println в мониторе порта появиться не какие-то кракозябры, а тот текст, который вы и хотели видеть, программка поддерживает кучу различных языков, от Русского и Украинского, до Немецкого и Итальянского.

Serial.println("Привет Мир!");

И мы увидим Привет Мир! smile без каких либо библиотек и заморочек.

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

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

void loop()
{
  delay(500);
  Serial.println("@clear@");
  Serial.println("Привет Мир!");
  Serial.println(random());
}

В данном случае всегда будет отображаться только две строки, первая – «Привет мир!», а вторая это случайное число постоянно меняющееся.

Ну и оставшееся это возможность изменить шрифт, его размер и цвет. А так же сохранить все, что получили от ардуинки в файл.

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

Подробнее вы можете прочесть на странице для скачивания.
http://arduino.on.kg/serialMonitor

2

Re: Serial Monitor Pro

Вышла новая версия 1.3 (21.10.2016)
В новой версии:

  • Автоматическое отключение от COM-порта при загрузке скетча через Arduino IDE. Т.е. монитор порта больше не мешает прошивать ардуинку.

  • Добавилась кнопка программной перезагрузки Ардуино.

  • Добавилась кнопка очистки данных.

  • Все настройки, в том числе размеры и расположение формы теперь сохраняться.

  • Добавился выпадающий список с настройками DTR и RTS. Если выбрать «DTR off & RTS off» при соединении с ардуинкой она не будет перезагружаться.

3

Re: Serial Monitor Pro

Вышла новая версия 1.4 (28.11.2016)
В новой версии:

  • Исправлены проблемы с кодировкой в следствии чего некоторые данные пропадали (спасибо нашему читателю Алексею).

  • Добавлены новые кодировки на выбор: ANSI, ASCII, Unicode, UTF7, UTF8.

  • Менять DTR и RTS можно теперь в любое время.

  • Нет необходимости теперь нажимать кнопку "Отправить". Можно отправить данные нажатием клавишей Enter.

  • Редактор заменен на другой (на будущее).

  • Программа запоминает при закрытии теперь не только свои размеры, но и состояние.

  • Добавлена команда "\e[J" для поклонников консолей. Пример: Serial.print("\e[J"); // Аналог команды @clear@

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

Re: Serial Monitor Pro

Здравствуйте  Геннадий, хотелось бы видеть в Serial Monitor Pro состояние соединения. Скажем можно было бы объединить
кнопки [соединить]  и [разъединить] в одну, с меняющейся пиктограммой, которая уже используется. Бывает иногда не понятно есть соединение или нет. Как говориться, то ли лыжи не едут... :-)

5

Re: Serial Monitor Pro

Ок, на выходных выпущу небольшой баг фикс, касательно размеров окна, за одно и это поправлю.

Еще хотелось бы спросить как у вас так и у других.

Нужно ли добавлять поддержку не только COM порта, но и Ethernet.

Вариантов применения куча, к примеру:

1. Отладка и проверка Ethernet Shield.

2. Программа будет например выводить сообщение как с подключенной к ней ардуинки, так и от других копий программ, запущенных как на одном компе, так и на разных. Это даст возможность отлаживать несколько ардуинок сразу. При чем даже подключенных к разным ПК.

3. Еще вариант это перенаправлять то что получили от ардуинки в сеть (замена Ethernet Shield) получается.
В таком варианте возможно перенаправление сообщений например в syslog.

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

6

Re: Serial Monitor Pro

Вышла новая версия 1.5 от 04.12.2016

  • Полностью переработан интерфейс.

  • Добавлен игровой режим.

  • Исправлены мелкие баги и ошибки.


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

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

Пару тестовых скетчей.

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available() > 0)
  {
    byte b = Serial.read();
    Serial.println(b);
  }
}

Результат:
http://arduino.on.kg/upload/content/images/e85a4cc9258179b4ead29ca834149def5b4d29c8.png

Используем полученные коды для управления 13-тым светодиодом на ардуинке.

void setup()
{
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop()
{
  if (Serial.available() > 0)
  {
    byte b = Serial.read();
    if (b == 38) digitalWrite(13, HIGH); // Нажата клавиша "Вверх", код клавишы 38
    if (b == 40) digitalWrite(13, LOW);  // Нажата клавиша "Вниз", код клавишы 40
  }
} 

Таким образом нажимая клавишу вверх мы будем включать светодиод, а клавишу вниз - выключать.

Специально для вас мы подготовили таблицу кодов клавиш http://arduino.on.kg/codekeys

Re: Serial Monitor Pro

Да Геннадий, видно, что Вы переполнены множеством всевозможных идей в плане развития данной программы, но мне все таки кажется  не стоит перегружать интерфейс давольно простого и понятного инструмента. Думаю нужно больше времени потратить на отладку уже имеющегося продукта, для более устойчивой его работы.
  Правда в моей практике, в свое время была необходима такая программа, которая могла бы через Ethernet получать периодически данные и сохранять их .csv формате, с определенным промежутком времени. Скажем раз в сутки с добавлением данных в файл, или каждый раз в новый файл с датой в названии. Но это уже ближе к теме телеметрии чем к отладке arduino.

8 (изменено: zkalimov, 14-12-2016 02:02:05)

Re: Serial Monitor Pro

Пардон, но что я делаю не так?

Post's attachments

Attachment icon Capture.JPG 90.07 kb, 71 downloads since 2016-12-14 

9

Re: Serial Monitor Pro

Вы все делаете правильно. Это был баг в версии 1.5.
Я исправил, скачайте новую версию и отпишитесь о результатах.

10

Re: Serial Monitor Pro

genaonyx пишет:

Вы все делаете правильно. Это был баг в версии 1.5.
Я исправил, скачайте новую версию и отпишитесь о результатах.

Спасибо, в новой все ок. Кстати, было бы отлично если бы запоминался последний выбранный порт.

11

Re: Serial Monitor Pro

genaonyx программка то что надо,работает отлично,Спасибо.

12 (изменено: lv, 30-01-2018 02:46:10)

Re: Serial Monitor Pro

Цитата: "Добавлены новые кодировки на выбор: ANSI, ASCII, Unicode, UTF7, UTF8."
При выводе посимвольно от 0x20 до 0xff получаем такую картинку:

https://cdn1.savepice.ru/uploads/2018/1/29/989f9d66183ece48c718655e55e7b78a-prev.png

И как установить кодировку ANSI, если её нет в списке?

13

Re: Serial Monitor Pro

lv пишет:

Цитата: "Добавлены новые кодировки на выбор: ANSI, ASCII, Unicode, UTF7, UTF8."
При выводе посимвольно от 0x20 до 0xff получаем такую картинку:

https://cdn1.savepice.ru/uploads/2018/1/29/989f9d66183ece48c718655e55e7b78a-prev.png

И как установить кодировку ANSI, если её нет в списке?

Убрал данную кодировку за ненадобностью. Верну в следующей версии в выходные.

14

Re: Serial Monitor Pro

Вышла новая версия 1.7.0 (03.02.2018)
В новой версии:

  • Добавлен просмотр данных в HEX режиме.

  • Вернулась поддержка кодировки ANSI.

  • Добавлена новая кодировка OEM 866 (MS-DOS, Кириллица).


Пару примеров:


1. Дамп памяти EEPROM в Hex режиме:

#include "EEPROM.h"

void setup()
{
  Serial.begin(9600);
  for (int i = 0; i < EEPROM.length(); i++) Serial.write(EEPROM.read(i));
}

void loop()
{
  
}

http://arduino.on.kg/upload/content/images/c22ecc8565275073297d3c3f6820910e47ea5713.jpg


2. Кодировка ANSI

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  byte i;
  // Цифры.
  for (i = 48; i <= 57; i++) Serial.write(i);
  // Латинница.
  for (i = 65; i <= 90; i++) Serial.write(i);
  for (i = 97; i <= 122; i++) Serial.write(i);
  // Кириллица.
  for (i = 192; i < 255; i++) Serial.write(i);
  Serial.write(168); // Ё
  Serial.write(184); // ё
  Serial.println("");
  delay(5000);
}

http://arduino.on.kg/upload/content/images/12c3edd03723d07a78f2071c606646712511a3e3.jpg

15

Re: Serial Monitor Pro

Большое спасибо! Отличная работа.
Но нашёл ошибку.
Использую скорость 115200. При запуске программа хоть и запоминает скорость, но похоже инициализирует 9600, т.к. идет всякий мусор. Если переключить на другую скорость и опять вернуть 115200, то все работает стабильно, можно много раз переподключаться.  Но стоит перезапустить программу, как она опять показывает мусор.

16

Re: Serial Monitor Pro

lv пишет:

Большое спасибо! Отличная работа.
Но нашёл ошибку.
Использую скорость 115200. При запуске программа хоть и запоминает скорость, но похоже инициализирует 9600, т.к. идет всякий мусор. Если переключить на другую скорость и опять вернуть 115200, то все работает стабильно, можно много раз переподключаться.  Но стоит перезапустить программу, как она опять показывает мусор.

Исправил, скачайте заново.

17

Re: Serial Monitor Pro

Скачал, спасибо.

18

Re: Serial Monitor Pro

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

19

Re: Serial Monitor Pro

Добрый день. Нашёл баг, возможно его описывали или вы уже его сами нашли, но всё равно напишу. Если при активном соединении отключить ардуино от компа, то начинает сыпаться ошибка "Ошибка чтения Serial Port'a", закрыть программу возможно только убив процесс через диспетчер. Пожалуйста пофиксите эту проблему.

http://static.hypercomments.com/data/images2/guest/1529303198453414

20

Re: Serial Monitor Pro

Исправил, скачайте новую версию.

21 (изменено: Alur, 30-07-2018 02:09:38)

Re: Serial Monitor Pro

Привет, софтина топовая, большой функционал и хорошая конфигурация интерфейса очень понравились, но сразу нашел баг)

Если через ini включить авто-коннект к порту, то при открытии программы и занятом порте, начинают бесконечно сыпаться ошибки... (Как нормально прикрепить фото, я пока так и не понял, сорри)

Хотя если подключаться при запущенной программе, такая ошибка появляется только раз.

PS: Не думаю что минимальная ширина окна в 680 пикселей - авторская задумка) А если это так, то хочу сказать, что это не удобно, слишком много места занимает...

Post's attachments

Attachment icon Screenshot_1.png 19.16 kb, 73 downloads since 2018-07-29 

22 (изменено: Alur, 30-07-2018 02:02:11)

Re: Serial Monitor Pro

Это уже предложение нового функционала, с описанием моих костылей)


Просьба:
А еще было бы приятно увидеть подобие хука Arduino IDE для PlatformIO (Более удобная штука для разработки под микроконтроллеры), использую ее совместно с текстовым редактором Atom и все кроме монитора порта устраивало...

Костыли:
Сейчас с вашим приложением придумал хитрость, чтобы перед заливкой выполнялся пайтон файл, закрывающий ваш монитор порта (PlatformIO поддерживает возможность запуска пайтон скриптов перед заливкой и после), а после заливки выполняется скрипт запуска программы порта, и она удачно восстанавливается туда, где была, но и тут есть камни подводные...

PlatformIO запускает скрипт не "после" заливки, а где то в середине, так что получается, что ваш монитор порта просто перезапускается, но, благо, PlatformIO успевает вклиниться в момент перезапуска и начать заливку, ну а так как в мониторе порта есть выше-описанный баг - начинают сыпаться ошибки, пока не зальется прошивка и монитор
не сможет подключиться... -_-
После все работает, но надо вырубать окна ошибок ¯\_(ツ)_/¯

Предложения:
- 1. Заменить выпадение окна ошибки при подключении к занятому порту на появление надписи где-то в районе нижней, а лучше верхней панели.
- Исход этого варианта: Так все будет работать у всех и даже на PlatformIO с моими костылями!

- 2. Сделать подобие внешнего вызова отключения и подключения к порту для вашего монитора.
- Исход этого варианта: Можно будет вместо перезапуска монитора посылать команду на отключение от порта, заливать прошивку, а после посылать команду на подключение к порту. Тоже не плохо, но, к примеру, тот же PlatformIO будет подключать монитор к порту до заливки, потому снова нужны будут костыли. Хотя если не будут сыпаться ошибки - это будет выглядеть лучше перезапуска приложения монитора...


Извиняюсь за большой объем текста и надеюсь, что исполнение хотя бы первого предложения не будет для вас трудностью, благодарю за внимание!

PS: Если что-то не понятно описал - обращайтесь, с удовольствием объясню точнее)

23 (изменено: emserg, 04-08-2018 00:56:30)

Re: Serial Monitor Pro

Привет, программа отличная и очень нужная.
Нужно исправить некоторые ошибки.
_____________________________________________

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.
P.S: позаимствуйте описание библиотек тут: https://doc.arduino.ua/ru/prog/

24 (изменено: dron0, 26-10-2018 13:44:33)

Re: Serial Monitor Pro

Что я делаю не так?
Если включен коннект в Вашем мониторе то похоже не обрабатывается ВГРУЗИТЬ в IDE, и порт остается занят монитором (помнится раньше в какой то версии работало нормально).
Еще баг: после старта монитора не всегда нормально выставляется DTR и RTS на порту (в итоге ESP8266 в состоянии ресета стоит), приходится выбрать из списка еще раз.

25

Re: Serial Monitor Pro

dron0 пишет:

Если включен коннект в Вашем мониторе то похоже не обрабатывается ВГРУЗИТЬ в IDE, и порт остается занят монитором (помнится раньше в какой то версии работало нормально).

"Настройки" - "Совместимость с Arduino IDE".

dron0 пишет:

Еще баг: после старта монитора не всегда нормально выставляется DTR и RTS на порту (в итоге ESP8266 в состоянии ресета стоит), приходится выбрать из списка еще раз.

Посмотрю