method=get/post>
------------------------------------------------------------------------------------
Action表示对表单输入处理的方法(url/cgi)
Method表示对表单输入的处理提交方式(get/post)
8、GET/POST方法
method有两个值:
get和post
get的方式是将表单控件的name/value信息经过编码之后,通过URL发送(你可以在地址栏里看到)。
post则将表单的内容通过http发送,你在地址栏看不到表单的提交信息。
9、Input标签
Input标签的语法:
TYPE的值可选为
buttoncheckboxfilehiddenimagepasswordradioresetsubmittext
NAME这个属性为输入类型提供一个名称,表单提交时将与VALUE成对提交
VALUE这个属性值提供了与NAME对应的初始值
10、CGI的概念
概念:
CGI(CommonGatewayInterface)通用网关接口是HTTP服务器与你的或其它机器上的程序进行交互的一种工具,其程序须运行在网络服务器上。
功能:
绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。
CGI程序使网页具有交互功能。
11、CGI处理过程
CGI处理步骤:
⑴通过Internet把用户请求送到服务器。
⑵服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给服务器。
⑷服务器把结果送回到用户
12、CGI工作原理
13、CGI编程编程语言选择
常用CGI编程语言有shellscript、C、visualbasic、perl等等。
在嵌入式中由于完成的任务不是很复杂,一般选择C语言。
C的主要的缺点就是对字符的处理功能不够强大,而CGI往往要涉及到字符的处理。
然而用C语言开发也有好处,比如代码的保密性好,执行效率高。
14、CGI的输入与输出
WEB服务器同CGI程序之间通过四种方式进行交换信息:
环境变量、命令行、标准输入与标准输出/环境变量。
操作系统提供了许多环境变量,它们定义了程序的执行环境,应用程序可以存取它们。
Web服务器和CGI接口又另外设置了自己的一些环境变量,用来向CGI程序传递一些重要的参数。
CGI的GET方法通过环境变量QUERY-STRING向CGI程序传递Form中的数据。
它们是Web服务器传递数据给CGI程序的简单手段。
15、CGI的输入与输出
标准输入:
CGI程序像其他可执行程序一样,可通过标准输入(stdin)从Web服务器得到输入信息,如Form中的数据,这就是所谓的向CGI程序传递数据的方法。
标准输出:
CGI程序通过标准输出(stdout)将输出信息传送给Web服务器。
传送给Web服务器的信息可以用各种格式,通常是以纯文本或者HTML文本的形式,这样我们就可以在命令行状态调试CGI程序,并且得到它们的输出。
16、BOA服务器简介:
嵌入式Web服务器Boa的特点:
Boa是一款单任务的HTTP服务器,与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接,而是通过建立HTTP请求列表来处理多路HTTP连接请求,同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。
同时它还具有自动生成目录、自动解压文件等功能,因此Boa具有很高的HTTP请求处理速度和效率,在嵌入式系统中具有很高的应用价值。
Boa的功能实现:
嵌入式Web服务器Boa和普通Web服务器一样,能够完成接收客户端请求、分析请求、响应请求、向客户端返回请求结果等任务。
它的工作过程主要包括:
(a)完成Web服务器的初始化工作,如创建环境变量、创建TCP套接字、绑定端口、开始侦听、进入循环结构,以及等待接收客户浏览器的连接请求;
(b)当有客户端连接请求时,Web服务器负责接收客户端请求,并保存相关请求信息;
(c)在接收到客户端的连接请求之后,分析客户端请求,解析出请求的方法、URL目标、可选的查询信息及表单信息,同时根据请求做出相应的处理;
(d)Web服务器完成相应处理后,向客户端浏览器发送响应信息,关闭与客户机的TCP连接。
嵌入式Web服务器Boa根据请求方法的不同,做出不同的响应。
如果请求方法为HEAD,则直接向浏览器返回响应首部;如果请求方法为GET,则在返回响应首部的同时,将客户端请求的URL目标文件从服务器上读出,并且发送给客户端浏览器;如果请求方法为POST,则将客户发送过来的表单信息传送给相应的CGI程序,作为CGI的参数来执行CGI程序,并将执行结果发送给客户端浏览器。
Boa的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。
17、Boa的搭建与移植
(1)准备源代码、解压软件包,安装源代码到boa网站http:
//www.boa.org下载boa-0.94.13.tar.gz源代码,或者使用光盘的boa-0.94.13.tar.gz软件包。
$tarxzvfboa-0.94-13.tar.gz
(2)进入src目录,编译源代码。
解压后src目录下有Makefile.in文件,但没有Makefile文件,为了编译源代码,需要先生成Makefile文件,在src目录下运行configure命令$./configure
生成的Makefile文件是针对X86平台的,为了生成能够在ARM上运行的boa,需要修改Makefile文件。
将Makefile如下几行行内容:
CC=gcc
CPP=gcc–E
应用(在交叉编译时使用):
然后输入make命令进行编译,在src目录下就会生成boa文件。
$make然后将该文件添加到文件系统中,重新下载文件系统。
如果不幸出现―ickyLinuxkernelbug!
‖的错误,请将src下boa.c的第226行注释掉,重新编译下载即可。
(3)安装boa服务器
主要是配置boa服务器。
boa启动时需要一个配置文件boa.conf,该文件的缺省目录由src/defines.h文件的SERVER_ROOT定义,或者在启动boa的时候通过参数―-c‖指定。
其中指定的默认目录是:
/etc/boa/。
(4)登录boa服务器
在PC机浏览器地址栏输入目标系统的IP地址,访问存在于目标系统中的网页。
第二部分:
实现AD远程采集
1、解压boa-0.94.13.tar.gz:
进入web目录:
解压:
tarxzvfboa-0.94.13.tar.gz,进入src目录。
2、进行相关修改:
得到compat.h文件,找到120行将连个“##”去掉;得到boa.c文件,将其225~227进行注释;用命令:
./configure对源文件进行配置;最好用命令make对Makefile文件进行编译。
此后便得到可执行文件boa。
3、编译CGI程序:
CGI程序总共有两个及run.c和stop.c两个C文件,进入相关目录,编译命令分别如下:
arm-linux-gcc–orun.cgirun.c、arm-linux-gcc–ostop.cgistop.c,此时生成run.cgi、stop.cgi两个应用程序。
4、BOA服务器的配置:
将主机上/etc目录下的mime.types文件拷至开发板上的/etc目录下。
相关说明如下:
/var/log/boa/error_log:
表示将错误信息记录到指定文件中
/dev/null:
表示远程请求信息记录到指定文件中
/var/www:
表示html文件存放的目录
/var/www/cgi-bin:
表示CGI程序存放执行的地址
因此,将index.html、adc.html和adc.xml三个文件拷贝到开发板的/var/www目录下;把刚才编译得到的run.cgi、stop.cgi拷贝到/var/www/cgi-bin目录下;还要在/var/log/boa目录下建一个error_log文件,命令:
toucherror_log。
5、实现远程采集:
把刚才编译得到的boa可执行文件拷贝至/var/log/boa目录下,然后启动boa服务器,命令如下:
./boa。
启动boa服务器后,在Ubuntu10.04下启动Firefox(火狐浏览器),输入开发板的IP地址,即:
http:
//192.168.4.194,打开的页面如下:
点击上面的“查看”按钮后,出现如下页面:
这时候转动开发板上的AD输入的三个旋钮,查看三个通道的采样值是否变化。
点击“停止采集”按钮后,会跳到第一个页面,再次点击按钮“查看”可以重新开始,再次出现如下页面:
AD远程采集实验基本实现预期结果。
五、课程设计的心得体会:
在课程的设计制作过程中,确实遇到了各种各样的问题,如调试思路正确但是没有能够进行找到合适的方法进行进一步的实验,设计中对于程序的编写以及目录结构的认知上存在偏差,其主要原因还是基础功不扎实,把握系统的能力不足,这为我们以后的学习和工作提了一个醒。
在问题的解决过程中,也提高了我的动手动脑能力,学到了许多在书本上学不到的知识。
在具体的设计当中解决了诸如boa服务器的搭建和C程序的修改等。
此次课程设计给我最深的体会就是:
理论+细心+实践才能在实际生产中体现所学知识的价值。
在嵌入式行业发展如此快速完善的今天,理论与细心与实际的完美结合才能让自己在专业领域占有一席之地。
在课程设计中,我初步了解了嵌入式处理器S3C2410及相关浏览器的工作原理、也加深了对嵌入式处理器S3C2410的认识;也见识了关于嵌入式处理器的一些工作方式等。
一周的课程设计结束了,然而终究还是学会了很多东西。
在整个课程设计期间,我体会到了自己的进步,并且从中也体会到了它的快乐。
课程设计也让我明白了:
第一,通过实践真正觉得自己可以做些什么了有点存在的小成就感;第二,通过课程设计,加强了我们的动手实践能力和设计创新精神。
作为信息时代的大学生基本的动手能力是一切工作和创造的基础和必要条件。
第三,课程设计的这些日子里,大家的团队精神得到了很大的加强,闭门就会造车那是不可能的事情。
在为期一周的课程设计当中感触最深的便是实践联系理论的重要性,当遇到实际问题时,只要认真思考,运用所学的知识,一步一步的去探索,是完全可以解决遇到的一般问题的。
本次课程设计的目的主要是:
使我们嵌入式操作系统及LINUX相关操作有一定的感性和理性认识,培养和锻炼我们的实际动手能力。
使我们的理论知识与实践充分地结合,作到不仅具有专业知识,而且还具有较强的实践动手能力,能分析问题和解决问题的应用型技术人才,为以后的顺利就业作好准备。
此次课程设计学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。
在此,感谢老师及其他老师的细心指导,也同样谢谢其他各组同学的无私帮助!
六、参考资料:
1、
2、
3、
4、韦东山著.嵌入式LINUX应用开发完全手册北京:
人民邮电出版