【问题标题】:Espressif ESP32 web server HTML example乐鑫 ESP32 网络服务器 HTML 示例
【发布时间】:2017-01-28 13:01:10
【问题描述】:

我正在使用 esp-idf 示例中包含的 Web 服务器示例之一进行嵌入式 ESP32 设计。我能够让设备进入软 AP 模式并显示一个简单的网页。现在我已经完成了这项工作,我正在尝试构建一个带有图形的页面。

我正在使用 Linux 十六进制工具“xxd -i”将 HTML 文件转换为 C 包含文件的十六进制转储数组。如果文档只是 HTML,它可以正常工作,但我坚持尝试使用图像来执行此操作。

我在 HTML 文件和图像文件上都使用了 xxd,并使用“netconn_write”来写出这两个文件。我还尝试将它们组合成一个十六进制转储文件。在这一点上,我不确定如何继续,非常感谢任何帮助。

【问题讨论】:

    标签: html mongoose xxd esp32


    【解决方案1】:

    您可以使用this utility 在可执行文件中嵌入任意数量的二进制文件。不要忘记设置正确的 mime 类型。此外,如果文件很大,您必须对发送进行速率限制,这可能会成为一项艰巨的任务。

    因此,我建议使用文件系统和嵌入式 Web 服务器来完成这项工作。看看https://github.com/cesanta/mongoose-os/tree/master/fw/examples/mjs_hello(免责声明:我是开发人员之一)。您只需几分钟即可获得带有工作 HTTP 服务器的固件,为您的原型做好准备。

    【讨论】:

    • 非常感谢您的帮助,我会检查一下并尝试嵌入文件系统。
    【解决方案2】:

    您可以直接在CMakeLists.txt 中使用 de 指令 EMBED_FILES。比如添加文件favicon.jpg图片,在我的CMakeLists.txt,在main.c同目录下:

    idf_component_register(SRCS "main.c"
      INCLUDE_DIRS "."
      EMBED_FILES "favicon.jpg")
    

    在 main.c 的某处:

    /* The favicon */
    static esp_err_t favicon_handler(httpd_req_t *req)
    {
        extern const char favicon_start[] asm("_binary_favicon_jpg_start");
        extern const char favicon_end[] asm("_binary_favicon_jpg_end");
        size_t favicon_len = favicon_end - favicon_start;
    
        httpd_resp_set_type(req, "image/jpeg");
        httpd_resp_send(req, favicon_start, favicon_len);
    
        return ESP_OK;
    }
    
    static const httpd_uri_t favicon_uri = {
                                             .uri       = "/favicon.ico",
                                             .method    = HTTP_GET,
                                             .handler   = favicon_handler,
                                             .user_ctx  = NULL
    };
    
    

    您可以通过这种方式添加任意数量的文件,文本、html、json 等...(当然要考虑设备内存)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2015-10-29
      • 2021-03-31
      相关资源
      最近更新 更多