发布时间:2026/7/24 20:39:30
microPython搭建webServer--(一)使用microdot库实现基本页面显示 1. 准备工作硬件esp32s3软件MicroPython v1.24.1使用thonny编程。microdot库可以到github或者gitee下载只需要microdot.py就可以了。2. 热点将esp32作为热点手机连接该热点后访问默认页面importnetwork# 创建一个WLAN对象并将其设置为AP模式接入点模式apnetwork.WLAN(network.AP_IF)ap.active(True)# 配置接入点的参数包括SSID网络名称和密码ap.config(essidMyESP32AP,passwordpassword123)# 打印接入点的IP地址print(AP IP address:,ap.ifconfig())先运行一下这段代码顺利的话可以显示当前状态。AP IP address:(192.168.4.1,255.255.255.0,192.168.4.1,0.0.0.0)3. 第一个网页将microdot.py传到开发板根目录运行如下代码frommicrodotimportMicrodotimportnetwork# 创建一个WLAN对象并将其设置为AP模式接入点模式apnetwork.WLAN(network.AP_IF)ap.active(True)# 配置接入点的参数包括SSID网络名称和密码ap.config(essidMyESP32AP,passwordpassword123)# 打印接入点的IP地址print(AP IP address:,ap.ifconfig())appMicrodot()html!DOCTYPE html html head titleMicrodot GPIO Example/title meta charsetUTF-8 /head body h1Microdot Example/h1 /body /html app.route(/,methods[GET,POST])asyncdefhello(request):returnhtml,200,{Content-Type:text/html}app.run(host192.168.4.1,debugTrue)thonny中应该显示如下AP IP address:(192.168.4.1,255.255.255.0,192.168.4.1,0.0.0.0)Startingasyncserver on192.168.4.1:5000...此时用手机连接“MyESP32AP”热点用浏览器访问http://192.168.4.1:5000显示出网页。通过上面的代码可以看到使用microdot就是简单的四步1、定义一个对象app2、定义网页内容字符串变量html如果有简易的js代码也直接写在html中。3、定义装饰器响应浏览器访问web的请求示例中就是将html字符串发送给浏览器。4、运行app停止app使用app.shutdown()4. 发送文件运行以下代码允许浏览器访问webServer下面的所有文件importnetwork# 创建一个WLAN对象并将其设置为AP模式接入点模式apnetwork.WLAN(network.AP_IF)ap.active(True)# 配置接入点的参数包括SSID网络名称和密码ap.config(essidMyESP32AP,passwordpassword123)# 打印接入点的IP地址print(AP IP address:,ap.ifconfig())frommicrodotimportMicrodot,send_file appMicrodot()app.route(/)asyncdefindex(request):returnsend_file(index.html)app.route(/path:path)asyncdefstatic(request,path):returnsend_file(path)app.run(debugTrue)这段代码有两个装饰器一个是当路由到根目录时使用send_file送出index.html文件另一个是访问具体的path时使用send_file送出任意文件。当然从服务器的安全性考虑一个webServer允许访问所有文件显然是不对的可以增加一个安全策略比如只send指定目录、指定扩展名的文档。5. 访问webServer中的所有文件importos allFiles[]deflist_files(directory):#遍历出所有文件,存入allFiles数组中try:filesos.listdir(directory)forfileinfiles:pathdirectory/fileifos.stat(path)[0]0x4000:# 判断是否为目录print(Directory: ,path)list_files(path)# 递归遍历子目录else:#print(File: , path)allFiles.append(path)exceptOSErrorase:print(Error: ,e)# 从根目录开始遍历list_files(/)html!DOCTYPE html html head titleMicrodot GPIO Example/title meta charsetUTF-8 /head body foriinallFiles:htmla href{}{}/abr.format(i.replace(//,/),i)html /body /html 先遍历esp32中的所有文件然后动态添加到html变量中生成带超链接的网页发送给浏览器这样就可以下载esp32中的所有文件。比如做一个gps轨迹记录仪将每天的log数据存入文档中。通过前面的代码可以遍历出文档名字然后点击超链接下载回来。遍历全部文件的完整代码importnetwork# 创建一个WLAN对象并将其设置为AP模式接入点模式apnetwork.WLAN(network.AP_IF)ap.active(True)# 配置接入点的参数包括SSID网络名称和密码ap.config(essidMyESP32AP,passwordpassword123)# 打印接入点的IP地址print(AP IP address:,ap.ifconfig())importos allFiles[]deflist_files(directory):#遍历出所有文件,存入allFiles数组中try:filesos.listdir(directory)forfileinfiles:pathdirectory/fileifos.stat(path)[0]0x4000:# 判断是否为目录print(Directory: ,path)list_files(path)# 递归遍历子目录else:#print(File: , path)allFiles.append(path)exceptOSErrorase:print(Error: ,e)# 从根目录开始遍历list_files(/)html!DOCTYPE html html head titleMicrodot GPIO Example/title meta charsetUTF-8 /head body foriinallFiles:htmla href{}{}/abr.format(i.replace(//,/),i)html /body /html frommicrodotimportMicrodot,send_file appMicrodot()app.route(/)asyncdefindex(request):#return send_file(index.html)returnhtml,200,{Content-Type:text/html}app.route(/path:path)asyncdefstatic(request,path):print(path)returnsend_file(path)app.run(debugTrue)

相关新闻

2026/7/24 20:39:30

2026.7.23:安装Windows下的mingw工具

安装Windows下的mingw工具 1 首先访问mingw-w64的官网 mingw-64官网 2 然后点击上图的Downloads按钮 3 点击上图的MinGW-W64-builds链接 4 跳转

2026/7/24 20:39:30

Formality:比较点的验证状态和整体验证状态

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 比较点的验证状态 在使用verify命令进行验证后,参考设计和实现设计所有匹配的比较点(如果使用特定选项,也可以验证任意两个比较点…

2026/7/24 22:10:01

设计EDA 中级工程师 双线(HR+EDA 研发组长)面试打分、综合评估、录用审批全流程

一、流程整体逻辑 适用人群:0–5 年 EDA 后端 / 验证 / 工具开发中级工程师,岗位定位独立完成子模块、辅助带教新人; 双评审角色分工: HR:把控资质真实性、职业稳定性、竞业保密合规、薪资匹配、求职动机;不做专业技术打分 EDA 研发组长(技术面试官):专业能力打分、项…

2026/7/24 22:10:01

3分钟免费将PDF变扫描件:LookScanned.io终极指南

3分钟免费将PDF变扫描件:LookScanned.io终极指南 【免费下载链接】lookscanned.io 📚 LookScanned.io - Make your PDFs look scanned 项目地址: https://gitcode.com/gh_mirrors/lo/lookscanned.io 还在为没有扫描仪而烦恼吗?想要让电…

2026/7/24 22:10:01

Android 7系统日志(八)定制安卓的日志系统

系列目录:第一篇:全景图与架构概览 | 第二篇:logd守护进程—启动、初始化与Socket通信 | 第三篇:liblog库—日志写入的完整链路 | 第四篇:日志写入接口—Java层与Native层 | 第五篇:日志读取—logcat源码深度分析 | 第六篇:日志缓冲区管理—容量、裁剪与统计机制 | 第七…

2026/7/24 22:10:01

第二讲:C语言数据类型和变量

目录 一、数据类型介绍 1. 什么是数据类型 2. 常见的数据类型分类 2.1 内置数据类型 2.2 自定义数据类型 二、变量 1. 变量的创建与命名规则 1.1 变量的创建(声明与初始化) 1.2 变量的命名规则 2. 变量的作用域:全局变量与局部变量…

2026/7/24 22:10:01

Angular开发指南_angular-developer

以下为本文档的中文说明 angular-developer 是 Angular 官方团队提供的 Angular 代码生成与架构指导技能,为 Angular 开发者提供了全面的最佳实践参考。该技能涵盖了 Angular 开发的各个关键领域:信号(Signals)响应式编程&#xf…

2026/7/23 12:54:51

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/24 0:03:10

不同品牌斜齿行星减速机如何替换?以PX与PAG系列为例

不同品牌斜齿行星减速机如何替换?以 PX 与 PAG 系列为例 一、系列对应不等于型号直接互换 PX 与 PAG 都属于斜齿、方法兰、输出轴式精密行星减速机,结构形式和应用方向具有对应关系。 原设备使用PX系列时,可以优先从PAG系列中寻找替换型号。但…

2026/7/24 0:03:10

jdk8 把list 扁平化成String 多个以逗号分隔

在 JDK 8 中&#xff0c;将 List 扁平化为以逗号分隔的 String&#xff0c;有几种非常简洁且高效的方法。&#x1f680; 推荐方案&#xff1a;使用 Collectors.joining()这是最标准的 Java 8 写法&#xff0c;适用于 List<String>。javaimport java.util.stream.Collecto…

2026/7/24 0:03:10

java 两个 long id 怎么合并成一个long id 并且不重复

“把两个 Long ID 合并成一个唯一的 Long ID&#xff0c;且保证不重复”这个需求&#xff0c;在 Java 里直接做数学上的“完美合并”是不可能的。因为两个 Long&#xff08;各 64 位&#xff09;要合并成一个 Long&#xff08;64 位&#xff09;&#xff0c;在信息论上是有损压…

2026/7/23 23:42:43

3个高效策略:快速掌握Axure中文界面配置

3个高效策略&#xff1a;快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…