你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】stm32+lwip:网页服务器测试

[复制链接]
STMCU小助手 发布时间:2022-1-22 18:58
一、准备
ST例程文档关于lwip的介绍如下:
1358342-20180908134248433-1691113005.png
由此可以看到LWIP有三种API,在本文中,使用Raw API。
HTTP协议是建立在TCP协议之上的一种应用,本文用到的TCP Raw API如下:
1358342-20180908141416484-854611288.png
1 `- I* N6 j. L" A3 M7 L5 F
二、移植官方例程
官方例程在stsw-stm32070\STM32F4x7_ETH_LwIP_V1.1.1\Project\Standalone\httpserver目录下,拷贝以下文件到我们工程:
1358342-20180908144711829-559064597.png
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官方例子的网页:
1358342-20180908144730414-639602941.png
三、打印网页接收数据
在httpd.c中的http_recv函数中增加以下黄色部分代码:
1358342-20180908144758307-491609248.png
然后当在浏览器打开192.168.2.8时,串口输出以下数据:
  1. get msg from 192:168:2:194 port:55329:
    " O3 \7 W- P9 o; u% p8 J/ Y! \
  2. GET / HTTP/1.1+ Z% D2 [2 `' y6 H( }. y
  3. Host: 192.168.2.8' o5 N+ t' s  i$ q
  4. Connection: keep-alive& q- x9 v' E. J; V  K
  5. Upgrade-Insecure-Requests: 1
    9 A0 A. m. K9 J" {. J! z) z
  6. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    0 G# t: @' P) u. l2 Z
  7. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    " M& ^4 d; |& Z/ K7 k- y
  8. Accept-Encoding: gzip, deflate  O  h4 x* j1 T: p
  9. Accept-Language: zh-CN,zh;q=0.9' T; m. N3 w' n/ o8 H+ I+ e

  10. / u7 H% u' Z8 A
  11. 5 Z  S5 \' ?+ v# L- d: b1 z+ d/ W
  12. get msg from 192:168:2:194 port:55330:
    ( o6 e! r8 l8 s, W
  13. GET /STM32F4x7_files/ST.gif HTTP/1.1
    6 I' @0 I( m* v, b9 L+ W9 L$ G
  14. Host: 192.168.2.8: j6 d) E! g! Z# S
  15. Connection: keep-alive
    % t' e% Q0 [, V: {
  16. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    3 y/ _  @* J6 L$ I  U4 t0 \
  17. Accept: image/webp,image/apng,image/*,*/*;q=0.8! h% x$ N% F  r, z9 A& R
  18. Referer: http://192.168.2.8/
    ! l! W1 X& O3 o- I
  19. Accept-Encoding: gzip, deflate* W4 r: J4 ~# O2 X
  20. Accept-Language: zh-CN,zh;q=0.93 q6 p9 }0 g1 d# B/ I  p

  21.   I! ]) j3 v/ D/ x2 H  ]& v

  22. ' ]+ z, P/ d" ]+ ~0 E
  23. get msg from 192:168:2:194 port:55331:1 O: K( @9 K  _* V& k
  24. GET /STM32F4x7_files/stm32.jpg HTTP/1.1
    ; ^  W2 k) E% t- O( C
  25. Host: 192.168.2.8
    . |* k& E- v, v) M2 i
  26. Connection: keep-alive
      H/ a5 Z! C% A2 q
  27. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    4 I! u; q# O! b
  28. Accept: image/webp,image/apng,image/*,*/*;q=0.8
    ! U0 e& F: Y# d' y$ \
  29. Referer: http://192.168.2.8/
    + {/ E  H- R1 l# ~  s% W
  30. Accept-Encoding: gzip, deflate
    . u1 j* k& J! G' e4 ^
  31. Accept-Language: zh-CN,zh;q=0.9
    2 W, m4 o  f+ E( z" c6 _8 O7 z
  32.   e5 q' l  Y, e. e6 h# A3 n

  33. / t* J0 p% T4 R4 Z4 ], a' L
  34. get msg from 192:168:2:194 port:55332:
    " H. }( q  O0 _' G; E1 j
  35. GET /inchtml-pages-stm32_connectivity_files/pixel.gif HTTP/1.1
      E6 r3 f# _% N9 v" v
  36. Host: 192.168.2.8
    ( d. M1 B" {. F% G4 O, _4 B2 h. U
  37. Connection: keep-alive& g0 o8 s/ G% W8 N
  38. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    0 a8 w: D  [  H" x! |( {
  39. Accept: image/webp,image/apng,image/*,*/*;q=0.8
    7 b" i  `% q, W9 b
  40. Referer: http://192.168.2.8/* C  \, T) P- {
  41. Accept-Encoding: gzip, deflate
    3 d4 d  d# w$ e8 S. L  k% N
  42. Accept-Language: zh-CN,zh;q=0.90 Q! n9 L$ F+ `! u5 |# y4 m

  43. * j0 z1 h9 ]" P! W. N2 S
  44. + u# L( y$ g; U& u: Y
  45. get msg from 192:168:2:194 port:55334:2 U# X+ q: H. h. Z. I: Q- m0 m2 V
  46. GET /favicon.ico HTTP/1.14 C4 c! F% Q+ y6 ^
  47. Host: 192.168.2.8
    ! C# g" S3 H! A! Q6 V+ B
  48. Connection: keep-alive
    $ Y: C8 e3 M( q* ]4 K/ g- T+ X
  49. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36+ W( \' V9 [  _% Y# D0 C% Y9 _
  50. Accept: image/webp,image/apng,image/*,*/*;q=0.8* a% S$ b" U: g+ S, M1 _4 [1 `
  51. Referer: http://192.168.2.8/- ]' ]. g" w/ v3 X
  52. Accept-Encoding: gzip, deflate
    / X8 b" o0 b0 x& ^5 l5 Z8 m9 I( v4 q
  53. Accept-Language: zh-CN,zh;q=0.9
复制代码

# U: x; D' D) s1 O$ u
由此可以看出,打开了网页服务器地址,会给网页服务器发送GET / HTTP/1.1命令,网页服务器会根据这个命令找到index.html,然后给浏览器返回网页数据。由于网页数据中又包含了一些照片资源,因此浏览器再给网页服务器发送
  1. GET /STM32F4x7_files/ST.gif HTTP/1.1
    , g- F4 T9 w% Q+ f' m! ]1 C( F
  2. GET /STM32F4x7_files/stm32.jpg HTTP/1.1! N& U1 K% p5 d0 H
  3. GET /inchtml-pages-stm32_connectivity_files/pixel.gif HTTP/1.15 |0 }+ [3 ?0 M1 g$ }$ {" H
  4. GET /favicon.ico HTTP/1.1
复制代码
+ S7 _; {4 [( W
以获取照片资源。
& i: R) F1 K0 ~) h" P* F/ I
四、最后
本文测试了网页服务器功能,能正常打开预置网页,后续开发嵌入式网页可以根据ST例程进行修改,同时加上了SSI和CGI可以做到一些简单的交互。
! v, v) e5 T. C5 S6 w6 D" g
收藏 评论0 发布时间:2022-1-22 18:58

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版