基于STM32的串口服务器web功能实现

上传人:壹****1 文档编号:486247988 上传时间:2022-11-09 格式:DOCX 页数:11 大小:687.02KB
返回 下载 相关 举报
基于STM32的串口服务器web功能实现_第1页
第1页 / 共11页
基于STM32的串口服务器web功能实现_第2页
第2页 / 共11页
基于STM32的串口服务器web功能实现_第3页
第3页 / 共11页
基于STM32的串口服务器web功能实现_第4页
第4页 / 共11页
基于STM32的串口服务器web功能实现_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于STM32的串口服务器web功能实现》由会员分享,可在线阅读,更多相关《基于STM32的串口服务器web功能实现(11页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上基于STM32的串口服务器web功能实现编制: 陈志磊 校对: 审核: 日期: 2014-12-30 版本:V1.0专心-专注-专业更改次数更改时间更改内容版本12014-12-30初版V1.0说明:本文主要说明通过web访问来配置串口服务器参数的功能,前提要求LWIP和uCOSII都已移植成功。实现B/S结构,须将串口服务器配置为web server。一 Web Server 文件以及相关技术简介1.相关文件说明ST公司的官网上提供了通过LWIP完成web server配置的例程,打开我们的工程文件夹“LwIP1.4.1移植STM32 V1.8”,在LWIP-APP

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

3、SI技术来嵌入数据的,需要将网页后缀设为shtml、shtm、stm等。ST的例程默认使用首页索引在httpd.c中g_psDefaultFilenames数组里表示,该数组如下:const default_filename g_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 是用来将编辑好的网页文件转换成二进制数的一个工具。接下来我们讲解一下这个工具的使用方法下面我们讲解 makefsdata 工具

5、的使用。(1)新建一个名为 fs 的文件夹, 将编辑好的网页源文件放到 fs 文件夹下,里面包含了编辑好的 html 和.shtml 等网页文件,其中 image 文件夹里面是我们使用到的图片。(2)将 fs 文件夹和 makefsdada.exe 工具放到同一文件夹下,此处为 makefsdata 文件夹,打开makefsdata 文件夹,如下图所示。图中的 echotool.exe 和 Tftpd32-3.51-setup.exe 为其他工具,这里没有使用到,cmd.reg 稍后我们会讲到。(3)在 makefsdata 文件夹上点击鼠标右键,然后点击”在此位置打开 CMD”选项,打开后结

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

7、与 Web 服务器之间的接口标准,是在 CGI 程序和Web 服务器之间传递信息的规程。 CGI 规范允许 Web 服务器执行外部程序,并将它们的输出发送给 Web 浏览器, CGI 在物理上是一段程序,运行在服务器上,提供同客户端 HTML 页面的接口。绝大多数的 CGI 程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器, CGI 程序使网页具有交互功能。比如通过web来处理提交的数据,用的就是CGI技术。CGI示意图如下:4.SSI技术简介服务器端嵌入: Server Side Include,是一种类似于 ASP 的基于服务器的网页制作技术。大多

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

9、名是 .stm、 .shtm和 .shtml。SSI 是为 WEB 服务器提供的一套命令,这些命令只要直接嵌入到 HTML 文档的注释内容之中即可。如: 就是一条 SSI 指令,其作用是将info.htm的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它 HTML 文档一样显示 info.htm 其中的内。在本项目中,将串口服务器的配置信息通过SSI嵌入的方式来显示到网页上,还有一种比较高效的交互方式,即通过ajax来实现异步交互,有兴趣可以研究下。二 软件设计前面介绍过,fs.c 文件管理生成的网页数组文件这个文件由 ST 提供。 httpd.c 文件是本章实验的重点, 这个文件将开发板

10、配置为 Web Server,这个文件也由 ST 官方提供的, 阅读这个文件需要有网页相关的知识,这里对这个文件不做讲解。当在浏览器中输入网址, web服务器就会返回给我们相应的网页,然后浏览器解析并呈现给我们。同样的,当我们通过浏览器访问开发板的时候,开发板这时是作为服务器的,服务器针对不同的 URL 在 fsdata.c 文件中找出相应的网页,并且返回给浏览器, 在 fsdata.c 文件中查找网页的过程就需要 fs.c 里面的函数。 接收浏览器发送的数据并且将网页返回给浏览器的过程都是由 httpd.c 文件里面的函数来完成的。1.POST方法实现ST的例程中默认使用的是GET方法,而在

11、提交用户名和密码等数据时,希望安全性更高;在提交串口服务器的配置信息时,信息比较多,也不希望全部添加到URL中,综上考虑,选择使用POST方式来提交表单。因此需要对httpd.c和httpd.h文件做一些修改。(1)修改httpd.h文件中的宏定义LWIP_HTTPD_SUPPORT_POST,使其支持POST方法。/* 设置为1支持POST Set this to 1 to support HTTP POST */#ifndef LWIP_HTTPD_SUPPORT_POST#define LWIP_HTTPD_SUPPORT_POST 1#endif(2)实现三个函数,关于这三个函数的详细

12、代码,请参考httpd.c文件。a.err_t httpd_post_begin(void *connection, const char *uri, const char *http_request, u16_t http_request_len, int content_len, char *response_uri, u16_t response_uri_len, u8_t *post_auto_wnd);b.err_t httpd_post_receive_data(void *connection, struct pbuf *p);c.void httpd_post_finished

13、(void *connection, char *response_uri, u16_t response_uri_len);2.GCI实现通过表单提交的不同CGI来执行对应的handler函数,在 httpd_cgi_ssi.c 中我们定义了一个数组 ppcURLS,数组如下:static const tCGI ppcURLs= /cgi程序/login.cgi,Login_CGIHandler ,/文件名 文件功能 /write.cgi,WEBSET_CGIHandler ,/文件名 文件功能 /setpwd.cgi,SetPwd_CGIHandler ,/文件名 文件功能/uart.cg

14、i,SetUart_CGIHandler,/文件名 文件功能;关于以上几个cgi说明如下表:CGIHandler函数说明/login.cgiLogin_CGIHandler登录配置/write.cgiWEBSET_CGIHandler串口服务器参数配置/setpwd.cgiSetPwd_CGIHandler登录密码更改/uart.cgiSetUart_CGIHandler串口参数配置当接收到/login.cgi时,就会执行Login_CGIHandler函数,该函数代码如下:/登录的CGI控制句柄const char* Login_CGIHandler(int iIndex,int iNumParams,char *pcParam,char *pcValue) int index; index = FindCGIParameter ( name, pcParam, iNumParams ); if(index!=-1)if(strcmp(pcValueindex,lwip_login.username) != 0)/用户名不相等return /index.shtml; index = FindCGIParameter ( password, pcParam, iNumParams ); if(index!=-1)if(strcmp(pcV

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号