Ошибка компиляции для Seeed Xiao nRF52840

arduino-ide python seeeduino-xiao nrf52

Я использую Arduino IDE 2.3.4 для программирования XIAO nRF52840 Sense. Я добавил плату, следуя инструкциям на официальной странице начала работы.

После установки платы в Arduino IDE я открываю пример с мигающим индикатором. При нажатии Ctrl+U в консоли появляется длинная последовательность компиляций, которая завершается этой ошибкой. Ошибка сохраняется даже после перезапуска IDE. Я проверил файл в этом месте, и в строке 5 есть именно этот код.

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

Вот текст ошибки:

python "C:\\Users\\my user name\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\nrf52\\1.1.10/tools/uf2conv/uf2_wrap.py" "C:\\Users\\my user name\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\nrf52\\1.1.10/tools/uf2conv/uf2conv.py" Seeed_XIAO_nRF52840_Sense "C:\\Users\\my user name\\AppData\\Local\\arduino\\sketches\\016CEDE8C21B2FFF8F3C8148DE9D6C52" "C:\\Users\\my user name\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2025512-14296-4v0mzk.j8o4i\\blinky" blinky.ino
  File "C:\Users\my user name\AppData\Local\Arduino15\packages\Seeeduino\hardware\nrf52\1.1.10/tools/uf2conv/uf2_wrap.py", line 5
    def main(uf2_file: str, board_id: str, build_path: str, output_path: str, project_name: str):
                     ^
SyntaxError: invalid syntax

Using library Adafruit TinyUSB Library at version 1.7.0 in folder: C:\Users\my user name\AppData\Local\Arduino15\packages\Seeeduino\hardware\nrf52\1.1.10\libraries\Adafruit_TinyUSB_Arduino 
exit status 1

Compilation error: exit status 1

Вопрос: Как устранить эту синтаксическую ошибку?


, 👍-1

Обсуждение

Поскольку это не ваш код, а код установленного пакета, похоже, возникла проблема совместимости. Вы уверены, что установленные пакеты совместимы с вашей средой Arduino IDE? Вы пробовали версию 1.x этой среды?, @the busybee

Я не пробовал версию 1.x IDE и не хочу. Я ожидал, что всё будет работать сразу, особенно при работе с Adafruit и Arduino. Как проверить совместимость установленного пакета с моей IDE?, @Abdullah Baig

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

Спасибо за ссылку на совместимость. Единственная ссылка на JSON-файл платы на официальном сайте — https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json. Я не нашёл упоминания о версии IDE. Не могли бы вы помочь мне узнать, совместим ли этот индекс платы с Arduino IDE 2.3.4? Или, если возможно, подскажите мне документацию по другой плате, где, как вам известно, указана совместимая версия IDE, чтобы я мог посмотреть информацию и для этой платы., @Abdullah Baig


1 ответ


1

Обновите установленный в вашей системе интерпретатор Python.
Рассмотрите возможность удаления имеющихся у вас дополнительных версий.
Убедитесь, что обновленный файл находится в указанном вами пути.


Некоторые (но не все) пакеты инструментов для Arduino содержат копию интерпретатора Python и используют её при необходимости. Текущая версия инструментов Seeedstudio к ним не относится. Она зависит от наличия совместимой установленной в системе версии Python в вашем пути. Для сравнения, вот пакет платы Earle Philhower RP2040 ссылается на собственную встроенную копию Python в каталогах инструментов.

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

Этот синтаксис подсказки типа не поддерживался интерпретатором Python до версии 3.5. По всей видимости, у вас старый интерпретатор, иначе вы бы увидели другую ошибку о невозможности выполнить Python. На момент написания статьи текущая версия — 3.13.x, и она должна работать нормально.


Другой вариант: изменение platform.txt

В комментарии автор оригинального сообщения упомянул, что Python преобразуется в Python2, и изменение этого значения может привести к сбоям в работе другого установленного программного обеспечения. В таких случаях можно попробовать изменить файл platform.txt в пакете boards в каталоге arduino15. Возможно, это не лучший вариант, но это возможно, если внести изменения в соответствующее программное обеспечение Arduino.

Для плат Seeeduino версии 1.1.10 пакет platfrom.txt можно найти по адресу <arduino15>/packages/Seeeduino/hardware/nrf52/1.1.10/platform.txt.

Вам потребуется изменить строку recipe.objcopy.uf2.pattern=python .... Если python3 разрешается в достаточно новый интерпретатор Python3, то достаточно добавить 3 в эту строку. Например:

recipe.objcopy.uf2.pattern=python3 "{runtime.platform.path}/tools/uf2conv/uf2_wrap.py" "{runtime.platform.path}/tools/uf2conv/uf2conv.py" "{build.board}" "{build.path}" "{build.source.path}" "{build.project_name}"

В противном случае вам, возможно, придётся указать абсолютный путь к интерпретатору Python3 или к собственному скрипту для настройки корректной среды и т. д. Те же приёмы можно применять к любым другим инструментам, указанным в пакетах boards. Имейте в виду, что обновление или переустановка пакета Seeeduino отменит это изменение.

,

У меня уже установлен Python. Командная строка открывает версию 2.7, когда я пишу «python». Python 3.10 установлен на компьютере, я вижу его в списке установленных программ, но могу запустить только из папки установки. Командная строка не распознаёт «python3». Папка установки Python 3.10 уже добавлена в переменную Path во время установки, и я могу проверить это по переменным окружения. У меня также установлена Anaconda. Она запускает Python 3.10, когда я ввожу «python» в командной строке Anaconda., @Abdullah Baig

Как бы вы посоветовали мне обновить установленный в системе интерпретатор Python? Я установил только Python 3.10, пытаясь решить эту проблему, но Python 2.7 был установлен ранее какой-то программой на моём компьютере, и я не хочу его ломать. Я использую Anaconda для редактирования и запуска скриптов Python, поэтому хочу оставить и её., @Abdullah Baig

Arduino IDE в сочетании с пакетом платы Seeeduino не требует от Python разрешения имени предпочитаемой версии. Вы уже явно не соответствуете требованиям Arduino. Если хотите убедиться, что всё делаете правильно, откройте командную строку и измените переменную PATH в ней так, чтобы «python» отображался в вашей версии Python 3.10. Затем запустите Arduino IDE из этой командной строки, чтобы процесс IDE унаследовал правильный PATH. Убедитесь, что всё работает. Возможно, я изменю ответ, предложив отредактировать platform.txt для указания конкретного интерпретатора., @timemage

Я уже добавил python 3 в переменную path, как и говорил в первом комментарии к этому ответу. Но "python" в CMD по-прежнему указывает на версию 2.7, а "python3" CMD не распознаётся., @Abdullah Baig

Спасибо за предложение изменить platform.txt, но мне всё ещё некомфортно копаться в файлах, управляемых IDE. Это вполне может сломать что-нибудь ещё в моих библиотеках или платах. Нужно ли всем, кто использует платы Xiao, изменять platform.txt в соответствии с установленным Python, или иногда всё работает сразу?, @Abdullah Baig

@pakieng Судя по всему, вы не изменили PATH таким образом, чтобы Python 3 стал версией по умолчанию. Пожалуйста, сделайте это, как советовали. Как указано в ответе, инструмент Seeedstudio требует Python версии не ниже 3.5, и каждый пользователь должен выполнить это требование., @the busybee