pyboard.py 工具

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

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

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

尽管名称如此,但 pyboard.py 适用于所有支持原始 REPL 的 MicroPython 端口(包括 STM32、ESP32、ESP8266、NRF)。

您可以从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: 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 标志,支持以下文件系统操作:

  • cp src [src...] dest向/从设备复制文件。

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

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

  • rm path删除文件。

  • mkdir path创建目录。

  • rmdir path 删除目录。

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

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

将 PC 上当前目录中的 main.py 复制到设备上名为 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()