Pull to refresh

Пара костылей для Notepad++ Arduino IDE (для Чайников)

Reading time4 min
Views74K


Если вы работаете с Arduino, то рано или поздно вы неизменно разочаруетесь в минималистичном функционале Arduino IDE как в текстовом редакторе кода. Ни тебе человеческой подсветки, ни автозаполнения, ни вкусных плюшек и плагинов… И закономерно начнете рыть информацию о связках Arduino с Intellij Idea, Sublime Text, ну или на худой конец с Notepad++, поскольку даже в последнем редактировать код значительно комфортнее.

Вот как раз о последней связки Arduino с Notepad++ и пойдет сказ о костылях, для тех, кто еще не раскошелился на лицензию Intellij Idea или Sublime Text.
И в общем, работая со скетчем в Notepad++ вы можете свести к минимуму обращение к окну Arduino IDE (первый и общеизвестный костыль) или даже полностью исключить запуск Arduino IDE и компилировать и даже заливать скетч в плату непосредственно из Notepad++ (второй костыль).


Костыль первый


Это даже не костыль, а такая build-in тросточка, штатно имеющаяся в Arduino IDE. Но пользуются ей, судя по форумам, практически никто. Хотя, если разобраться, жить с этим какое то время можно…
  1. Итак, последовательность действий следующая:
  2. запускаете Arduino IDE;
  3. открываете ваш скетч;
  4. заходите в настройки IDE и включаете галочку «Использовать внешний редактор»;

    Теперь окно IDE изменило цвет и пропала возможность редактировать скетч в самом IDE.

  5. открываете Notepad++ (или любой другой редактор кода или другую любимую IDE);
  6. открываете свой скетч, связные модули, библиотеки и т.д.;
  7. редактируете код;
  8. сохраняете;
  9. переходите в Arduino IDE;
  10. нажимаете Verify или Upload (компилируете или выгружаете скетч);

А что происходит? При включенной галке «Использовать внешний редактор» Arduino IDE при каждой операции Verify или Upload будет автоматически переоткрывать текущий скетч, сохраненный вами в другом редакторе. Ну, в общем то не манна небесная, но жить с этим уже можно, и не страдать от ущербности редактора Arduino IDE.

Что плохо? Что нужно переключаться между окнами… это быстро утомляет. Хочется, чтобы как в детстве, чтобы как у людей! — отредактировал код, нажал Alt+F9 для Compile, потом Ctrl+F9 для Run. Есть и такое решение.

Костыль второй


И это уже полноценные ходунки, с резиновыми колпачками и поролоновыми ручками. Но, дизайн пока совковый, без канделябров…

Начиная с версии 1.5 (это та, которая с поддержкой Arduino Due) Arduino IDE стала поддерживать работу из коммандной строки. Полный перечень команд можно посмотреть здесь. Нас будут интересовать две команды, "--verify" и "--upload" для компиляции и выгрузки скетча соответственно.

Чтобы ими воспользоваться нужно установить в Notepad++ плагин NppExec. Сделать это можно из меню плагинов. Более подробно об установке и использовании плагина написано в соответствующей статье на Хабре. Нас будет особо интересовать переменная окружения файлового уровня $(FULL_CURRENT_PATH), которая подставляет в командную строку полный пусть файла, открытого в текущей закладке Notepad++.

Теперь нам нужно в NppExec создать два макроса для команд verify и upload. Но перед этим необходимо в системную переменную PATH добавить путь, где находится файл arduino.exe (путь к папке установки Arduino IDE). Это для того, чтобы наши макросы начинались с короткого «arduino --», а не с указания полного пути к исполняемому файлу. Как изменить PATH для разных ОС описано здесь.

Вот теперь создаем два макроса:
  • arduino --verify "$(FULL_CURRENT_PATH)"
  • arduino --upload "$(FULL_CURRENT_PATH)"

Обратите внимание, переменная "$(FULL_CURRENT_PATH)" должна указываться именно в кавычках, это на тот случай, если путь к файлу скетча содержит пробелы.
И если вы не указываете в макросах никаких параметров по плате, чипу, порту и т.д., то все эти параметры для выгрузки в плату (макрос --upload) будут браться те, которые были настроены в Arduino IDE при последнем запуске.

В меню настроек NppExec есть опция, размещающая создаваемые вами макросы на закладке Макросы на панели меню Notepad++.
image

К сожалению, разработчик NppExec не позаботился об опции создания на панели Notepad++ новых кнопок и привязке к ним новых макросов, поэтому наши макросы придется запускать из меню Макросы:
image
Новые макросы будут располагаться в самом низу меню, под разделителем.

Теперь можно открыть консоль («Show Console Dialog»)
image
и проверить макросы.

Все сообщения Arduino IDE теперь при компиляции и выгрузке будут отображаться в консоли самого Notepad++.
Но тут есть подводный камень. Если вы сидите на русских Windows, то вместо русских системных сообщений компилятора С и русских букв в пути к файлу (например, если вы держите свои скетчи в папке «Google Диск»), вы будете видеть в консоли NppExec абракадабру. Пока это системно не лечится (к разработчику NppExec я пока не обращался), но вы можете попробовать заменить текущую библиотеку NppExec на одну из двух, предлагаемых в последнем релизе, ANSI или Unicode. Мне пока не помогло…

Как видите у данного костыля есть пара неприятных недостатков


Во-первых, arduino.exe запускается при каждом запуске макроса и закрывается по его выполнению. Таким образом вы теряете 3-4 секунды на каждую компиляцию кода. В этом плане Arduino IDE работает немного быстрее. Но, если вы пишите код аккуратно и компилируете редко, то это вас напрячь не должно.

Во-вторых, как я писал выше, разработчик NppExec не позаботился об опции создания на панели Notepad++ новых кнопок с привязкой к ним новых макросов, как сделано, например в плагине Python Script:
image
(картинка кликабельна)
Поэтому макросы придется запускать в два клика мышью, например из меню Макросы.

В-третьих, у вас нет монитора COM-порта в Notepad++. Но тут уж вам никто не поможет, смиритесь… монитор только в Arduino IDE. Но мне он, например, для отладки новой библиотеки для WiFly был нужен не всегда, только при контроле работы уже включенной и пролитой платы с модулем. И почти всю работу я проделал (да и сейчас пилю) в Notepad++.

Я, в общем то, с этим смирился. И даже осталась какая-то интрига — допилить кнопки и монитор самому.

Ну а теперь осталось только присвоить новым макросам горячие клавиши Alt+F9 и Ctrl+F9
image
и…
image
Добро пожаловать домой, старички! ;)
И никакого Arduino IDE.

P.S. Не все картинки взяты с моего Notepadа++, сори. Я сейчас не за своим компом, но очень просили поделиться костылями. Потом заменю картинки на реальные.
Тему а-ля turbo pascal можно посмотреть вот здесь.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+11
Comments17

Articles

Change theme settings