pyboard.py工具

这是一个独立的Python工具,运行在您的PC上,提供了一种方式:

  • 在MicroPython设备上快速运行Python脚本或命令。这在开发MicroPython程序时非常有用,可以快速测试代码而无需将文件复制到设备上或从设备复制文件。

  • 访问设备上的文件系统。这允许您将代码部署到设备(即使板不支持USB MSC)。

尽管名字是 pyboard.py ,但它适用于所有支持原始REPL的MicroPython移植版本(包括STM32, ESP32, ESP8266, NRF)。

你可以从GitHub下载最新版本<https://github.com/micropython/micropython/blob/master/tools/pyboard.py>`_。唯一依赖的是 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: cp local :device | cp
                        :device local | cat path | ls [path] | rm path | mkdir
                        path | rmdir path

在设备上运行命令

这对于测试简短的代码片段或编写与设备交互的脚本非常有用。:

$ 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 标志,支持下列文件系统操作:

  • cat path 打印设备上文件的内容。

  • cp src [src...] dest 将文件复制到设备或从设备复制文件。

  • ls [path] 列出目录的内容(默认为当前工作目录)。

  • mkdir path 创建一个目录。

  • rm path 移除一个文件。

  • rmdir path 删除一个目录。

  • touch path 如果文件不存在,创建一个文件。

cp 命令使用类似 ssh 的约定来引用本地和远程文件。任何以 : 开头的路径都将被解释为在设备上,否则将是本地的。所以:

$ pyboard.py --device /dev/ttyACM0 -f cp main.py :main.py

是否将main.py从PC上的当前目录复制到名为main.py的文件在设备上。文件名可以省略,例如:

$ pyboard.py --device /dev/ttyACM0 -f cp main.py :

等于上面的式子。

一些例子:

# Copy main.py from the device to the local PC.
$ pyboard.py --device /dev/ttyACM0 -f cp :main.py main.py
# Same, but using . instead.
$ pyboard.py --device /dev/ttyACM0 -f cp :main.py .

# Copy three files to the device, keeping their names
# and paths (note: `lib` must exist on the device)
$ pyboard.py --device /dev/ttyACM0 -f cp main.py app.py lib/foo.py :

# Remove a file from the device.
$ pyboard.py --device /dev/ttyACM0 -f rm util.py

# Print the contents of a file on the device.
$ 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()