stm32+lwip(四):网页服务器测试
ST官方有lwip的例程,下載地址如下:
https://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32070.html
本文例子參考ST官方給出的例程。
一、準備
ST例程文檔關于lwip的介紹如下:
?
由此可以看到LWIP有三種API,在本文中,使用Raw API。
HTTP協議是建立在TCP協議之上的一種應用,本文用到的TCP Raw API如下:
二、移植官方例程
官方例程在stsw-stm32070\STM32F4x7_ETH_LwIP_V1.1.1\Project\Standalone\httpserver目錄下,拷貝以下文件到我們工程:
?
fs.c/h是文件的操作
fs.data.c/h存放了網頁的數據
httpd.c/h是網頁服務器
httpd_cgi_ssi.c?是cgi和ssi的處理
將httpd_cgi_ssi.c中關于硬件操作的代碼刪掉,或者找到宏LWIP_HTTPD_SSI和宏LWIP_HTTPD_CGI將SSI和CGI功能禁掉,然后在主程序中增加httpd_init()。
上電運行后可以看到ST官方例子的網頁:
?
三、打印網頁接收數據
在httpd.c中的http_recv函數中增加以下黃色部分代碼:
?
然后當在瀏覽器打開192.168.2.8時,串口輸出以下數據:
get msg from 192:168:2:194 port:55329: GET / HTTP/1.1 Host: 192.168.2.8 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9get msg from 192:168:2:194 port:55330: GET /STM32F4x7_files/ST.gif HTTP/1.1 Host: 192.168.2.8 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 Accept: image/webp,image/apng,image/*,*/*;q=0.8 Referer: http://192.168.2.8/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9get msg from 192:168:2:194 port:55331: GET /STM32F4x7_files/stm32.jpg HTTP/1.1 Host: 192.168.2.8 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 Accept: image/webp,image/apng,image/*,*/*;q=0.8 Referer: http://192.168.2.8/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9get msg from 192:168:2:194 port:55332: GET /inchtml-pages-stm32_connectivity_files/pixel.gif HTTP/1.1 Host: 192.168.2.8 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 Accept: image/webp,image/apng,image/*,*/*;q=0.8 Referer: http://192.168.2.8/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9get msg from 192:168:2:194 port:55334: GET /favicon.ico HTTP/1.1 Host: 192.168.2.8 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 Accept: image/webp,image/apng,image/*,*/*;q=0.8 Referer: http://192.168.2.8/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9由此可以看出,打開了網頁服務器地址,會給網頁服務器發送GET / HTTP/1.1命令,網頁服務器會根據這個命令找到index.html,然后給瀏覽器返回網頁數據。由于網頁數據中又包含了一些照片資源,因此瀏覽器再給網頁服務器發送
GET /STM32F4x7_files/ST.gif HTTP/1.1 GET /STM32F4x7_files/stm32.jpg HTTP/1.1 GET /inchtml-pages-stm32_connectivity_files/pixel.gif HTTP/1.1 GET /favicon.ico HTTP/1.1以獲取照片資源。
四、最后
本文測試了網頁服務器功能,能正常打開預置網頁,后續開發嵌入式網頁可以根據ST例程進行修改,同時加上了SSI和CGI可以做到一些簡單的交互。
?
github:https://github.com/54zorb/stm32-lwip
總結
以上是生活随笔為你收集整理的stm32+lwip(四):网页服务器测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python框架django的使用_Dj
- 下一篇: 基于javaweb的前台展示+后台管理结