嵌入式 WEB 服务器及远程测控应用详解 V0.1
1
潘应云 shlpyy@163.com 南京师范大学
(本稿也是仓促完成,还有许多地方还需要修改)
目录
前言
第一章:嵌入式 WEB 服务器的移植及注意点
第二章:HTML 中表单的使用
第三章:XML 技术及 Java Script 技术在网页中的使用
第四章:CGI 介绍及表单提交方式
第五章:简单的 LED 测试
第六章:A/D 测量及在网页中的显示
第七章: 基于 ZC301 摄像头开源视频服务器代码移植
第八章: IP 自动获得的设置和测试
第九章:复杂 LED 测试
第十章:基于 I/O 多路复用技术的并发服务器(C 语言)
第十一章: Java Applet 服务器编程
第十二章: Java Applet 动态曲线显示
嵌入式 WEB 服务器及远程测控应用详解 V0.1
2
前言:
嵌入式 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 摄像头,而四个通道的温度采
集则是采用 Java Script 脚本从服务器端读取 XML 文件中的温度值。图 3 是 LED 控制页面,
它可以通过网页上按钮选择 LED 闪烁周期和闪烁频率。图 4 是一个智能家庭的模拟,可以
通过网页看到家中门窗、水、煤气、室内外温度和湿度等。图 5 是一个实时波形的显示,它
将采集到的波形实时的在网页中显示出来(如果有必要的话可以加入频谱图等)。
嵌入式 WEB 服务器及远程测控应用详解 V0.1
3
图 2 ARM9 远程实时视频及温度测量
图 3 复杂的 LED 控制
嵌入式 WEB 服务器及远程测控应用详解 V0.1
4
图 4 家庭环境监测
图 5 实时数据采集及波形显示
嵌入式 WEB 服务器及远程测控应用详解 V0.1
5
第一章 嵌入式 WEB 服务器的移植及注意点
嵌入式 WEB 服务器种类很多,下面提供各种小型服务器的连接。此文摘自
http://www.ibm.com/developerworks/cn/web/wa-ltwebserv/index.html
小型 Web 服务器包括:
Cheetah Server,用不到一千行的 C 代码编写而成。
DustMote,一个
非常
小的 Web 服务器,用一个大约 3000 字节的 Tcl 源文件实
现。
fnord,大小取决于平台和配置,不超过 20K。虽然很小,但是它支持虚拟主机、
CGI 和 keep-alive。
ihttpd,使用不到 800 行的 C 代码,包括 CGI,并通过 inetd 提供页面。
im-httpd,非常小的服务器 — — 只有大约 7 KB,链接到 glibc。而且它也非常
快。
mattows,支持 CGI,只有 600 行 C 代码。
Scrinchy,虽然很小,不到 30KB,但是支持多种脚本编制语言,包括一种特殊用
途的、基于栈的 Sy 脚本语言。
ZWS 演示了一个即使是使用 500 多行带足够注释的 zsh (!) 编写的应用程序
— — 在这里是一个 HTTP 0.9+ 服务器 — — 也可以有多强大。
体积小并不妨碍这些服务器被正式使用。例如,fnord 可以处理数千个同时进行的连接。
也许轻量级作为一个类别最令人印象深刻的成就是高性能服务器:
cghttpd 是一个小型 Web 服务器,它被理解为使用 2.6 系列内核中可用的异步功
能的一个试验品。
darkhttpd 是一个快速的、单线程的 HTTP/1.1 服务器。
Gatling 是为高性能设计的。它的特性包括 FTP、IPv6、虚拟主机、CGI 等。
Kernux 是一个 Linux 内核模块,它实现了一个 HTTP 守护进程。
lighttpd 是使用率排名第五的 Web 服务器(排名还在上升)。它为很多同时进行
的连接进行了优化:“典型的场景是使用 lighttpd 作为一个下载(off-load)服务器,
以提供静态内容… … ”
LiteSpeed Web Server 是一款轻量级商业 Web 服务器,强调性能和安全性。
LiteSpeed Technologies 公司宣传为静态内容提速了 6 倍,在解释页面方面也有
一定的提高。
Miniature JWS,也称 tjws,它是基于 Java 的 Web 服务器,可以处理 servlet、
JSP 和数千个并发连接,而大小只有 77 KB。它的作者声称它 “比 Apache 2.x 快
10%”。
Yaws 是用 Erlang 编写的一款高性能 HTTP/1.1 服务器。
有些 Web 服务器被实现为类或库,以便
嵌入
到较大的应用程序中。 在这些 Web 服务
器当中,我发现特别有趣的有:
EHS — — “嵌入式 HTTP 服务器”,被设计为一个 C++ 类,用于嵌入到较大的 C++
应用程序;还有