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)

相关新闻

中级OpenGL教程 024:Assimp模型加载之Mesh解码玄功

中级OpenGL教程 024:Assimp模型加载之Mesh解码玄功

中级OpenGL教程 024:Assimp模型加载之Mesh解码玄功📜 序章:承前启后,继往开来 盖图形之学,以模型为骨,以纹理为肤;节点为纲,网格为目。前篇既述节点层级之遍历,今当深究网…

2026/7/24 20:38:08 阅读更多 →
springcloud篇2-feign、gateway

springcloud篇2-feign、gateway

一、Feign(http客户端,替代RestTemplate) 1.1 简介 之前不同的服务之间进行远程调用使用的是RestTemplate。 存在下面的问题: (1)代码可读性差,编程体验不统一; (2)参数复杂,URL难以维护。 Feign(发音“奋”)是一个声明式的http客户端,作用是帮助我们便捷地实现ht…

2026/7/24 20:38:08 阅读更多 →
金属外表多种生锈检测数据集分享(适用于YOLO系列深度学习分类检测任务)

金属外表多种生锈检测数据集分享(适用于YOLO系列深度学习分类检测任务)

金属外表多种生锈检测数据集分享(适用于YOLO系列深度学习分类检测任务) 源码下载 链接:https://pan.baidu.com/s/1JR5KnTDWreLm1zLvBnU_BA?pwdirii 提取码:irii 复制这段内容后打开百度网盘手机App,操作更方便哦 前言 在工业设备智能运维、…

2026/7/24 20:38:08 阅读更多 →

最新新闻

openclaw源码解读(2) —— 消息进来后怎么变成 Agent 调用

openclaw源码解读(2) —— 消息进来后怎么变成 Agent 调用

文件解析: gateway/server.ts文件职责:懒加载 启动打点 纯代理L10-17 如果process.env也就是环境变量中有OPENCLAW_GATEWAY_STARTUP_TRACE 这个环境变量的设置,才会开启启动线程执行的log日志跟踪L19-28 异步执行懒加载server.impl.js类&a…

2026/7/24 20:46:09 阅读更多 →
3个颠覆性功能,让桌游设计师告别重复劳动

3个颠覆性功能,让桌游设计师告别重复劳动

3个颠覆性功能,让桌游设计师告别重复劳动 【免费下载链接】CardEditor 一款专为桌游设计师开发的批处理数值填入卡牌生成器/A card batch generator specially developed for board game designers 项目地址: https://gitcode.com/gh_mirrors/ca/CardEditor …

2026/7/24 20:46:09 阅读更多 →
教育类新闻发稿平台选型全攻略:鹿推推助力全流程精准投稿与合规操作

教育类新闻发稿平台选型全攻略:鹿推推助力全流程精准投稿与合规操作

教育行业内容发布对媒体资质、政策适配、合规管控有着极高标准,想要高效匹配适配媒体、顺畅走完整套投稿流程、规避各类发布风险,选对一站式发稿协作平台尤为关键。当下不少教育机构、办学单位、职教院校、教培品牌在自主对接媒体时,常会遇到…

2026/7/24 20:46:09 阅读更多 →
抖音直播录制神器:DouyinLiveRecorder完全指南 - 40+平台自动值守录制

抖音直播录制神器:DouyinLiveRecorder完全指南 - 40+平台自动值守录制

抖音直播录制神器:DouyinLiveRecorder完全指南 - 40平台自动值守录制 【免费下载链接】DouyinLiveRecorder 可循环值守和多人录制的直播录制软件,支持抖音、TikTok、Youtube、快手、虎牙、斗鱼、B站、小红书、pandatv、sooplive、flextv、popkontv、twit…

2026/7/24 20:46:09 阅读更多 →
防沉迷新规下的棋牌游戏生存课:从合规底线到竞争优势

防沉迷新规下的棋牌游戏生存课:从合规底线到竞争优势

棋牌类游戏行业正经历一场深刻的合规变革。防沉迷监管不再只是“接个接口”的技术任务,而是上升到了企业经营战略的高度。对于二级直付通商户而言,谁先理解这一趋势,谁就能在新一轮洗牌中占据主动。一、防沉迷的本质:从“堵”到“…

2026/7/24 20:46:09 阅读更多 →
Blender 3MF插件:重塑3D打印工作流的桥梁

Blender 3MF插件:重塑3D打印工作流的桥梁

Blender 3MF插件:重塑3D打印工作流的桥梁 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 在3D打印技术日益普及的今天,设计师们面临着文件格式兼容…

2026/7/24 20:45:09 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻