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()