ESP8266學習-內置網頁配置(一)

1、寫入一個網頁到FLASH指定位置:

(1)找到可以放置網頁的位置;扇區:4KBytes-0x001000

ESP8266-01:FLASH:25Q80=8Mbits=1MBytes=0x100000: 256扇區

eagle.flash.bin--------------------------------------------0x000000: 0扇區-----64KBytes

eagle.irom0text.bin--------------------------------------0x010000: 16扇區----944KBytes

esp_init_data_default_v05.bin-----------------------0x0FC000: 252扇區

blank.bin---------------------------------------------------0x0FE000: 254扇區

FLASH中前64K爲系統程序1,緊接着是系統程序2,倒數4個扇區(16KBytes)中爲系統參數區。用戶可用區域在系統程序2與系統參數區中間部分,至於從何扇區開始,到何處結束,則由前後扇區內容決定。在ld->eagle.app.v6.ld中可以查看各區域設置的長度,其中最後一項是irom0_0_seg->len即爲eagle.irom0text.bin的允許長度。由此可以計算出用戶可用區域的起始結束地址

eagle.irom0text.bin---0x010000---0x06C000: 0x05C000

因此用戶可用區域爲: 0x06C000---0x0FC000: 576KBytes: 144扇區

(2)放入寫好的網頁,讀取出來看看數據是否寫入正確;

使用ESP8266燒寫工具在指定位置放入一個WEB頁面,利用OS_printf輸出到串口助手查看。

新建一個login.html ;注意格式一定要是UTF-8,否則在頁面開頭有亂碼。

<html>
<title>LOGIN</title>
<style>
.box{font-size:60px;width:500px;height:80px;}
.log{font-size:80px;width:400px;height:100px;}
.dx{font-size:60px}
</style>
<body>
<center>
<div class='dx'>
<form method='post' action='Login.cgi'>
<br>
登錄WIFI設置界面
<br>
<br>
UserName:<input type='text' class='box' id='NAME' name='username'><br>
&nbsp;PassWord:<input type='text' class='box' id='PWD' name='password'><br>
<br>
<input type='submit' class='log' value='登錄'>
</form>
<script>
document.getElementById('NAME').value='admin'
document.getElementById('PWD').value='admin'
</script>
</div>
</center>
</body>
</html>

在ESP8266測試代碼中,讀取出FLASH裏的數據,

    char ch[1000];
    os_printf("login.page!\n");
    spi_flash_read(0x6C000, (uint32 *)&ch, 654);
    ch[655] = '\0';
    os_printf("%s", ch);
    os_printf("\n");

在串口助手中可以看到輸出結果,如果文件格式不是UTF-8,則串口助手輸出的中文就會是亂碼。如果頁面代碼中有錯誤碼,也能查出來。同時修改上面的數字大小也能測出頁面包含的字節數。這個字節數會用於頁面的發送。測試結果

phy ver: 1156_0, pp ver: 10.2

login.page!
<html>
<title>LOGIN</title>
<style>
.box{font-size:60px;width:500px;height:80px;}
.log{font-size:80px;width:400px;height:100px;}
.dx{font-size:60px}
</style>
<body>
<center>
<div class='dx'>
<form method='post' action='Login.cgi'>
<br>
登錄WIFI設置界面
<br>
<br>
UserName:<input type='text' class='box' id='NAME' name='username'><br>
&nbsp;PassWord:<input type='text' class='box' id='PWD' name='password'><br>
<br>
<input type='submit' class='log' value='登錄'>
</form>
<script>
document.getElementById('NAME').value='admin'
document.getElementById('PWD').value='admin'
</script>
</div>
</center>
</body>
</html>

SDK version:3.0.3(8427744)

可以看出數據沒有問題,保證了在FLASH中的頁面數據沒有問題。

(3)找到ESP8266對get和host的處理函數,找到ESP8266如何處理get和post數據,併發送頁面給客戶端。

沒寫完,下一次繼續。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章