您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 嵌入式web服务器及远程测控应用方案
嵌入式WEB服务器及远程测控应用详解V0.11潘应云shlpyy@163.com南京师范大学(本稿也是仓促完成,还有许多地方还需要修改)目录前言第一章:嵌入式WEB服务器的移植及注意点第二章:HTML中表单的使用第三章:XML技术及JavaScript技术在网页中的使用第四章:CGI介绍及表单提交方式第五章:简单的LED测试第六章:A/D测量及在网页中的显示第七章:基于ZC301摄像头开源视频服务器代码移植第八章:IP自动获得的设置和测试第九章:复杂LED测试第十章:基于I/O多路复用技术的并发服务器(C语言)第十一章:JavaApplet服务器编程第十二章:JavaApplet动态曲线显示嵌入式WEB服务器及远程测控应用详解V0.12前言:嵌入式WEB服务器及远程测控是导师的毕业课题,总的思想就是网络化仪器。现在完成的目标要先确定下来,就是设计基于Linux操作系统的远程测控系统,并且讨论在核辐射实验中可行性研究,我们通过普通的浏览器就可以对远端现场的控制和测量以及获取远端现场的图像信息。使用嵌入式WEB服务器的好处有这样几点:(1)远程监控终端仅需要安装浏览器即可,IE或Netscape等软件大多由操作系统自带,无需开发专门的应用软件,降低系统成本。(2)浏览器所在的监控终端平台与Web所在的服务器平台无关,监控终端可以采用多种操作系统,真正实现了跨平台。(3)操作界面简单统一,表达直观生动,用户无需经过专门培训。(4)易于扩展新的功能,系统升级仅需在Web服务器一端添加相应模块,与远程监控终端无关,降低系统升级维护费用。(5)可提供分布式并行处理,基于Web的测控系统可构成一个多CPU协调工作的分布式测控系统,可并行处理多个测控指令。整个结构是一个B/S结构的,研究这个课题的人很多,资料也很丰富。总之,本人系统整体结构如下:图1系统整体结构它所涉及的知识很多,主要包括Linux操作系统,内核移植,文件系统的移植,服务器的移植,CGI程序的移植,CGI脚本的编写,A/D采集的调试和JavaScript脚本,TCP服务器与客户端,UDP服务器与客户端,Java中的多线程技术,Java画图板及各种控件的添加。在整个学习的过程中也遇到不少困难,以前甚至网页制作都没有涉及,所以什么都得从头开始,Google在我需要资料和寻求解答的时候总是能帮上不少的忙,这里要感谢那些无偿贡献自己宝贵资料的朋友们。下面提供几张已经做好的测控服务器的图片,先达到一个感性的认识。图2是远程摄像头和四个通道的温度采集的示例。摄像头采用普通的USB摄像头,而四个通道的温度采集则是采用JavaScript脚本从服务器端读取XML文件中的温度值。图3是LED控制页面,它可以通过网页上按钮选择LED闪烁周期和闪烁频率。图4是一个智能家庭的模拟,可以通过网页看到家中门窗、水、煤气、室内外温度和湿度等。图5是一个实时波形的显示,它将采集到的波形实时的在网页中显示出来(如果有必要的话可以加入频谱图等)。嵌入式WEB服务器及远程测控应用详解V0.13图2ARM9远程实时视频及温度测量图3复杂的LED控制嵌入式WEB服务器及远程测控应用详解V0.14图4家庭环境监测图5实时数据采集及波形显示嵌入式WEB服务器及远程测控应用详解V0.15第一章嵌入式WEB服务器的移植及注意点嵌入式WEB服务器种类很多,下面提供各种小型服务器的连接。此文摘自小型Web服务器包括:CheetahServer,用不到一千行的C代码编写而成。DustMote,一个非常小的Web服务器,用一个大约3000字节的Tcl源文件实现。fnord,大小取决于平台和配置,不超过20K。虽然很小,但是它支持虚拟主机、CGI和keep-alive。ihttpd,使用不到800行的C代码,包括CGI,并通过inetd提供页面。im-httpd,非常小的服务器——只有大约7KB,链接到glibc。而且它也非常快。mattows,支持CGI,只有600行C代码。Scrinchy,虽然很小,不到30KB,但是支持多种脚本编制语言,包括一种特殊用途的、基于栈的Sy脚本语言。ZWS演示了一个即使是使用500多行带足够注释的zsh(!)编写的应用程序——在这里是一个HTTP0.9+服务器——也可以有多强大。体积小并不妨碍这些服务器被正式使用。例如,fnord可以处理数千个同时进行的连接。也许轻量级作为一个类别最令人印象深刻的成就是高性能服务器:cghttpd是一个小型Web服务器,它被理解为使用2.6系列内核中可用的异步功能的一个试验品。darkhttpd是一个快速的、单线程的HTTP/1.1服务器。Gatling是为高性能设计的。它的特性包括FTP、IPv6、虚拟主机、CGI等。Kernux是一个Linux内核模块,它实现了一个HTTP守护进程。lighttpd是使用率排名第五的Web服务器(排名还在上升)。它为很多同时进行的连接进行了优化:“典型的场景是使用lighttpd作为一个下载(off-load)服务器,以提供静态内容……”LiteSpeedWebServer是一款轻量级商业Web服务器,强调性能和安全性。LiteSpeedTechnologies公司宣传为静态内容提速了6倍,在解释页面方面也有一定的提高。MiniatureJWS,也称tjws,它是基于Java的Web服务器,可以处理servlet、JSP和数千个并发连接,而大小只有77KB。它的作者声称它“比Apache2.x快10%”。Yaws是用Erlang编写的一款高性能HTTP/1.1服务器。有些Web服务器被实现为类或库,以便嵌入到较大的应用程序中。在这些Web服务器当中,我发现特别有趣的有:EHS——“嵌入式HTTP服务器”,被设计为一个C++类,用于嵌入到较大的C++应用程序;还有嵌入式WEB服务器及远程测控应用详解V0.16EmbeddedTCLWebServer,它是一个很普通的Web服务器,支持SSL和BasicAuthentication,速度非常快——其作者使它至少与lighthttpd和AOLserver一样快。它是用不到100行Tcl编写的。Python是几种适合不寻常环境的Web服务器的实现语言,这些Web服务器包括:cdServer是一个小型的、用Python编写的HTTP服务器,它“被设计用来提供来自CD-ROM的(静态)内容”。它在提供动态内容方面能力有限。我们有几个涉及不受影响的“liveCDs”的项目,在这些项目中像cdServer之类的工具很关键。edna,一款智能的用Python编写的MP3服务器,它是用HTTP实现的。还有其他一些用Perl和其他不出名的语言编写的轻量级Web服务器:Camlserv,用ocaml编写的一个完整的Web服务器,目标是“高度交互式的Web页面”。它由几千行ocaml编写而成,其中大部分代码都与MySQL和HTML的特殊处理有关。dhttpd用和Apache相同的格式记录访问。它支持CGI,并具有内建的Perl解释器、虚拟主机、IPv6、带宽管理和安全性等方面的特性。DNHTTPD是用Perl编写的,用于UNIX®。它支持虚拟主机、SSL连接、CGI等。Jellybean是用Perl编写的基于HTTP的PerlObjectServer。lns.http是一个CommonLISPHTTP/1.1Web框架。Mongrel是用Ruby编写的、用于HTTP的一个库和服务器。Nanoweb是用PHP编写的一款快速、健壮的Web服务器。它宣称具有丰富的特性,包括完全遵从HTTP/1.1、访问控制、身份验证、虚拟主机、SSL兼容性等。Naridesh是用Perl编写的Web服务器。OpenAngel是用Perl编写的。它强调的重点是安全性。Xavante是用Lua编写的HTTP/1.1Web服务器。XSP是用C#编写的,用于运行ASP.NET。有时候您可能需要其他一些用C编写的、具有不常见的次要优势的轻量级Web服务器:ABYSS可以在UNIX和Win32之间移植,其“目的是成为完全遵从HTTP/1.1的Web服务器”。它占用的内存很少。Anti-WebHTTPD(也称“Anti-Web”、“awhttpd”和“AW”)是一款单进程、无线程、支持CGI的服务器,它强调安全性和简单性。MHTTPD支持从外部文件或LDAP服务器进行的MHTTPDBasicAuthentication。mini-httpd可以在一个系统线程中处理多个并发请求,但是在主机上占用的内存或CPU很少。NakenWeb类似于很多其他的轻量级服务器——它支持BasicAuthentication、静态内容等——但是它的作者将它设计为用于Webcam操作,并且在Gumstix、WRT54GL、OpenWrt和其他新的平台上运行。Nullhttpd是一款多线程的、简单的、可移植的Web服务器。Seminole是一款商业Web服务器,内存需求较小,功能较多。嵌入式WEB服务器及远程测控应用详解V0.17thttpdthrottle,支持chroot、BasicAuthentication等。在许多应用中我们可以选择不同的服务器。BOA服务器移植参考资料较为全面,在系统设计中选用它作为嵌入式WEB服务器。1.1嵌入式BOA服务器移植移植过程参考《嵌入式Linux系统开发详解——基于EP93XX系列ARM》及网络上一篇文章《WEB服务器-----Boa实验笔记》,下面是自己在S3C2410平台上移植Boa的过程。第一步完成Boa程序的移植从源码,当前的版本是0.94.13,将其解压并进入源码目录的src子目录。#tarxzfboa-0.94.13.tar.gz#cdboa-0.94.13/src生成Makefile文件#./configure修改Makefile文件(注:这里修改根据自己的交叉编译器自行修改),修改CC=gcc为CC=armv4l-unknown-linux-gcc修改CPP=gcc-E为CPP=armv4l-unknown-linux-gcc–E修改头文件defines.h找到#defineSERVER_ROOT“/etc/boa”修改成#defineSERVER_ROOT“/var/”这里定义的是web服务器的文件根目录(用户可以自行定义,只要跟boa.conf中设置一致就可以了)然后运行make进行编译,得到的可执行程序boa,将调试信息剥去,得到的最后程序只有62872Byte大小。#make#armv4l-unknown-linux-stripboa第二步完成Boa的配置,使其能够支持CGI程序的执行。在boa源码目录下有一个boa.conf可以对其作如下修改:#Boav0.94configurationfile#Fileformathasnotchangedfrom0.93#Fileformathaschangedlittlefrom0.92#versionchangesarenotedinthecomments##TheBoaconfigurationfileisparsedwithalex/yaccorflex/bison#generatedparser.Ifitreportsanerror,thelinenumberwillbe#provided;itshouldbeeasytospot.Thesyntaxofeachofthese嵌入式WEB服务器及远程测控应用详解V0.18#rulesisverysimple,andtheycanoccurinanyorder.Wherepossible#thesedirectivesmimicthoseofNC
本文标题:嵌入式web服务器及远程测控应用方案
链接地址:https://www.777doc.com/doc-1591302 .html