Espressif ESP32 Web服务器HTML示例

时间:2017-01-28 13:01:10

标签: html mongoose xxd esp32

我正在使用esp-idf示例中包含的一个Web服务器示例来处理嵌入式ESP32设计。我能够将设备置于软AP模式并显示简单的网页。现在我已经开始工作,我正在尝试使用图形构建一个页面。

我正在使用Linux hex工具" xxd -i"将HTML文件转换为C包含文件的十六进制转储数组。如果文档只是HTML,它可以正常工作,但我仍然试图用图像来做这件事。

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您可以直接在CMakeLists.txt中使用伪指令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等(当然,要考虑设备内存)。