esp8266 html文件,ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件(示例代码)
場景:
在寫ESP8266 web服務的時候,免不了要將自己設計的網頁html和css等文件放入到固件中。在arduino中有fs可以進行上傳文件,然后通過文件系統讀出。那在ESP-IDF中該怎么辦呢。有幾個思路
1. 通過flash_download_tools 直接向固定地址寫入文件。然后在代碼中讀出來
2.通過串口或者tcp等通信方式傳給8266然后再寫到flash 中。
3.直接轉成C字符串嵌入到代碼中
上述是我之前想到的,比較麻煩,看到了官方文檔提供了一種更簡單的方法。
這里我就直接貼官方說明了,稍微改了下例子,方便舉一反三:
有時您的組件希望使用一個二進制文件或者文本文件,但是您又不希望將它重新格式化為 C 源文件。
這時,您可以在?component.mk?文件中設置變量?COMPONENT_EMBED_FILES,以這種方式指定要嵌入的文件的名稱:
COMPONENT_EMBED_FILES := server_root_cert.der
或者,如果文件是字符串,則可以使用變量?COMPONENT_EMBED_TXTFILES,這將把文本文件的內容當成以 null 結尾的字符串嵌入:
COMPONENT_EMBED_TXTFILES?:=?web_page/index.css
COMPONENT_EMBED_TXTFILES?+=?web_page/index.html
文件的內容會被編譯進 flash 中的 .rodata 段,并通過符號名稱來訪問,如下所示:
extern const uint8_t web_file_index_html_start[] asm("_binary_index_html_start");extern const uint8_t web_file_index_html_end[] asm("_binary_index_html_end");
符號名稱是根據文件的全名生成的,如?COMPONENT_EMBED_FILES?中的所示,字符 / , . , 等都將會被下劃線替代。符號名稱中的?_binary?前綴由?objcopy?添加,對于文本和二進制文件都是相同的。
這樣一看就能直接當數組引用了。
extern const uint8_t web_file_index_html_start[] asm("_binary_index_html_start");extern const uint8_t web_file_index_html_end[] asm("_binary_index_html_end")char *str =web_file_index_html_start;
unsignedint str_len =web_file_index_html_end-web_file_index_html_start; httpd_resp_send(req, str,str_len );
ESP32也一樣~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的esp8266 html文件,ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件(示例代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java - 分解质因数
- 下一篇: 部门信息管理系统