动态Web Server在单片机上的实现

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:MENTAL2010
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:通过在单片机上实现网络化功能,从而进行远程控制已成为嵌入式系统发展的一个方向。本文就此需求介绍了动态Web Server的基本原理,讨论了在无操作系统单片机环境中开发动态Web Server的一种可行的方法。
  关键词:单片机;动态Web Server;HTTP;HTML
  中图分类号:TP368.1文献标识码:A文章编号:1007-9599 (2012) 02-0000-02
  Implementation of Dynamic Web Server on MCU
  Li Xingfu1,Gao Jingshu2,Hou Xuelian3
  (1.Huachentel Technology Development Corpration,Shandong China,Jinan250101,China;2.Jinan Power Supply Company,Jinan250012,China;3.State Grid of China Technology College,Taishan Campus Information Center,Taian271000,China)
  Abstract:Through nework functions on MCU to realize the remote control has become a direction of embedded system development.This article introduces the basic principles of the Dynamic Web Server,discussed a feasible method of developing dynamic Web Server in non-operating system chip microcomputer environment.
  KeyWords:MCU;Dynamic Web Server;HTTP;HTML
  在电力通讯及其它一些通讯应用中,越来越多的需要可以进行远程操作和配置的通讯设备。SNMP网管是一种比较通用的方法,但是在单机或者无网管系统的情况下,Web方式是一种更简便,甚至更有效的方法。在一些带操作系统(如Linux、vxWorks)的嵌入式系统中都有一些成熟的Web Server(如Boa、Go Ahead)解决方案可以使用,但是还有很多中、小型设备只能无操作系统的单片机作为主控,本文就是讨论在此环境下动态Web Server的具体实现。其中最大的难点是文件系统的模拟和CGI程序的实现。
  一、Web Server、HTTP、HTML和CGI簡介
  Web浏览器(如Internet Explorer)使用HTTP(Hypertext Transfer Protocol)协议与服务器(Web Server)进行交互,交互的内容主要使用HTML(HyperText Markup Language)语言描述。
  HTTP定义了与服务器交互的不同方法,最基本的方法是GET和POST。GET适用于从服务器上获取数据,而POST主要用于更新站点。
  表单(FORM)是HTML的一个重要部分。用户通过填写FORM向服务器请求或者提交数据,服务器根据用户的请求返回相应信息。FORM顶部的
标识符有两个参数:ACTION和METHOD。ACTION表示要把参数提交给的对象,一般是CGI、ASP、PHP等脚本程序;METHOD定义了表单的提交机制:GET或者POST,这与HTTP的GET和POST请求相对应。
  网页具有交互功能是动态Web Server的主要特点,这需要使用CGI(Common Gateway Interface)。CGI程序运行在服务器端,主要被用来解释来自客户端FORM的输入信息,并进行相应的处理,或将相应的信息反馈给浏览器。
  二、HTTP协议分析
  HTTP由两部分组成:请求和响应。例如在Web浏览器中输入一个URL时,浏览器将根据你的要求创建并发送请求,该请求包含所输入的URL以及一些与浏览器本身相关的信息。当服务器收到这个请求时将返回一个响应,该响应包括与该请求相关的信息以及位于指定URL(如果有的话)的数据。
  HTTP请求的格式如下所示:
  <request-line>
  <headers>
  <blank line>
  [<request-body>]
  在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型(GET或者POST)、要访问的资源以及使用的HTTP版本。紧接着是一个首部(headers)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,在此之后可以添加任意的其他数据[称之为主体(body)或者是内容(content)]。
  比如要获取www.baidu.com的home.html页面,则产生的HTTP GET请求类似于:
  GET/home.html HTTP/1.1
  Host:www.baidu.com
  User-Agent:Mozilla/4.0
  Connection:Keep-Alive
  要发送带参数的GET请求,则只需将参数的信息附在URL本身的后面便可。其格式类似于:
  GET/get.cgi?T1=abc&T2=123 HTTP/1.1
  ……
  HTTP响应的格式如下所示:
  <status-line>
  <headers>
  <blank line>
  [<response-body>]
  HTTP响应格式中与请求格式真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。
  三、动态Web Server在单片机上的设计
  Web Server的主要功能就是接收HTTP包,然后HTTP的请求做相应的处理并返回需要的页面或者是结果。而动态Web Server能响应用户的请求并动态的产生结果,就目前而言,采用运行在服务器端的CGI应用程序是一种主要的实现动态Web Server的方式。
  (一)文件系统在单片机上的实现
  由于单片机容量有限,真正文件系统的实现非常受限制,现把具体的网页文件编译到程序中,并且使用函数来模拟CGI文件,而且做了一定的处理,极大增加了系统的可扩展性。
  每一个文件使用数据结构Page来表示:
  struct
  {
  char*name; /*文件的名字*/
  char type; /*文件的类型*/
  int len; /*文件的长度*/
  char*addr; /*文件存储的地址*/
  }Page;
  其中type可以为HTML型、GIF型、JPEG型和CGI型等。
  然后把所有的文件使用一个文件数组Pages组织起来:
  Page Pages[]=
  {
  {“index.html”,PAGE_TYPE_HTML,html_index},
  {“logo.gif”,PAGE_TYPE_GIF,gif_logo},
  {“get.cgi”,PAGE_TYPE_CGI,cgi_get},
  {“post.cgi”,PAGE_TYPE_CGI,cgi_post}
  }
  其中html_index表示一个名为“index.html”的普通网页,C语言的表示方式为:
  char html_index[]=
  {
  “ ”
  ……
  “
  “ ”
  ……
  “

  “

  ……
  “

  ……
  “ ”
  };
  gif_logo表示一个名为“logo.gif”的gif图像文件,可以使用工具将真实的logo.gif文件按照十六进制方式转化成C语言数组的格式:
  unsigned char gif_logo[]=
  {
   0x47,0x49,0x46,0x38,0x37,0x61,0x64
   ……
  }
  cgi_get代表一個名为“get.cgi”的CGI文件,其内部使用一个C语言函数来表示。此函数的主要作用是处理URL为./get.cgi带参数的GET请求,并把结果填充到HTTP发送缓冲区中。格式如下:
  int cgi_get(int argc,char*argv[],char*httpsendbuf);
  其中argc表示传入函数参数的个数,argv表示具体的参数,此处传入函数的参数即为HTTP GET请求所带的参数。
  (二)Web Server设计流程
  
  图4.1 Web Server设计流程图
  四、结束语
  本文详细分析了HTTP协议格式和HTML语言,提出了在无操作系统单片机上实现动态Web Server的一种切实可行的简便的方法。此方法已经大量应用在了变电所的一些光猫、接口转换器等设备上,且运行良好。
  参考文献:
  [1]RFC2616.Hypertext Transfer Protocol--HTTP/1.1
  [2]Stevens.TCP/IP详解,卷3[M].北京:机械工业出版社,2001:129-141
  [3]杜江.PHP5与MySQL5 Web开发技术详解[M].北京:电子工业出版社,2007:170-177
  [4]刘伟,李小武,罗明.CGI技术全面接触[M].北京:清华大学出版社,2001:5-58
  [5]马忠梅.单片机的C语言应用程序设计[M].北京:北京航天航空大学出版社,2007,4
  [6]曾碧,蔡治,吕毅恒.基于ARM的嵌入式Web Server的构建技术[J].工业控制计算机,2007,7
  [作者简介]李幸福,男,山东济南人,山东华辰泰尔科技发展有限公司,研发部,软件工程师;高靖姝,女,山东济南人,济南供电公司,信息中心,助理工程师;侯雪莲,女,山东济宁人,国网技术学院泰山校区信息中心,中级讲师。
其他文献
本文阐述了随着油田的发展,勘探开发工作任务的日趋加大,大港油田勘探开发研究院原有瘦客户端系统的软硬件条件已经不能满足现在的科研工作的需要,用户对地震解释瘦客户端系统(Ap
摘要:局域网的应用非常广泛,办公系统、图书馆等,但在工业生产中应用的比较少,本文根据我们印刷企业在具体工作中的不断摸索而不断采用并完善的,局域网的应用减少了很多中间环节,加快了生产工序的流转,使企业现有设备可能集中使用,从而构成了一个完整的印刷体系和流程。本文仅以多年工作经验简要阐释局域网在印刷工序上的应用。  关键词:局域网;印刷工序;集合效应  中图分类号:R197.2 文献标识码:A
综合布线(Premises Distribution System)扮演着信息高速公路最后1KM的角色。计算机网络综合布线工程质量的优劣不仅关系到用户能否获得一个为其提供优质服务的计算机信息网络,
本文以中航飞机股份有限公司2012年发生的资产重组为研究对象,采取主成分分析法,对其资产重组前后的绩效进行对比分析。研究发现:中航飞机此次资产重组是一起比较成功的重组案例
<正> 刘国钧教授是我国近代图书分类学的奠基人之一。在他一生的著述中,有关图书分类的占有很大比重,计有专著四种,论文二十二篇,还翻译了不少论著。从刘国钧教授已发表的著