同步操作将从 Walkline/A Batch Tool 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
AMPY Batch Tool 简称ab
,可以批量将项目中指定的文件夹或文件上传到MicroPython
开发板
使用MicroPython
写代码玩板子的时候我遇到过一些看似可以忍受但内心不停在咆哮的痛点问题
比如最早使用PyCharm
写代码,遇到的问题是上传文件太慢,这个是看似可以忍受的,但不能忍的是经常性的出现上传失败的问题,放弃
后来使用过rshell-lite
,纯命令行工具,不支持批量文件和文件夹上传,这对只写单文件项目的人来说问题不大,不过我喜欢把项目文件分类保存,放弃
现在使用VS Code
+RT-Thread
插件,这个插件支持文件夹上传了,但速度依然很慢,而且不支持排除文件、文件夹
功能,但最大的问题是它会在后台不停的运行一个串口检测程序,浪费内存可以忍,不能忍的是当打开第二个VS Code
窗口的时候,前一个已经连接的串口会被强迫断开,而且作者已经停更了,这个不放弃,改改脚本还可以当做代码补全工具使用
上面说到上传速度慢的问题,归根结底是因为它们上传文件的模式有问题,大概流程是这样的:
所以问题就出现在不停打开关闭串口上了,要解决问题也很简单,使用 pyboard.py 替代ampy
工具,然后:
简单粗暴,有效果!
# 安装
$ pip install ampy-batch-tool
# 更新
$ pip install --upgrade ampy-batch-tool
首先克隆或下载项目源文件压缩包并解压缩,然后进入项目文件夹运行命令
$ python setup.py install
# for local develop
$ pip install -e .
在你的项目文件夹下新建abconfig
配置文件(ab
工具默认查找该配置文件,也可以手动指定其它文件)
配置文件中填写需要上传的文件夹或文件,每行一个,例如:
drivers/
!test.py
main.py
!services/
not_exists/
#services/websocket.py
# .git/
以
#
号开头的行:上传时排除的文件夹或文件以
!
号开头的行:在repl
模式下上传文件后立即运行该文件
在需要上传项目文件的时候执行如下命令即可
$ ab
# 或
$ ab abconfig
如果找不到或者未手动指定配置文件,则显示使用说明
完整输出内容
Port List:
[1] COM8 - Silicon Labs CP210x USB to UART Bridge (COM8)
[2] COM1 - 通信端口 (COM1)
Choose a port: 1
File List (3):
- drivers/button.py
- services/mqtt.py
- main.py
Dir List (3)
- drivers
- drivers/others
- services
Not Found List (1)
- not_exists
Making dirs on board...
- drivers exist
- drivers/others exist
- services exist
Upload files to board...
- uploading drivers/button.py (1/3)
- uploading services/mqtt.py (2/3)
- uploading main.py (3/3)
Upload Finished
$ ab --repl # --replcdc // for usb cdc visual serial port
Port List:
[1] COM3 - Silicon Labs CP210x USB to UART Bridge (COM3)
[2] COM1 - 通信端口 (COM1)
Choose a port: 1
Miniterm for MicroPython REPL
Ctrl-Z - Quit
Ctrl-N - Help
Ctrl-X - Kill main.py
Ctrl-Y - Serial Info
Ctrl-L - Run last file
Ctrl-R - Run local file
Ctrl-T - Run board file
Ctrl-G - Run clipboard code
Ctrl-U - Upload files to board
>>> help()
Welcome to MicroPython on the ESP32!
For generic online docs please visit http://docs.micropython.org/
>>>
repl
模式快捷键repl
main.py
文件repl
中main.py
文件有些时候由于在代码中写入死循环,导致无法删除或者重新上传文件的情况,可以尝试使用这个功能,快捷键为:Ctrl + X
.py
文件快捷键为:Ctrl + R
>>> Run local file
[1] upload_to_pypi.py
[2] setup.py
[3] local.py
[4] ab\__main__.py
[5] ab\__init__.py
[6] ab\pyboard.py
[7] ab\miniterm.py
Choose a file: 3
boot.py - FILE
client - PATH
drivers - PATH
onboard.py - FILE
this is a local py file
>>>
.py
文件也就是运行开发板上的文件,快捷键为:Ctrl + T
>>>
Run onboard file
[1] /boot.py
[2] /drivers/ssd1306.py
[3] /onboard.py
Choose a file: 3
this is a onboard py file
>>>
快捷键为:Ctrl + G
需要注意复制的代码段的缩进
>>> Run clipboard code
HZK Info: //client/combined.bin
file size : 303520
font height : 16
data size : 32
scan mode : Horizontal
byte order : LSB
characters : 8932
slave id: 60
>>>
快捷键为:Ctrl + L
注意:只能重新运行上一次的
本地文件
和使用快捷键 Ctrl + U 上传并运行的远程文件
因为开发板上文件的运行方式不同,所以暂不支持一键重新运行
省去每次上传文件都要退出repl
模式的麻烦,快捷键为:Ctrl + U
上传时会查找根目录下以
abc
开头的文件作为配置文件
要烧录固件,可以使用如下命令并根据提示操作:
每个选择列表中第一项为默认值,可使用回车直接选择
$ ab --flash
An esptool shell
Port List:
[1] COM3 - Silicon Labs CP210x USB to UART Bridge (COM3)
Choose an option:
Chip List:
[1] auto
[2] esp8266
[3] esp32
[4] esp32c3
[5] esp32s2
[6] esp32s3
[7] esp32c2
[8] esp32c6
[9] esp32s3beta2
[10] esp32c6beta
[11] esp32h2beta1
[12] esp32h2beta2
Choose an option:
Address List:
[1] 0x1000
[2] 0x0 - for esp32c3, esp32s3
Choose an option:
Firmware List:
[1] wh_esp32_espnow_v1.17_20210912.bin
Choose an option:
-h
:显示使用说明-m
:使用minify
工具压缩代码(功能未实现)-q
:屏蔽操作过程中的相关提示-s
:模拟操作过程,不实际上传文件--repl
:进入repl
模式--replcdc
:进入虚拟串口repl
模式--flash
:使用esptool
烧录固件--readme
:在网页中显示使用说明ampy
工具新建文件夹的时候如果文件夹已存在,则会抛出异常且无法捕捉raw_repl
模式的问题,重新运行一次即可解决repl
模式下无法输入的问题,重启开发板即可解决repl
模式下上传文件也许会出现文件不完整的问题,尝试重新上传可以解决esptool
的信息,卸载后重新安装一次即可v0.7.13
:精简代码
v0.7.12
:
USB CDC
模式下快捷键Ctrl + X无法正常复位的问题USB CDC
模式下运行本地文件串口卡死的问题v0.7.11
:
MicroPython
最新固件不需要--replcdc
参数也可以正常调试了v0.7.10
:新增--replcdc
参数,可用于虚拟串口调试
v0.7.9
:修复串口号过滤错误
v0.7.8
:修复串口号过滤错误,增加对esptool
工具的版本要求
v0.7.7
:烧录固件工具串口列表过滤掉COM1
v0.7.6
:修复串口列表过滤逻辑错误
v0.7.5
:一键删除main.py
文件后执行硬重启,串口列表过滤掉COM1
v0.7.4
:repl
模式使用回车键选择第一个端口
v0.7.3
:修复v0.7.2
的 bug,无语。。。。
v0.7.2
:修改运行esptool.py
为esptool
。。。。
v0.7.1
:修改运行esptool
为esptool.py
v0.7
:新增--flash
参数,使用esptool
烧录固件
v0.6.2
:再次尝试修复v0.6.1
的问题,应该是串口写入等待时间不够,只能增加延时
v0.6.1
:修复repl
模式下上传文件不完整和不能运行文件的问题
v0.6
:增加在repl
模式下直接上传文件的功能
v0.5
:
repl
模式下的快捷键repl
模式增加运行本地文件功能repl
模式增加运行远程文件功能repl
模式提示内容v0.4.2
:repl
模式增加一键删除main.py
文件功能
v0.4.1
:repl
模式增加粘贴代码功能
v0.4
:增加进入repl
模式菜单和相关功能
v0.3.2
:修复由于v0.3.1
导致的分隔路径错误问题
v0.3.1
:修复上传文件时字符转义的问题
v0.3
:
enter_raw_repl()
中增加延时,尝试解决已知问题2
v0.2.2
:修复某些开发板不能读取串口数据的问题(如安信可 ESP32C3 系列开发板
)
v0.2.1
:修复导入模块路径问题
v0.2
:
ampy
以提升文件上传效率,并解决已知问题 1
v0.1.1
:尝试上传到 PyPI
v0.1
:完成基本功能
repl
快捷键汇总排除掉MicroPython
已经使用的,以及与各种编辑器和终端发生冲突的,而且只能使用字母键,所以实际可用的按键其实并不多,凑合选择了一组,就是现在使用的这些
# 不可用的
Ctrl +:
A - raw repl mode
B - soft reset / exit raw repl
C - interrupt run / cancel paste mode
D - soft reset / finish paste mode
E - paste mode
I - list imported modules
J, M - enter key
P - up key
V - mostly paste
# 之前使用的
Ctrl +:
L - show serial port info
O - show help
R - run local pyfile
T - run onboard pyfile
U - run code in clipboard
] - quit
[ - delete onboard file main.py
# 现在使用的
Ctrl +:
Z - quit
X - delete onboard file main.py
N - show help
Y - show serial port info
L - run last pyfile (local / onboard)
R - run local pyfile
T - run onboard pyfile
G - run code in clipboard
U - upload files to board
# 可用的 (闲置的)
Ctrl +:
F - vsc 冲突
H - bs 冲突
K - vsc 冲突
Q - vsc 冲突
S - vsc 冲突
W - cmder 冲突
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。