”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 下载网页到ESP或简单可编程控制器

下载网页到ESP或简单可编程控制器

发布于2024-11-08
浏览:590

为了将网页保存到ESP8266的FLASH中,我特地用delphi编写了一个软件工具。
该软件工具从一个文件夹中读取所有网页文件(包括html、css、js、图片等),并将其打包为二进制文件。

将ESP8266的GPIO0接地即可启动,ESP8266进入串口下载模式。
然后使用下载软件选择打包好的网页文件并命令保存位置,然后与固件文件一起通过串口下载到ESP8266。

同时软件还根据每个文件的大小计算出每个文件在flash中的存储位置并自动生成.h文件,用于下载网页时从flash中加载对应的网页页。

对于新设计的简易可编程控制器来说,网页的修改也是非常重要的,使用串口工具下载步骤繁琐且缓慢,影响了开发速度,所以我首先设计了这样的工具来通过TCP命令远程下载网页。

修改ESP8266的代码,添加通过TCP命令擦除和读取Flash内容的功能。
并预留4KByte的空间用于每个网页的闪存存储位置和大小。

当浏览器接收到HTTP请求时,如果HTTP请求文件是网页,会首先根据文件名从flash中查找该文件的存储位置和大小,如果没有找到,仍然会响应默认网页。

在PC工具端,还添加了发送TCP命令对ESP8266进行擦除、写入、读取内容的代码,并将网页分为512字节大小的包。

将来也可以向客户开放这样的功能,以便客户可以定制自己的网页。

Download the web pages to ESPor simple programmable controller

Download the web pages to ESPor simple programmable controller

Download the web pages to ESPor simple programmable controller

版本声明 本文转载于:https://dev.to/zhangzhuyue/download-the-web-pages-to-esp8266-for-simple-programmable-controller-396i如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在 Java 中有效地计算文件或文件夹的大小?
    如何在 Java 中有效地计算文件或文件夹的大小?
    在 Java 中获取文件或文件夹的大小检索文件或文件夹的大小是处理文件时的常见任务在爪哇。下面是如何有效地做到这一点:获取文件大小要获取文件的大小,您可以使用 java.io 上的 length() 方法.文件对象。这将返回文件的长度(以字节为单位),如果文件不存在,则返回 0。java.io.Fi...
    编程 发布于2024-11-08
  • 变量第 04 部分
    变量第 04 部分
    মনে করুন আপনি চা খাবেন। না, চা না। কফিই খান। প্রোগ্রামার হচ্ছেন কফি তো খেতেন পারেন। কফিকে প্রোগ্রামারদের সঙ্গি বললে ভুল হবে না । যাই হোক। এখন কফি তৈর...
    编程 发布于2024-11-08
  • 当我开始使用 React 时我希望知道的事情
    当我开始使用 React 时我希望知道的事情
    3年React开发经验教训 当我第一次投入 React 时,感觉就像打开了潘多拉魔盒。有很多东西要学,一路上,我遇到了很多“啊哈!”的情况。时刻。以下是我希望在开始时就知道的 10 件事,以帮助您在 React 之旅中跳过一些减速带。 1. 组件只是函数 最重要的认识? React ...
    编程 发布于2024-11-08
  • 使用 Golang 编写打字速度测试 CLI 应用程序
    使用 Golang 编写打字速度测试 CLI 应用程序
    必须认真考虑这个标题吗?...现在我们已经解决了这个问题,让我们编写一些该死的代码:) 泵制动?尖叫……让我们对今天要尝试构建的内容做一些介绍。如果标题不明显,我们将构建一个 CLI 应用程序来计算您在 golang 中的打字速度 - 尽管您可以使用您选择的任何编程语言遵循相同的技术来构建相同的应用...
    编程 发布于2024-11-08
  • 为什么我的 Bootstrap 模态不工作? ($(...).modal 不是函数)
    为什么我的 Bootstrap 模态不工作? ($(...).modal 不是函数)
    TypeError: $(...).modal is not a function with Bootstrap Modal您在尝试执行以下操作时遇到此错误动态地将 Bootstrap 模式插入 HTML 并使用 jQuery 触发它。让我们深入研究一下问题:错误表明“$().modal”函数不被j...
    编程 发布于2024-11-08
  • 如何在 PHP 中创建递归匿名函数?
    如何在 PHP 中创建递归匿名函数?
    创建递归匿名 PHP 函数在 PHP 中创建递归匿名函数可能会很有利。下面的代码演示了如何完成此操作,传递一个函数作为引用。$factorial = function( $n ) use ( &$factorial ) { if( $n == 1 ) return 1; ...
    编程 发布于2024-11-08
  • 为什么双击显示/隐藏按钮仅在第二次调用时起作用?
    为什么双击显示/隐藏按钮仅在第二次调用时起作用?
    为什么第一次使用时双击显示/隐藏按钮?在网页中,按钮的作用是显示或隐藏一个元素,但它需要双击其初始调用。经检查发现该按钮的代码为:function showhidemenu() { var x = document.getElementById("menu"); if (...
    编程 发布于2024-11-08
  • 网格布局:初学者的终极指南
    网格布局:初学者的终极指南
    欢迎回到您的 CSS 冒险!今天,我们将深入研究网页设计工具库中最强大的工具之一:CSS 网格布局。将其视为布局技术的瑞士军刀 - 多功能、精确,并且能够将您的网页转变为组织精美的杰作。准备好接受并承受它了吗?我们走吧! 什么是 CSS 网格布局? 想象一下,您正在玩​​俄罗斯方块游...
    编程 发布于2024-11-08
  • 了解 Python 字典:完整概述
    了解 Python 字典:完整概述
    Python 字典是 Python 编程中最通用且使用最广泛的数据结构之一。它们是内置数据类型,允许开发人员将数据存储在键值对中,这使得它们对于各种应用程序非常有用。在本文中,我们将探讨什么是词典、如何使用它们,并提供示例来说明其功能。 什么是字典? Python 字典是无序的项目集...
    编程 发布于2024-11-08
  • 如何更改 H1 标签中最后一个单词的颜色?
    如何更改 H1 标签中最后一个单词的颜色?
    更改 H1 中最后一个单词颜色的解决方案在 Web 开发领域,使用 CSS 设计元素样式是基本实践。然而,当涉及到改变 H1 标签中最后一个单词的颜色时,原生 CSS 就显得不够了。不过,不用担心,因为有一种超出传统 CSS 范围的解决方案。为了实现这种效果,我们转向 JavaScript 库 le...
    编程 发布于2024-11-08
  • 角度信号和 RxJS 的新功能
    角度信号和 RxJS 的新功能
    1) Signals 与 RxJS:在 Angular 16 中从头开始创建 Signal 变量并将其与 Observable 进行比较。 以我们有侧边栏菜单和顶部菜单的示例为例,每次按下按钮时,顶部菜单都会告诉侧边栏菜单折叠: 使用 RxJS: 这种通信是在使用主题和可观察量的服务中完成的,每次我...
    编程 发布于2024-11-08
  • 实现 malloc() 和 free() — 首先重用旧内存
    实现 malloc() 和 free() — 首先重用旧内存
    在本系列关于实现 malloc() 和 free() 的上一篇文章中,我们展示了如何通过释放新块来重用内存块并减少堆。然而,当前的函数引入了一个微妙的问题:它优先考虑重用较新的块,这可能会导致内存消耗随着时间的推移而增加。为什么会发生这种情况?让我们来分解一下。 通过重用最近的块来减...
    编程 发布于2024-11-08
  • Java 中的封装与抽象:终极指南
    Java 中的封装与抽象:终极指南
    学习 Java 或任何面向对象编程 (OOP) 语言时,两个基本概念很突出:封装 和 抽象。这些概念是 OOP 的关键支柱,可提高代码的可重用性、安全性和可维护性。尽管它们经常一起使用,但它们具有不同的目的。 在这篇文章中,我们将深入探讨封装和抽象之间的差异,并通过清晰的定义、示例和代码片段来帮助您...
    编程 发布于2024-11-08
  • Zustand源码中的createWithEqualityFnImpl有解释。
    Zustand源码中的createWithEqualityFnImpl有解释。
    在这篇文章中,我们将通过记录它的一些值来分析createWithEqualityFnImpl是如何实现的,以便更好地理解。 从上图可以看出,createWithEqualityFn 调用了函数 createWithEqualityFnImpl。此模式在 vanilla.ts 中使用,如下所示: ex...
    编程 发布于2024-11-08
  • 如何防止 Pandas 在保存 CSV 时添加索引列?
    如何防止 Pandas 在保存 CSV 时添加索引列?
    避免使用 Pandas 保存的 CSV 中的索引列使用 Pandas 进行修改后保存 csv 文件时,默认行为是包含索引列。为了避免这种情况,可以在使用 to_csv() 方法时将索引参数设置为 False。为了详细说明,请考虑以下命令序列:pd.read_csv('C:/Path/to/file....
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3