MicroPython 远程控制: mpremote¶
mpremote
命令行工具提供了一组集成的实用功能,可通过串口连接与 MicroPython 设备进行远程交互和自动化。
通过 pip
安装来使用 mpremote :
$ pip install mpremote
使用此工具的最简单方式,就是不带任何参数地调用它
mpremote
此命令自动检测并连接到第一个可用的串口设备并提供交互式 REPL。串行端口打开时是独占的,因此运行第二个(或第三个等)实例时, mpremote
将连接到后续串行设备(如果有的话)。
命令¶
对于访问 REPL ,通常只需要不带任何参数运行 mpremote
即可。 mpremote
也支持在命令行中给出的附带命令。这些命令可远程在 MicroPython 设备上执行各种操作。
完整的支持命令的列表:
通过设备名简称连接到指定设备:
$ mpremote <device-shortcut>
通过名称连接到指定设备:
$ mpremote connect <device>
<device>
处可以是:list
: 用于列出可用的设备auto
: 连接首个可用的设备id:<serial>:使用 USB 序列号
<serial>
(connect list
命令输出中的第二排)连接到设备port:<path>
: 使用给定的路径连接到设备任意有效的设备名或地址,来连接到设备
断开当前设备的链接:
$ mpremote disconnect
在连接的设备上进入 REPL:
$ mpremote repl [options]
选项:
--capture <file>
, 将 REPL 会话的输出捕获到给定的文件中--inject-code <string>
, 指定在 REPL 中按下 Ctrl-J 时注入的字符--inject-file <strfileing>
, 指定在 REPL 中按下 Ctrl-K 时注入的文件
计算并打印 Python 表达式的结果
$ mpremote eval <string>
执行给定的 Python 代码
$ mpremote exec <string>
从本地文件系统运行脚本
$ mpremote run <file>
在设备上执行文件系统命令
$ mpremote fs <command>
<command>
可以是:cat <file..>
显示设备上一个或多个文件的内容ls
列出当前目录ls <dirs...>
列出给定的目录cp [-r] <src...> <dest>
复制文件;使用 “:” 作为前缀来指定设备上的文件rm <src...>
删除设备上的文件mkdir <dirs...>
在设备上创建目录rmdir <dirs...>
删除设备上的目录
在远程设备上挂载本地目录
$ mpremote mount <local-dir>
可以指定多个命令,它们将按顺序运行。当未明确给出上述命令时,连接和断开将在工具执行的开始和结束时自动完成。自动连接特性将搜索第一个可用的串行设备。如果未指定任何操作,则将进入 REPL。
快捷方式¶
快捷方式可以使用宏系统定义。内置的快捷方式有:
devs
: 列出所有可用设备 (即connect list
的快捷方式)a0
,a1
,a2
,a3
: 连接到 /dev/ttyACM?u0
,u1
,u2
,u3
: 连接到 /dev/ttyUSB?c0
,c1
,c2
,c3
: 连接到 COM?cat
,ls
,cp
,rm
,mkdir
,rmdir
,df
: 文件系统命令reset
: 软复位设备bootloader
: 使设备进入其引导加载程序
用户定义的快捷方式,像所有用户配置一样,都可以在文件中 .config/mpremote/config.py
修改替换。例如:
commands = {
"c33": "connect id:334D335C3138",
"bl": "bootloader",
"double x=4": "eval x*2", # x is an argument, with default 4
"wl_scan": ["exec", """
import network
wl = network.WLAN()
wl.active(1)
for ap in wl.scan():
print(ap)
""",],
"test": ["mount", ".", "exec", "import test"],
}
示例¶
mpremote
mpremote a1
mpremote connect /dev/ttyUSB0 repl
mpremote ls
mpremote a1 ls
mpremote exec "import micropython; micropython.mem_info()"
mpremote eval 1/2 eval 3/4
mpremote mount .
mpremote mount . exec "import local_script"
mpremote ls
mpremote cat boot.py
mpremote cp :main.py .
mpremote cp main.py :
mpremote cp -r dir/ :