Как задокументировать пользовательскую библиотеку в Arduino
Я создал свою собственную библиотеку, и она работает безупречно. Теперь я хочу добавить к нему некоторую документацию, которую сможет понять Arduino IDE.
Для функций из самой среды разработки Arduino, таких как delay(ms)
, вы можете щелкнуть их правой кнопкой мыши, а затем выбрать Найти в справочнике
. Как я могу добавить эту функцию в свою библиотеку?
@LukasFun, 👍4
Обсуждение2 ответа
Лучший ответ:
Хорошо, пришло время дать мой самый исчерпывающий ответ на StackExchange (спасибо @Juraj за помощь в этом).
Чтобы продемонстрировать все шаги, необходимые для этого, в этом ответе будет использоваться пример библиотеки, которая будет называться Foo
.
Начнем:
Чтобы добавить в свою библиотеку документацию, с которой может работать Arduino IDE, сначала необходимо поместить библиотеку в правильный каталог. Это либо папка library
в папке sketchbook
(вы можете найти ее, выбрав File>Preferences>Расположение Sketchbook
, по умолчанию это
C:\Users\YourUsername\Documents\Arduino\libraries
или
InstallationDirectoryOfYourIDE\portable\sketchbook\libraries
если вы используете переносную установку) или в
InstallationDirectoryOfYourIDE\libraries
В какое из двух мест вы поместите свою библиотеку, зависит от вас, оба работают (кроме случаев, когда вы помещаете в оба места одновременно). Вы должны помнить об этом: если вы поместите свою библиотеку в папку libraries
своего альбома, только у вас будет доступ к этой библиотеке. Если на том же ПК есть другие пользователи, которые смогут использовать вашу библиотеку, вы должны поместить ее в папку общих библиотек (если у вас нет доступа к этой папке, потому что она принадлежит другому пользователю, и вы не являетесь админ, тогда плохо, извини ;).
Ваша библиотека должна содержать как минимум файл Foo.h
, который может находиться непосредственно в папке вашей библиотеки (старый стандарт) или в подпапке src
в папка вашей библиотеки (актуальный стандарт). Содержимое файла для данного примера абсолютно произвольно (например, просто оставьте его пустым).
Дальше вам понадобится действительный файл library.properties
для вашей библиотеки. Вы можете создать и отредактировать его с помощью любого текстового редактора, например блокнота. Этот файл нужно поместить прямо в папку библиотеки.
Вот минимальный пример для этого файла, который работает:
имя=Фу
версия=1.0.0
автор=Ваше имя
сопровождающий=Ваше имя
предложение=что-то
параграф=что угодно
url=http://example.com
Дополнительную информацию о том, как работает этот файл (и другие вещи, которые следует учитывать при создании библиотеки), можно найти на странице Спецификация библиотеки Arduino.
Теперь мы можем указать, какие слова будет выделять IDE и какие из них должны ссылаться на какую справочную страницу (чтобы убедиться, что это работает в принципе, нет необходимости создавать собственные файлы .html
). еще). Для этого создайте файл keywords.txt
в папке вашей библиотеки. В нем вы пишете что-то вроде этого:
foo KEYWORD2 Foo
В этом примере foo
— это ключевое слово, которое будет выделено в среде IDE (и при щелчке правой кнопкой мыши появится опция Найти в ссылке
). KEYWORD2
указывает, как именно foo
будет выделен (цвет, жирность и т. д.), в этом случае он будет выглядеть как обычный текст оранжевым цветом (еще раз, см. Спецификация библиотеки Arduino для более подробной информации). Foo
— это имя файла .html
(без расширения), который открывается, когда вы щелкаете правой кнопкой мыши foo
в среде IDE и выбираете Найти в справочнике
. Он должен находиться в этой папке:
InstallationDirectoryOfYourIDE\reference\www.arduino.cc\en\Reference
Эти три слова разделены настоящим табулятором
(а не несколькими символами пробел
). Перед созданием собственного файла .html
вы можете просто скопировать туда один из файлов и переименовать его в Foo
. Обратите внимание, что ваша библиотека не должна содержать ничего, кроме трех упомянутых файлов и некоторого файла в справочной папке, чтобы это работало. На этом этапе вам следует перезапустить IDE и проверить, выделено ли ключевое слово foo
и предлагается ли опция Найти в справочнике
при щелчке правой кнопкой мыши. Если да, то успехов! Теперь вы можете перейти к созданию собственного файла .html
и поместить его в справочную папку.
Вы можете начать с простого изменения одного из существующих файлов, чтобы он соответствовал стилю API Arduino, но вы также можете создать свои собственные файлы. Однако, вероятно, лучший вариант — написать свою библиотеку в соответствии со стандартами doxygen, а затем позволить doxygen сделать всю работу за вас, создав файл автоматически.
Еще одно замечание: этот метод работает для любых ключевых слов, которые используются способом yourKeyword
или something.yourKeyword
, но не Something: :yourKeyword
(именно так вы бы использовали статическую функцию или переменную в своей библиотеке). По словам @Juraj, это вызвано IDE. Однако есть обходной путь: заменить каждую строку в файле keywords.txt
yourKeyword KEYWORDX ReferenceFile
с
yourKeyword KEYWORDX ReferenceFile
YourLibrary::yourKeyword KEYWORDX ReferenceFile
Таким образом, yourKeyword
будет выделен, как и следовало ожидать, но такие вхождения, как YourLibrary::yourKeyword
, также вызовут опцию Найти в ссылке
при щелчке правой кнопкой мыши.
На сегодня все. Спасибо и до свидания!
Итак, это требует изменения эталонной папки в установке Arduino, а также установки библиотеки? Есть ли способы автоматизировать это, или пользователь должен загружать каждую часть по отдельности?, @RDragonrydr
Arduino использует файл keyword.txt для выделения слов. и определить страницу ссылки на ключевые слова. Но справочная страница должна находиться в папке reference
установки IDE, а ключевое слово.txt содержит только имя файла, а не путь.
REFERENCE_LINK В этом поле указана страница справочника по языку Arduino, которую нужно открыть, щелкнув правой кнопкой мыши > Найти в справочнике или Справка > Найти в справочнике, когда курсор находится на этом ключевом слове. Как правило, не имеет смысла определять поле REFERENCE_LINK для ключевых слов сторонних библиотек, поскольку они вряд ли будут в справочнике по языку Arduino.
У меня есть библиотека, которая реализует WiFiClient и WiFiServer, как и библиотека Arduino WiFi, поэтому я могу связать файл keywords.txt со ссылкой на Arduino следующим образом:
WiFiClient KEYWORD2 WiFiClient
WiFiServer KEYWORD2 WiFiServer
WiFiUDP KEYWORD2 WiFiUDPConstructor
Используемые имена являются именами файлов html в Arduino\reference\www.arduino.cc\en\Reference
.
ответ в том, что это невозможно, @Juraj
я обновил ответ, @Juraj
ссылочные имена в keyword.txt — это имена html-файлов, расположенных где-то в ссылочной папке, @Juraj
ключевые слова.txt должны использовать вкладки для разделения полей. ты IDE перезапускал?, @Juraj
извините, файл должен находиться в C:\Program Files (x86)\Arduino\reference\www.arduino.cc\en\Reference, @Juraj
у вас есть файл keywords.txt в папке библиотеки рядом с library.properties? соответствует ли ваша библиотека спецификации библиотеки 1.5?, @Juraj
здесь это работает. как только я помещаю третье поле в keyword.txt, «Найти в ссылке» включается, даже если имя файла недействительно. Теперь я вижу, что текстовый курсор тоже должен стоять на слове., @Juraj
библиотека WiFiEspAT (в менеджере библиотек), но я опубликовал ее без keywords.txt. Чтобы проверить этот ответ, я скопировал keywords.txt из библиотеки Arduino WiFi и добавил строку для beginAP, которой нет в библиотеке Arduino WiFi. и я добавил справочный файл в папку Reference, @Juraj
Эта библиотека работает. Что мне нужно сделать, чтобы моя собственная библиотека работала так? Не могли бы вы предоставить минимальный пример пользовательской библиотеки?, @LukasFun
https://github.com/jandrassy/lab/tree/master/Foo, @Juraj
Я только что узнал кое-что очень интересное. При написании ключевых слов из моей библиотеки в IDE просто сами по себе или в виде something.keyword они работают так, как задумано. Но если я пишу их в виде Library::keyword (как это делается со статическими вещами из библиотеки) ключевое слово подсвечивается, но функция найти его в справочнике уже не работает. Почему это и как это исправить?, @LukasFun
Я не могу изменить работу IDE, @Juraj
- Определение объекта шагового двигателя в документации
- Как получить исходные файлы для библиотек Arduino?
- Ошибка: "недопустимое использование нестатической функции-члена" при вызове функции из моего собственного класса-метода
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Существуют ли библиотеки сглаживания сигналов для Arduino?
- Wire.h не найден!
- Библиотека FastLED: Как настроить яркость одного пикселя в абсолютном масштабе?
- Как эта строка кода определяет, подключен ли последовательный интерфейс?
Я не отвечаю на ваш вопрос, потому что мне также интересно узнать, возможно ли это вообще. Насколько я знаю, REFERENCE_LINK является ссылкой на собственный основной справочник Arduino. Libs может иметь только дополнительную папку для размещения в ней документов, но IDE полностью игнорирует это., @Peter Paul Kiefer