Удобная отладка скетчей по COM порту

andrakov
Offline
Зарегистрирован: 20.11.2013

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

Поэтому написал свою утилиту. Особенности:

1. Автоматическое определение COM порта, к которому цепляется Arduino (можно выставить жестко вручную в файле ini)

2. Сама определяет момент заливки скетча в Arduino и освобождает на это время COM порт. Затем снова цепляется к нему.

3. Все сообщения с COM порта можно одним кликом записать в файл.

Надеюсь, эта утилита сэкономит вам, как и мне, кучу нервов. Скачать ее можно по ссылке ниже. Проверена на IDE 1.0.3 и 1.05. Возможно есть и ошибки, написал недавно, но пока работает нормально.

http://files.mail.ru/BF2A5004A23E4E519BF4ED1F08EBE5DF

Если появятся вопросы, найти меня можно через мой сайт (в заголовке утилиты).

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Это глюк или фича?

andrakov
Offline
Зарегистрирован: 20.11.2013

Такая картинка возможна, если порт в момент запуска утилиты занят. Увы, не было у меня пока такого случая. Вот и первая ошибка... Да, у меня atmega 2560 R3 и ловилась только она на автомате. Поправил для работы с другими моделями. Проверить не на чем, но должно работать

http://files.mail.ru/263EE2295E994E6E8BE98BEB91717B01

Клапауций
Offline
Зарегистрирован: 10.02.2013

trembo пишет:

 

то глюк или фича?

это красиво!

andrakov
Offline
Зарегистрирован: 20.11.2013

Видите ли, уважаемый, на руках нет всех типов ардуин, так, что понять как в реестре будут прописываться они точно невозможно, не расковыряв дрова. Конечно тестировалось на своем железе. Потому и написано что возможны ошибки. Вот и после первого поста с картинкой я обнаружил проблему и постарался исправить в след. ссылке. Процесс исправления ошибок - это нормально, хоть и хотелось бы "все и сразу".  

На разных компах запускал - все ok. Но железяка Arduino у меня пока одна. 

Клапауций
Offline
Зарегистрирован: 10.02.2013

andrakov пишет:

На разных компах запускал - все ok. Но железяка Arduino у меня пока одна. 

при чём здесь железо и реестр вообще? - не должен софт плодить дубли диалоговых окон при любом раскладе.

andrakov
Offline
Зарегистрирован: 20.11.2013

Согласен. Но для работы с COM портом использовалась свободная визуальная компонета, которая и выдает эти окна. Теперь, конечно, придется разобрать ее код и устранить ошибку.  А реестр для определения порта, на который села ардуина. Соответственно, разные типы ардуин будут региться в реестре по-своему (что зашито в их дровах). Вот при чем здесь железо и реестр :)

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Клапауций пишет:

это красиво!

Напомнило.....

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Я бы поменял название файла на что-нибудь более близкое к его функциям-возможностям...

andrakov
Offline
Зарегистрирован: 20.11.2013

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

http://files.mail.ru/DF067C159FF04A7EA84BD3324F89094A

toc
Offline
Зарегистрирован: 09.02.2013

Вы исчерпали лимит одновременных скачиваний

Клапауций
Offline
Зарегистрирован: 10.02.2013

andrakov пишет:

Вы уж напишите, работает ли?  Если нет, то на какой конфигурации?

на конфигурации без компорта не работает

Вопрос - а, почему файлег называется "arduino.exe"? что бы что?

Клапауций
Offline
Зарегистрирован: 10.02.2013

toc пишет:

Вы исчерпали лимит одновременных скачиваний

ну, вот - забанили в маил.ру... допрыгался

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

У меня тоже  atmega 2560 R3. Подключил ардуину, запустил програму, выбрал порт и тишина. Что должно происходить? В обычном терминале от виндовс после запуска ардуина пищет через 3сек. "Старт программы" а тут не чего.

andrakov
Offline
Зарегистрирован: 20.11.2013

Значит так.  Ардуино подключаться может и по USB. Ардуина д.б. вставлена. COM порт эмулируется драйвером ардуины. Соответственно, если посмотреть в диспетчер устройств, а именно в COM порты, то там на одном из COM портов д.б. видна строка типа "Arduino .... (COM3". Вот по этой инфе прога и находит номер порта. Гляньте, что у Вас там. Вот вспомнил, что железки то как тока не называются, и фридуино и т.д. Надо видимо это учесть. А название... ну изменим, это просто для себя все писалось. А насчет майл.ру вот на другом файлообменнике. http://rghost.ru/50306400

andrakov
Offline
Зарегистрирован: 20.11.2013

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

 

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

Из IDE через монитор порта связь есть. Через терминал виндовса дуина связывается нормально и нормально всё читает и пишет в обе стороны а ваша прога сама нечего не определяет и если вписать порт в ручную тоже не чего не делает. У меня виндовс 7 профи. дравина на ардуину последняя.

andrakov
Offline
Зарегистрирован: 20.11.2013

А во время запуска проги порт свободен? Никакие другие проги для работы с портом не запущены? 

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

Нет. Но когда работает программа порт она занимает и не чем к нему не обратишся.

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

а изходник глянуть можно?

 

andrakov
Offline
Зарегистрирован: 20.11.2013

Dmti пишет:

есть кнопка чтение из порта а запись в порт как происходит?

Кнопки чтения нет. Все что идет из порта отображается сразу в окне слева. Последняя строка дублируетсчя сверху. Для записи в порт есть поле ввода, после заполнения которого нужно нажать кнопку WriteToCom.

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

Так, если прога держит порт, значит все-таки она его нашла и в заголовке окна должно отобразиться типа COM11. Значит все должно работать. Попробуйте вывести что-то в COM порт. Внимание! Битрейт нужно выставлять правильный. Например в большинстве скетчей я вижу 9600. А у меня ардуина работает только на 19200

насчет исходника стучитесь в скайп. Ник andrakov

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

Похоже порт видит. Но не туда не чего не посылает(специально для проверки дописал чтобы светодиод на 13 ноге при посылке "1" загорался, "2" выключался) с терминала всё работает, с проги нет.

 

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

а в исходнике хотел посмотреть как вы определяете с помощью каких методов настройки порта? 

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

При нажатии на кнопку записать в порт вижу на ардуине светодиод порта моргает, при нажетии на ресет дуины вижу как посыл в порт уходит а на проге ни чего. И светодиод на 13 ноге молчит.

andrakov
Offline
Зарегистрирован: 20.11.2013

Dmti пишет:

Похоже порт видит. Но не туда не чего не посылает(специально для проверки дописал чтобы светодиод на 13 ноге при посылке "1" загорался, "2" выключался) с терминала всё работает, с проги нет.

Завтра проверю. 

Dmti пишет:

а в исходнике хотел посмотреть как вы определяете с помощью каких методов настройки порта? 

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

toc
Offline
Зарегистрирован: 09.02.2013

во всём мире опен соурс, а вы тут экзешники раздаёте. И к тому же с именем вводящим в заблуждение. хех

Ваша программа может без админских прав работать (читать нужную инфу в реестре)? Я 99% времени работаю не под админом (успешно работаю). В том числе в ардуино ide.

Пройдёмся по "особенностям"

1. Зачем это? Вы часто переключаете ? У меня часто воткнуты две 'нано'. Одна всегда в ком9, а другая всегда в ком10. Не зависимо от того в какой из трёх юсб портов компьютера они воткнуты. По-моему, ком порт назначается при первом подключении устройства.

2. родной ардуиновский монитор порта тоже так работает. 

3. За последние полтора года мне как-то ниразу это не пригодилось бы. А так-то вроде пару раз выделял-копировал-вставлял в блокнот и сохранял что-то.

пока не вижу преимуществ

и я считаю, что "правильнее" искать ком порты не в реестре, а спросить у ОС через её api, подробнее: https://www.google.ru/search?q=windows+enumerate+serial+ports

 

andrakov
Offline
Зарегистрирован: 20.11.2013

toc пишет:

во всём мире опен соурс, а вы тут экзешники раздаёте. И к тому же с именем вводящим в заблуждение. хех

Ваша программа может без админских прав работать (читать нужную инфу в реестре)? Я 99% времени работаю не под админом (успешно работаю). В том числе в ардуино ide.

Пройдёмся по "особенностям"

1. Зачем это? Вы часто переключаете ? У меня часто воткнуты две 'нано'. Одна всегда в ком9, а другая всегда в ком10. Не зависимо от того в какой из трёх юсб портов компьютера они воткнуты. По-моему, ком порт назначается при первом подключении устройства.

2. родной ардуиновский монитор порта тоже так работает. 

3. За последние полтора года мне как-то ниразу это не пригодилось бы. А так-то вроде пару раз выделял-копировал-вставлял в блокнот и сохранял что-то.

пока не вижу преимуществ

и я считаю, что "правильнее" искать ком порты не в реестре, а спросить у ОС через её api, подробнее: https://www.google.ru/search?q=windows+enumerate+serial+ports

Я написал, что екзешеиков не жалко. Но! прога написана на Delphi, так что ни о каком oпенсорсе речи не идет в принципе. У Вас Delphi есть? А сторонние компоненты, использованные тут есть? А у кого есть и, главное - кому хочется заморачиваться всем этим?

Ну и о остальном. Что-то по делу, что-то не по делу. А короче: Вам не нужно - не пользуйтесь. Я делал для себя. Мне здорово облегчило жизнь, возможно пригодится еще кому-то. Хорошо, когда есть выбор :)

toc
Offline
Зарегистрирован: 09.02.2013

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

andrakov
Offline
Зарегистрирован: 20.11.2013

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

А поскольку комментов там мало, то вкратце опишу суть метода отдачи порта на время заливки скетча. 

Прога по таймеру постоянно опрашивает активные окна винды. Если окно принадлежит IDE Arduino, то снимается цвет пикселя на кнопке заливки скетча (при наезде курсором на нее, цвет меняется на белый, при заливке на желтый). Логика, думаю, понятна.

Будут вопросы еще - милости прошу :)

http://rghost.ru/50323873

P.S. А монитор Arduino работает не так :). При заливке скетча он просто закрывается...

andrakov
Offline
Зарегистрирован: 20.11.2013

Программу перереработал и поместил на пмж сюда http:\\www.andrakov.narod.ru/arduino/mm.htm

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

andrakov пишет:

Программу перереработал и поместил на пмж сюда http:\\www.andrakov.narod.ru/arduino/mm.htm

Что то, она не запускается на win7/64

andrakov
Offline
Зарегистрирован: 20.11.2013

NE_XT пишет:

andrakov пишет:

Программу перереработал и поместил на пмж сюда http:\\www.andrakov.narod.ru/arduino/mm.htm

Что то, она не запускается на win7/64

Работаю на win7/64. Может у Вас прав админа нет? Проверю, если из-за этого, доработаем, обновим

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

andrakov пишет:

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

Terminal 1.93b by Bray - достаточно нажать кнопку Connect/Disconnect, закрывать/открывать утилиту не требуется.

RealTerm - достаточно нажать/отжать кнопку Open, закрывать/открывать утилиту не требуется.

UPD: Мля, на дату сообщений сразу не глянул.....

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015
andrakov пишет:
Если окно принадлежит IDE Arduino, то снимается цвет пикселя на кнопке заливки скетча (при наезде курсором на нее, цвет меняется на белый, при заливке на желтый). Логика, думаю, понятна.
 
Понятна. При заливке через меню или по горячей клавише Ctrl-U ни хрена работать не просто не будет, а и не должно. Это не баг, это фича.
 
Таике вещи делаются совсем не так. Хотя ...
andrakov пишет:
Прога по таймеру постоянно опрашивает активные окна винды.
 
Уровень понятен.
 
andrakov пишет:
Будут вопросы еще - милости прошу :) 
 
 
Вопросов нет, всё ясно :)