基于STM32的串口服务器web功能实现_第1页
基于STM32的串口服务器web功能实现_第2页
基于STM32的串口服务器web功能实现_第3页
基于STM32的串口服务器web功能实现_第4页
基于STM32的串口服务器web功能实现_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于STM32勺串口服务器web功能实现编制:陈志磊校对:审核:日期:2014-12-30版本:V1.0更改次数更改时间更改内容版本12014-12-30初版V1.0说明:本文主要说明通过web访问来配置串口服务器参数的功能,前提要求LWIP和uCOSII都已移植成功。实现B/S结构,须将串口服务器配置为webserver。WebServer文件以及相关技术简介1 .相关文件说明ST公司的官网上提供了通过LWIP完成webserver配置的例程,打开我们的工程文件夹“LwIP1.4.1移植STM32V1.8",在LWIP-APP/web_server_demo文件夹下的文件如图所示:

2、各个文件的说明见下表:文件说明makefsdata该文件夹中包含用原始网贝文件和将原始的网贝文件转换为网贝数组的工具mskefsdata.exefs.c用来管理生成的网页数组fs.hfsdata.c生成的网页数组fsdata.hhttpd.c完成了将串口服务器配置成webserver。httpd.hhttpd_cgi_ssi.cCGI和SSI源文件,通过网页配置串口服务器参数主要是通过这个文件来完成2 .网页制作及网页数组数据转换(1)网页制作使用dreamweaver进行网页制作,交互方式主要是通过表单来完成,注意对于使用了需要使用SSI技术来嵌入数据的,需要将网页后缀设为shtml、sht

3、m、stm等。ST的例程默认使用首页索引在httpd.c中g_psDefaultFilenames口数组里表示,该数组如下:constdefault_filenameg_psDefaultFilenames="/index.shtml",false,"/index.ssi",true,"/index.shtm",true,"/index.html",false,"/index.htm",false;该数据表示支持首页索引为index.shtml、index.html、index.htm的网页文件

4、输入。在网页设计时,需考虑以下两个方面:a.表单的操作设计,表单提交的方法为post,表单的处理设为对应的CGI。b.SSI标签的嵌入。在需要嵌入信息的位置插入SSI标签。关于CGI和SSI稍后将会简要说明。(2)网页数组数据转换在makefsdata文件夹下的fs文件为网页源文件,如下图:工耕版共享,会文件夹由于网页源文件不能直接放到STM32里面,所以要做一个转换,这里通过makefsdata.exe这个工具将原始网页文件转换成.c格式的网页数组,这样就可以添加到工程中了,makefsdata是用来将编辑好的网页文件转换成二进制数的一个工具。接下来我们讲解一下这个工具的使用方法下面我们讲解

5、makefsdata工具的使用。(1)新建一个名为fs的文件夹,将编辑好的网页源文件放到fs文件夹下,里面包含了编辑好的html和.shtml等网页文件淇中image文件夹里面是我们使用到的图片。(2)将fs文件夹和makefsdada.exe工具放到同一文件夹下,此处为makefsdata文件夹,打开makefsdata文件夹,如下图所示。图中的echotool.exe和Tftpd32-3.51-setup.exe为其他工具,这里没有使用到,cmd.reg稍后我们会讲到。勒湖库中甘享,新=f>cnndTeflechctocLehdsU.cmgkefsdatxeaewe(3)在makef

6、sdata文件夹上点击鼠标右键,然后点击”在此位置打开CMD”选项,打开后结果如图所示。此时会打开一个CMD命令窗口。如果点击右键没有”在此位置打开CMD选型的话,请使用makefsdata文件夹下的cmd.reg文件导入注册表注册,双击才T开cmd.reg,然后一路确定下去就可以了。(4)在打开的CMD命令窗口中输入:makefsdata-i命令,按回车键。就会生成fsdata.c文件,将该文件拷贝到web_server_demo文件下,然后以头文件的方式包含到工程中即可。3.CGI技术简介公共网关接口CGI(CommonGatewayInterface)是WWW技术中最重要的技术之一,有着

7、不可替代的重要地位。CGI是外部应用程序与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器,CGI程序使网页具有交互功能。比如通过web来处理提交的数据,用的就是CGI技术。CGI示意图如下:盯4窖户淞况空请求/rL“史结果孙F派务Hteir'转交请食也问结必cni4.SSI技术简介服务器端嵌入:Server

8、SideInclude,是一种类似于ASP的基于服务器的网页制作技术。大多数的WEB服务器等均支持SSI命令。将内容发送到浏览器之前,可以使用“服务器端包含(SSI)”指令将文本、图形或应用程序信息包含到网页中。例如,可以使用SSI包含时间/日期戳、版权声明或供客户填写并返回的表单。对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法。将内容存入一个包含文件中即可,而不必将内容输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示Web服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。因为包含SSI指令的文件要求特殊处理,所以必须为

9、所有SSI文件赋予SSI文件扩展名。默认扩展名是.stm、.shtm和.shtml°SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:<!-#includefile="info.htm"->就是一条SSI指令,其作用是将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内。文本图雅时间服残渊信息网或SS攸人.Shlml一Web洌览器Shtrr显示stm在本项目中,将串口服务器的配置信息通过SSI嵌入的方式来显示到网页上,还

10、有一种比较高效的交互方式,即通过ajax来实现异步交互,有兴趣可以研究下。软件设计前面介绍过,fs.c文件管理生成的网页数组文件这个文件由ST提供。httpd.c文件是本章实验的重点,这个文件将开发板配置为WebServer,这个文彳也由ST官方提供的,阅读这个文件需要有网页相关的知识,这里对这个文件不做讲解。当在浏览器中输入网址,web服务器就会返回给我们相应的网页,然后浏览器解析并呈现给我们。同样的,当我们通过浏览器访问开发板的时候,开发板这时是作为服务器的,服务器针对不同的URL在fsdata.c文件中找出相应的网页,并且返回给浏览器,在fsdata.c文件中查找网页的过程就需要fs.c

11、里面的函数。接收浏览器发送的数据并且将网页返回给浏览器的过程都是由httpd.c文件里面的函数来完成的。1.POS访法实现ST的例程中默认使用的是GET方法,而在提交用户名和密码等数据时,希望安全性更高;在提交串口服务器的配置信息时,信息比较多,也不希望全部添加到URL中,综上考虑,选择使用POST方式来提交表单。因此需要对httpd.c和httpd.h文件做一些修改。(1)修改httpd.h文件中的宏定义LWIP_HTTPD_SUPPORT_POST,使其支持POST方法。/*设置为1支持POSTSetthisto1tosupportHTTPPOST*/#ifndefLWIP_HTTPD_S

12、UPPORT_POST#defineLWIP_HTTPD_SUPPORT_POST1#endif(2)实现三个函数,关于这三个函数的详细代码,请参考httpd.c文件。a.err_thttpd_post_begin(void*connection,constchar*uri,constchar*http_request,u16_thttp_request_len,intcontent_len,char*response_uri,u16_tresponse_uri_len,u8_t*post_auto_wnd);b.err_thttpd_post_receive_data(void*connec

13、tion,structpbuf*p);c.voidhttpd_post_finished(void*connection,char*response_uri,u16_tresponse_uri_len);2.GCI实现通过表单提交的不同CGI来执行对应的handler函数,在httpd_cgi_ssi.c中我们定义了一个数组ppcURLS,数组如下:staticconsttCGIppcURLs尸/cgi程序("/login.cgi",Login_CGIHandler,/文件名文件功能"/write.cgi",WEBSET_CGIHandler,/文件名文

14、件功能"/setpwd.cgi",SetPwd_CGIHandler,/文件名文件功能"/uart.cgi",SetUart_CGIHandler,/文件名文件功能;关于以上几个cgi说明如下表:CGIHandler函数说明/login.cgiLogin_CGIHandler登录配置/write.cgiWEBSET_CGIHandler串口服务器参数配置/setpwd.cgiSetPwd_CGIHandler登录密码更改/uart.cgiSetUart_CGIHandler串口参数配置当接收到/login.cgi时,就会执行Login_CGIHandle

15、r函数,该函数代码如下:/登录的CGI控制句柄constchar*Login_CGIHandler(intiIndex,intiNumParams,char*pcParam口,char*pcValue)intindex;index=FindCGIParameter("name",pcParam,iNumParams);if(index!=-1)if(strcmp(pcValueindex,lwip_login.username)!=0)/用户名不相等return"/index.shtml"index=FindCGIParameter("pass

16、word",pcParam,iNumParams);if(index!=-1)if(strcmp(pcValueindex,lwip_login.passwd)!=0)/密码不相等return"/index.shtml"return"/lwipset.shtml"/这里返回你要发给浏览器的文件名路径从上面的代码可以看出,通过web浏览器提交的表单项名称依次存放在pcParam中,表单项内容依次存放在pcValue中,iNumParams存放的是提交的数据个数。在Login_CGIHandler中,首先判断是否提交了"name"

17、;和"passward”这些表单标签,然后判断用户名和密码是否相等,如果相等,则进入串口服务器配置界面,否则,登录不成功。其余几个handler函数的原理一样,不再赘述。3.SSI实现这里通过SSI来实现配置信息的显示,如下图:当前网络配置参数静击222.S5.1181200工械呜TCP亍网?Wi259.m25!j0同关t222.24.fi5.254目的JF成场南.222.238R的普ChSO505要实现SSI,必须在制作网页时,在对应的需要显示的位置添加SSI标签,然后在程序检测该标签,从而嵌入对应的数据。SSIHandler函数为SSI的句柄函数,函数代码如下,在这个函数中我们根

18、据参数ilndex调用不同的函数来完成向网页中添加数据,这几个函数比较简单。在httpd_cgi_ssi.c文件中,SSI标签数据定义如下:/SSI插入标签staticconstchar*ppcTAGs=/SSI的Tag("e",登录错误"h",/IP模式"i",/IP地址"j",端口"k",/工作模式"l",/子网掩码"m",/网关"n",/目的IP"o",目的端口"w",/波特率"x

19、",/数据位"y",/校验位"z",/停止位;SSIHandler函数代码如下,该函数通过判断SSI标签ppcTAGs来在不同的位置插入对应的信息。/SSI的Handler句柄根据不同的索引来插入对应的数据/返回:插入数据的字符串长度staticu16_tSSIHandler(intiIndex,char*pcInsert,intiInsertLen)(char*p;switch(ilndex)(case0:/登录错误p="用户名或密码错误!";WEB_dis_Handler(pcInsert,p);break;case1:

20、/IP获取方式if(lwipdev.dhcp_enable)p="动态获取"elsep="静态"WEB_dis_Handler(pcInsert,p);break;case2:/ip地址WEB_dis_Handler(pcInsert,pIp_addr);break;case3:/踹口WEB_dis_Handler(pcInsert,pIp_Localport);break;case4:/工作模式if(lwipdev.tcp_mode=TCP_SERVER_MODE)p="TCPserver"elsep="TCPclient"WEB_dis_Handler(pcInsert,p);break;4.初始化当完成以上步骤后,还需要完成CGI和SSI的初始化,分别调用http_set_cgi_handlers()和http_set_ssi_handler()来完成,代码如下:/SSI句柄初始化voidhttpd_ssi_init(void)(配置内部温度传感器的SSI句柄http_set_ssi_handler(SSIHandle

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论