W600/W800之WebServer页面修改

在路径 \Src\App\web 下我们能看到相关的web页面,是一些简单的web配置页面。

需要修改时,参考:http://www.wdyichen.cn/?log=blog&id=68

文中写的已经算比较清楚了,需要补充的是,除了文章中提到的makefs还有另外一个命令goall,这些都是linux 脚本,需要在linux环境下执行,区别也很简单,自己点看看内容就能明了。

原文引用:

web server也即http server,在w600官方sdk中默认就有一个,主要被用来softap下网页配网,遗憾的是官方一点没有其webserver二次开发的教程,大多数小白朋友看着那个丑陋的网页完全无法下手修改,所以本文就以web server如何进行二次开发来一番介绍。

先说下这种嵌入式webserver的特点,因为w600没有文件系统,而通常我们用的webserver都是要访问server根目录下的网页文件的,所以这个webserver就对网页文件做了一点特殊处理,那就是直接把网页文件转化成c语言的数组在编译时直接编进代码中去,这样就相当于形成了一个内存文件系统,webserver在收到访问请求时,直接在内存中查找到这个网页文件,回馈给用户。当然你也可以拿spi flash或者tf/sd这些搞个实际的文件系统,本文不在讨论。

webserver主要就是前端的网页式样和后端的代码处理。其源码在在Src/App/web目录下,这里面像web.c、httpd.c、fs.c是代码实现,而fs_ap_config这种文件夹下存放的是网页(或者其它的fs*文件)。

所以当你想修改网页式样的时候,就在fs文件夹下的网页中去改,改完之后,使用web目录下的那个makefs脚本把网页转化为c数组。如:./makefs ./fs_ap_config ./fsdata_ap_config.c(当然最后面的./fs_ap_config.c可以不写就会默认生成一个叫fsdata_lwip.c的文件),最后不管你起的啥名或者用默认的名字,只要你把它在fs.c中这个地方:#include "fsdata_ap_config.c"填写的名称保持一致就行。最后我想说的是这个makefs脚本是需要在shell环境下去执行,是linux这种shell环境,不是windows下的cmd里面搞。还有就是修改网页的时候,最好不要改的太大,要考虑嵌入式资源,如果你把网页搞得太大,c数组也就很大,最后搞出来的w600固件也就很大而没法烧进去了。

改完网页之后,通常你的网页不会只是一个静态显示页面,总会需要显示一点实时信息,更有甚者还需要交互操作,所以还需要改webserver让其支持你的各种表单请求交互操作。这个webserver仅支持最简单的html,所以网页交互就是靠html 表单了,如果你对表单的概念一脸懵逼不懂我在说啥,那么我建议你花十来分钟去看看html语法,这是世界上最简单的语法了,学会它你才能进行下一部开发。

访问网页时,必然会走到这里Web_parse_line,所以网页被访问时,需要读取的实时数据就是在这里更新的;当表单提交之后,必然会走到这里do_cgi_webindex,所以需要更新给模块的数据都是在这里进行解析处理。这里需要注意web_id_tbl这个表,其IdName就是用来和网页中的各id进行匹配的所以要填一样,Value_Offset是数出来的长度如果不是固定的那我建议直接填个0起调更快捷。

最后,启动webserver就是使用httpd_init,停止就使用httpd_deinit。至于为啥不用tls_webserver_init,是因w600没有deinit我感觉比较别扭所以不想用~~~

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注