MicroPython:Основы/Язык MicroPython и его реализация/Инструмент pyboard.py: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
(не показаны 2 промежуточные версии 1 участника)
Строка 5: Строка 5:
=Инструмент pyboard.py<ref>[http://docs.micropython.org/en/latest/reference/pyboard.py.html docs.micropython.org - The pyboard.py tool]</ref>=
=Инструмент pyboard.py<ref>[http://docs.micropython.org/en/latest/reference/pyboard.py.html docs.micropython.org - The pyboard.py tool]</ref>=


Это внешний Python-инструмент, который запускается на ПК и служит следующим целям:
Это внешний [[Python]]-инструмент, который запускается на [[ПК]] и служит следующим целям:
* Позволяет быстро запустить Python-скрипт или команду на MicroPython-устройстве. Это полезно при разработке MicroPython-программ, т.к. позволяет быстро протестировать код без необходимости копировать файлы на/с устройства.
* Позволяет быстро запустить [[Python-скрипт]] или команду на [[MicroPython]]-устройстве. Это полезно при разработке [[MicroPython]]-программ, т.к. позволяет быстро протестировать код без необходимости копировать файлы на/с устройства.
* Позволяет получить доступ к файловой системе на устройстве. Благодаря этому вы можете установить свой код на устройство (даже если ваша плата не поддерживает использование USB-накопителей).
* Позволяет получить доступ к файловой системе на устройстве. Благодаря этому вы можете установить свой код на устройство (даже если ваша плата не поддерживает использование USB-накопителей).


Несмотря на название, pyboard.py работает на всех MicroPython-портах, поддерживающих режим удаленного скрипта REPL (включая STM32, ESP32, ESP8266 и NRF).
Несмотря на название, [[pyboard.py]] работает на всех MicroPython-портах, поддерживающих режим удаленного скрипта [[REPL]] (включая [[STM32]], [[ESP32]], [[ESP8266]] и [[NRF]]).


Самую последнюю версию pyboard.py можно загрузить на [https://github.com/micropython/micropython/blob/master/tools/pyboard.py GitHub]. Единственная зависимость – это библиотека pyserial, которую можно установить из PiPy или при помощи менеджера пакетов.
Самую последнюю версию [[pyboard.py]] можно загрузить на [https://github.com/micropython/micropython/blob/master/tools/pyboard.py GitHub]. Единственная зависимость – это библиотека [[pyserial]], которую можно установить из [[PiPy]] или при помощи менеджера пакетов.


Запуск pyboard.py –help даст вот такой результат:
Запуск ''pyboard.py –help'' даст вот такой результат:


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
usage: pyboard [-h] [-d DEVICE] [-b BAUDRATE] [-u USER] [-p PASSWORD]
usage: pyboard [-h] [-d DEVICE] [-b BAUDRATE] [-u USER] [-p PASSWORD]
               [-c COMMAND] [-w WAIT] [--follow | --no-follow] [-f]
               [-c COMMAND] [-w WAIT] [--follow | --no-follow] [-f]
Строка 43: Строка 43:
</syntaxhighlight>
</syntaxhighlight>


Запуск команды на устройстве
== Запуск команды на устройстве ==
 
Это может быть полезным для тестирования коротких фрагментов кода или заскриптовать взаимодействие с устройством:
Это может быть полезным для тестирования коротких фрагментов кода или заскриптовать взаимодействие с устройством:
<syntaxhighlight lang="bash">
$ pyboard.py --device /dev/ttyACM0 -c 'print(1+1)'
$ pyboard.py --device /dev/ttyACM0 -c 'print(1+1)'
2
2
Если вы часто взаимодействуете с одним и тем же устройством, то можете воспользоваться переменной окружения PYBOARD_DEVICE в качестве альтернативы опции --device. К примеру, фрагмент ниже эквивалентен примеру выше:
</syntaxhighlight>
 
Если вы часто взаимодействуете с одним и тем же устройством, то можете воспользоваться переменной окружения '''PYBOARD_DEVICE''' в качестве альтернативы опции ''--device''. К примеру, фрагмент ниже эквивалентен примеру выше:
 
<syntaxhighlight lang="bash">
$ export PYBOARD_DEVICE=/dev/ttyACM0
$ export PYBOARD_DEVICE=/dev/ttyACM0
$ pyboard.py -c 'print(1+1)'
$ pyboard.py -c 'print(1+1)'
Аналогично переменную окружения PYBOARD_BAUDRATE можно использовать, чтобы задать значение по умолчанию для опции --baudrate.
</syntaxhighlight>
Запуск скрипта на устройстве
 
Если у вас есть скрипт app.py, который вы хотите запустить на своем устройстве, выполните следующее:
Аналогично переменную окружения '''PYBOARD_BAUDRATE''' можно использовать, чтобы задать значение по умолчанию для опции ''--baudrate''.
 
== Запуск скрипта на устройстве ==
 
Если у вас есть скрипт ''app.py'', который вы хотите запустить на своем устройстве, выполните следующее:
 
<syntaxhighlight lang="bash">
$ pyboard.py --device /dev/ttyACM0 app.py
$ pyboard.py --device /dev/ttyACM0 app.py
Это не скопирует app.py в файловую систему устройства, а лишь загрузит код в RAM-память и выполнит его. Кроме того, вам будет показан любой результат, сгенерированный программой.
</syntaxhighlight>
Если программа app.py не закончит работать, тогда вам надо будет остановить pyboard.py – например, при помощи Ctrl+C. Программа app.py продолжит работать на MicroPython-устройстве.
 
Доступ к файловой системе
Это не скопирует ''app.py'' в файловую систему устройства, а лишь загрузит код в [[RAM-память]] и выполнит его. Кроме того, вам будет показан любой результат, сгенерированный программой.
При помощи флага -f вы можете использовать следующие операции файловой системы:
 
* cp src [src...] dest – копирование файлов на/с устройства
Если программа ''app.py'' не закончит работать, тогда вам надо будет остановить [[pyboard.py]] – например, при помощи {{клавиша|Ctrl}}+{{клавиша|C}}. Программа ''app.py'' продолжит работать на [[MicroPython]]-устройстве.
* cat path – печать содержимого файла на устройство
 
* ls [path] – вывод списка содержимого директории (по умолчанию – текущей рабочей директории)
== Доступ к файловой системе ==
* rm path – удаление файла  
 
* mkdir path – создание директории
При помощи флага ''-f'' вы можете использовать следующие операции файловой системы:
* rmdir path – удаление директории
* ''cp src [src...] dest'' – копирование файлов на/с устройства
Для обращения к локальным и внешним файлам команда cp использует условные обозначения, используемые в работе с SSH. Любой путь, начинающийся с «:», будет интерпретирован как путь, начинающийся на устройстве; в противном случае он будет считаться локальным. Таким образом…
* ''cat path'' – печать содержимого файла на устройство
* ''ls [path]'' – вывод списка содержимого директории (по умолчанию – текущей рабочей директории)
* ''rm path'' – удаление файла  
* ''mkdir path'' – создание директории
* ''rmdir path'' – удаление директории
 
Для обращения к локальным и внешним файлам команда cp использует условные обозначения, используемые в работе с [[SSH]]. Любой путь, начинающийся с ''«:»'', будет интерпретирован как путь, начинающийся на устройстве; в противном случае он будет считаться локальным. Таким образом…
 
<syntaxhighlight lang="bash">
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :main.py
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :main.py
…скопирует main.py из текущей директории ПК в файл под названием main.py на устройстве. Название файла можно опустить. Например…
</syntaxhighlight>
 
…скопирует ''main.py'' из текущей директории [[ПК]] в файл под названием ''main.py'' на устройстве. Название файла можно опустить. Например…
 
<syntaxhighlight lang="bash">
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :
</syntaxhighlight>
…будет эквивалентно примеру выше.
…будет эквивалентно примеру выше.
Еще несколько примеров:
Еще несколько примеров:
<syntaxhighlight lang="bash">
# Копируем «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.py для создания скриптов взаимодействия с MicroPython-платой:
 
== Использование библиотеки «pyboard» ==
 
Вы также можете воспользоваться библиотекой [[pyboard.py]] для создания скриптов взаимодействия с [[MicroPython-платой]]:
 
<syntaxhighlight lang="python">
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 lang="python" enclose="div">


=См.также=
=См.также=

Текущая версия от 18:17, 14 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Инструмент 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()

См.также

Внешние ссылки