MicroPython:Основы/Язык MicroPython и его реализация/Инструмент pyboard.py: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 43: | Строка 43: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Запуск команды на устройстве | == Запуск команды на устройстве == | ||
Это может быть полезным для тестирования коротких фрагментов кода или заскриптовать взаимодействие с устройством: | Это может быть полезным для тестирования коротких фрагментов кода или заскриптовать взаимодействие с устройством: | ||
<syntaxhighlight lang="bash" enclose="div"> | |||
$ pyboard.py --device /dev/ttyACM0 -c 'print(1+1)' | $ pyboard.py --device /dev/ttyACM0 -c 'print(1+1)' | ||
2 | 2 | ||
</syntaxhighlight> | |||
Если вы часто взаимодействуете с одним и тем же устройством, то можете воспользоваться переменной окружения PYBOARD_DEVICE в качестве альтернативы опции --device. К примеру, фрагмент ниже эквивалентен примеру выше: | Если вы часто взаимодействуете с одним и тем же устройством, то можете воспользоваться переменной окружения PYBOARD_DEVICE в качестве альтернативы опции --device. К примеру, фрагмент ниже эквивалентен примеру выше: | ||
<syntaxhighlight lang="bash" enclose="div"> | |||
$ export PYBOARD_DEVICE=/dev/ttyACM0 | $ export PYBOARD_DEVICE=/dev/ttyACM0 | ||
$ pyboard.py -c 'print(1+1)' | $ pyboard.py -c 'print(1+1)' | ||
</syntaxhighlight> | |||
Аналогично переменную окружения PYBOARD_BAUDRATE можно использовать, чтобы задать значение по умолчанию для опции --baudrate. | Аналогично переменную окружения PYBOARD_BAUDRATE можно использовать, чтобы задать значение по умолчанию для опции --baudrate. | ||
Запуск скрипта на устройстве | |||
== Запуск скрипта на устройстве == | |||
Если у вас есть скрипт app.py, который вы хотите запустить на своем устройстве, выполните следующее: | Если у вас есть скрипт app.py, который вы хотите запустить на своем устройстве, выполните следующее: | ||
<syntaxhighlight lang="bash" enclose="div"> | |||
$ pyboard.py --device /dev/ttyACM0 app.py | $ pyboard.py --device /dev/ttyACM0 app.py | ||
</syntaxhighlight> | |||
Это не скопирует app.py в файловую систему устройства, а лишь загрузит код в RAM-память и выполнит его. Кроме того, вам будет показан любой результат, сгенерированный программой. | Это не скопирует app.py в файловую систему устройства, а лишь загрузит код в RAM-память и выполнит его. Кроме того, вам будет показан любой результат, сгенерированный программой. | ||
Если программа app.py не закончит работать, тогда вам надо будет остановить pyboard.py – например, при помощи Ctrl+C. Программа app.py продолжит работать на MicroPython-устройстве. | Если программа app.py не закончит работать, тогда вам надо будет остановить pyboard.py – например, при помощи Ctrl+C. Программа app.py продолжит работать на MicroPython-устройстве. | ||
Доступ к файловой системе | |||
== Доступ к файловой системе == | |||
При помощи флага -f вы можете использовать следующие операции файловой системы: | При помощи флага -f вы можете использовать следующие операции файловой системы: | ||
* cp src [src...] dest – копирование файлов на/с устройства | * cp src [src...] dest – копирование файлов на/с устройства | ||
Строка 64: | Строка 82: | ||
* mkdir path – создание директории | * mkdir path – создание директории | ||
* rmdir path – удаление директории | * rmdir path – удаление директории | ||
Для обращения к локальным и внешним файлам команда cp использует условные обозначения, используемые в работе с SSH. Любой путь, начинающийся с «:», будет интерпретирован как путь, начинающийся на устройстве; в противном случае он будет считаться локальным. Таким образом… | Для обращения к локальным и внешним файлам команда cp использует условные обозначения, используемые в работе с SSH. Любой путь, начинающийся с «:», будет интерпретирован как путь, начинающийся на устройстве; в противном случае он будет считаться локальным. Таким образом… | ||
<syntaxhighlight lang="bash" enclose="div"> | |||
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :main.py | $ pyboard.py --device /dev/ttyACM0 -f cp main.py :main.py | ||
</syntaxhighlight> | |||
…скопирует main.py из текущей директории ПК в файл под названием main.py на устройстве. Название файла можно опустить. Например… | …скопирует main.py из текущей директории ПК в файл под названием main.py на устройстве. Название файла можно опустить. Например… | ||
<syntaxhighlight lang="bash" enclose="div"> | |||
$ pyboard.py --device /dev/ttyACM0 -f cp main.py : | $ pyboard.py --device /dev/ttyACM0 -f cp main.py : | ||
</syntaxhighlight> | |||
…будет эквивалентно примеру выше. | …будет эквивалентно примеру выше. | ||
Еще несколько примеров: | Еще несколько примеров: | ||
<syntaxhighlight lang="bash" enclose="div"> | |||
# Копируем «main.py» с устройства на локальный ПК: | # Копируем «main.py» с устройства на локальный ПК: | ||
$ pyboard.py --device /dev/ttyACM0 -f cp :main.py main.py | $ pyboard.py --device /dev/ttyACM0 -f cp :main.py main.py | ||
Строка 85: | Строка 115: | ||
$ pyboard.py --device /dev/ttyACM0 -f cat boot.py | $ pyboard.py --device /dev/ttyACM0 -f cat boot.py | ||
...contents of boot.py... | ...contents of boot.py... | ||
Использование библиотеки «pyboard» | </syntaxhighlight> | ||
== Использование библиотеки «pyboard» == | |||
Вы также можете воспользоваться библиотекой pyboard.py для создания скриптов взаимодействия с MicroPython-платой: | Вы также можете воспользоваться библиотекой pyboard.py для создания скриптов взаимодействия с MicroPython-платой: | ||
<syntaxhighlight lang="python" enclose="div"> | |||
import pyboard | import pyboard | ||
pyb = pyboard.Pyboard('/dev/ttyACM0', 115200) | pyb = pyboard.Pyboard('/dev/ttyACM0', 115200) | ||
Строка 93: | Строка 128: | ||
print(ret) | print(ret) | ||
pyb.exit_raw_repl() | pyb.exit_raw_repl() | ||
</syntaxhighlight> | |||
<syntaxhighlight | |||
=См.также= | =См.также= |
Версия от 18:46, 21 августа 2020
Инструмент pyboard.py[1]
Это внешний Python-инструмент, который запускается на ПК и служит следующим целям:
- Позволяет быстро запустить Python-скрипт или команду на MicroPython-устройстве. Это полезно при разработке MicroPython-программ, т.к. позволяет быстро протестировать код без необходимости копировать файлы на/с устройства.
- Позволяет получить доступ к файловой системе на устройстве. Благодаря этому вы можете установить свой код на устройство (даже если ваша плата не поддерживает использование USB-накопителей).
Несмотря на название, pyboard.py работает на всех MicroPython-портах, поддерживающих режим удаленного скрипта REPL (включая STM32, ESP32, ESP8266 и NRF).
Самую последнюю версию pyboard.py можно загрузить на GitHub. Единственная зависимость – это библиотека pyserial, которую можно установить из PiPy или при помощи менеджера пакетов.
Запуск pyboard.py –help даст вот такой результат:
usage: pyboard [-h] [-d DEVICE] [-b BAUDRATE] [-u USER] [-p PASSWORD]
[-c COMMAND] [-w WAIT] [--follow | --no-follow] [-f]
[files [files ...]]
Run scripts on the pyboard.
positional arguments:
files input files
optional arguments:
-h, --help show this help message and exit
-d DEVICE, --device DEVICE
the serial device or the IP address of the pyboard
-b BAUDRATE, --baudrate BAUDRATE
the baud rate of the serial device
-u USER, --user USER the telnet login username
-p PASSWORD, --password PASSWORD
the telnet login password
-c COMMAND, --command COMMAND
program passed in as string
-w WAIT, --wait WAIT seconds to wait for USB connected board to become
available
--follow follow the output after running the scripts
[default if no scripts given]
-f, --filesystem perform a filesystem action
Запуск команды на устройстве
Это может быть полезным для тестирования коротких фрагментов кода или заскриптовать взаимодействие с устройством:
$ pyboard.py --device /dev/ttyACM0 -c 'print(1+1)'
2
Если вы часто взаимодействуете с одним и тем же устройством, то можете воспользоваться переменной окружения PYBOARD_DEVICE в качестве альтернативы опции --device. К примеру, фрагмент ниже эквивалентен примеру выше:
$ export PYBOARD_DEVICE=/dev/ttyACM0
$ pyboard.py -c 'print(1+1)'
Аналогично переменную окружения PYBOARD_BAUDRATE можно использовать, чтобы задать значение по умолчанию для опции --baudrate.
Запуск скрипта на устройстве
Если у вас есть скрипт app.py, который вы хотите запустить на своем устройстве, выполните следующее:
$ pyboard.py --device /dev/ttyACM0 app.py
Это не скопирует app.py в файловую систему устройства, а лишь загрузит код в RAM-память и выполнит его. Кроме того, вам будет показан любой результат, сгенерированный программой.
Если программа app.py не закончит работать, тогда вам надо будет остановить pyboard.py – например, при помощи Ctrl+C. Программа app.py продолжит работать на MicroPython-устройстве.
Доступ к файловой системе
При помощи флага -f вы можете использовать следующие операции файловой системы:
- cp src [src...] dest – копирование файлов на/с устройства
- cat path – печать содержимого файла на устройство
- ls [path] – вывод списка содержимого директории (по умолчанию – текущей рабочей директории)
- rm path – удаление файла
- mkdir path – создание директории
- rmdir path – удаление директории
Для обращения к локальным и внешним файлам команда cp использует условные обозначения, используемые в работе с SSH. Любой путь, начинающийся с «:», будет интерпретирован как путь, начинающийся на устройстве; в противном случае он будет считаться локальным. Таким образом…
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :main.py
…скопирует main.py из текущей директории ПК в файл под названием main.py на устройстве. Название файла можно опустить. Например…
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :
…будет эквивалентно примеру выше.
Еще несколько примеров:
# Копируем «main.py» с устройства на локальный ПК:
$ pyboard.py --device /dev/ttyACM0 -f cp :main.py main.py
# То же самое, но с помощью точки:
$ pyboard.py --device /dev/ttyACM0 -f cp :main.py .
# Копируем три файла на устройство, с сохранением названий и путей
# (примечание: на устройстве должна быть «lib»):
$ pyboard.py --device /dev/ttyACM0 -f cp main.py app.py lib/foo.py :
# Удаляем файл с устройства:
$ pyboard.py --device /dev/ttyACM0 -f rm util.py
# Печатаем содержимое файла на устройство:
$ pyboard.py --device /dev/ttyACM0 -f cat boot.py
...contents of boot.py...
Использование библиотеки «pyboard»
Вы также можете воспользоваться библиотекой pyboard.py для создания скриптов взаимодействия с MicroPython-платой:
import pyboard
pyb = pyboard.Pyboard('/dev/ttyACM0', 115200)
pyb.enter_raw_repl()
ret = pyb.exec('print(1+1)')
print(ret)
pyb.exit_raw_repl()