测试在MicroPython中对于main.py进行修改
2021/11/7 22:12:49
本文主要是介绍测试在MicroPython中对于main.py进行修改,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简 介: 编写了python脚本程序,它可以自动生成MicroPython内部执行程序,借助于STM32-BOOTLOADER通过REPL发送MicroPython, 由MicroPython完成对SD卡中的main.py文件进行清空或者更新。这需要原来的main.py能够退回到REPL,与STM32-BOOTLOADER配合下载程序。否则需要通过USB SD卡读写器完成对于SD卡中的main.py的修改。
关键词
: MicroPython,MM32F3277,mainpy
§01 MicroPython执行main.py
一、MicroPython启动过程
在 设计带有SD卡的 MM32F3277 MicroPython 实验板 测试了带有SD卡的 MM32F3277 MicroPython实验板。该电路移植MicroPython来自于MindMotion 苏勇(2021-11-5版本),在上电后确认SDIO端口是否连接有SD卡(现在这个版本需要SD卡的容量大于 4Gb),并检测其中是否具有main.py文件。如果找到main.py, 则开始执行main.py。
对于SD卡main.py的文件,往往需要另外SD卡读写器有计算机写入和删除。下面测试是否可以借助于MicroPython软件完成对于main.py的修改与存储过程。
▲ 图1.1.1 读写SD卡USB接插口
二、删除main.py
在现在的版本中,并没有直接支持对于SD卡中文件删除的指令。不过可以借助写入功能,将原有的main.py的文件进行清空。
1、测试起始条件
首先,使用SD卡USB读写器,在SD卡中写入一个测试main.py程序。
from machine import Pin import utime for _ in range(10): print(_) utime.sleep_ms(100)
测试电路在上点之后,会先执行main.py,在显示10个数字之后,退到REPL状态。
[Y] sdcard ready. [Y] file system on sdcard ready. [Y] run the main.py on disk ... 0 1 2 3 4 5 6 7 8 9 [Y] done. 1 MicroPython v1.16 on 2021-11-05; MB_F3270 with MM32F3277G7P >>>
2、清空main.py
编写测试程序对于SD 卡中的main.py进行清空。
(1)清空代码
from machine import Pin import utime with open('main.py', 'w') as f: f.write('')
(2)执行过程
Reset MicroPython... Wait for MicroPython coming back... Download MicroPython : 22 lines/507 characters. Begin to download program... ------------------------------------------------------------------------- 0 >>>
(3)检查清空效果
上电执行,下面是显示信息。可以看到,此时MicroPython
虽然检测到main.py
的存在,但由于main.py
是空文件,所以直接返回到 REPL .
[Y] sdcard ready. [Y] file system on sdcard ready. [Y] run the main.py on disk ... [Y] done. 1 MicroPython v1.16 on 2021-11-05; MB_F3270 with MM32F3277G7P >>>
三、写入main.py
将文件写入SD卡中的main.py,需要将待写入的程序编程一个可以执行的程序,吧main.py程序作MicroPython打开main.py之后需要写入的参数。
1、待写入测试main.py
下面是需要在SD卡写入的main.py 代码。
from machine import Pin import utime for _ in range(10): print(_) utime.sleep_ms(100)
2、Python命令
编写Python脚本程序 pymain.py。它的功能:
- 根据是否带有参数确定是生成清空main.py的执行程序,还是将当前编辑窗口程序写入SD卡main.py;
- 生成MicroPython执行代码;
- 拷贝到clipboard,往STM32-Bootloader发送"MPDLD"命令,由STM32-BOOTLOADER通过REPL送到MicroPython, 由其完成清空main.py,或者将程序写入main.py.
(1)pymain.py代码
#!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # PYMAIN.PY -- by Dr. ZhuoQing 2021-11-07 # # Note: #============================================================ from head import * from tsmodule.tsstm32 import * #------------------------------------------------------------ pastestr = '' if len(sys.argv) == 1: tspcopyclipboard() pastestr = clipboard.paste().replace('\r', '').replace('\n', '\\n') writestr = 'with open("main.py", "w") as f:\n f.write("%s")\n\n'%pastestr clipboard.copy(writestr) stm32cmd("MPDLD") tspfocuswindow("TEASOFT:1") printf('\a') #------------------------------------------------------------ # END OF FILE : PYMAIN.PY #============================================================
(2)功能测试
使用TEASOFT编辑下载的main.py程序,执行下面pymain程序。
➤Ⅰ.清除main.py
- 发送命令: pymain +
➤Ⅱ.写入main.py
- 发送命令: pymain (无参数)
经过测试,上面过程满足设计功能。
四、存在问题
完成上面功能,需要MicroPython 能把返回REPL才行。如果原来main.py是一个死循环,无法有外部的条件退回到REPL,那么上述程序无法完成工作。只能通过USB SD读写器完成对于main.py的清除。
※ 测试总结 ※
编写了python脚本程序,它可以自动生成MicroPython内部执行程序,借助于STM32-BOOTLOADER通过REPL发送MicroPython, 由MicroPython完成对SD卡中的main.py文件进行清空或者更新。
这需要原来的main.py能够退回到REPL,与STM32-BOOTLOADER配合下载程序。否则需要通过USB SD卡读写器完成对于SD卡中的main.py的修改。
一、完整的pymain.py程序
#!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # PYMAIN.PY -- by Dr. ZhuoQing 2021-11-07 # # Usage: # pymain * # Clear main.py content # pymain # Write the current edit file into micropython main.py # # Note: #============================================================ from head import * from tsmodule.tsstm32 import * #------------------------------------------------------------ pastestr = '' if len(sys.argv) == 1: tspcopyclipboard() pastestr = clipboard.paste().replace('\r', '').replace('\n', '\\n') printf("Write the main.py code.") else: printf("Clear MicroPython main.py.") writestr = 'with open("main.py", "w") as f:\n f.write("%s")\n\n'%pastestr clipboard.copy(writestr) stm32cmd("MPDLD") tspfocuswindow("TEASOFT:1") printf('\a') #------------------------------------------------------------ # END OF FILE : PYMAIN.PY #============================================================
■ 相关文献链接:
- 设计带有SD卡的 MM32F3277 MicroPython 实验板
● 相关图表链接:
- 图1.1.1 读写SD卡USB接插口
这篇关于测试在MicroPython中对于main.py进行修改的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型