嵌入式远程监控系统设计与实现.docx
《嵌入式远程监控系统设计与实现.docx》由会员分享,可在线阅读,更多相关《嵌入式远程监控系统设计与实现.docx(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第3章 嵌入式远程监控系统设计与实现1.1 课程设计目的通过本课程设计,要对嵌入式系统的开发有比较深入的学习和分析。通过对WEB编程、服务器的架设、驱动程序的开发这些步骤的深入研究,掌握构建一个完备的嵌入式系统的开发流程。1.2 课程设计要求通过本课程设计,熟练前面几章的内容。在此基础上,编写相关驱动程序,以及CGI和数据处理程序完成基于WEB的嵌入式远程控制系统。通过本章的课程设计,可以初步了解一个嵌入式系统的基本构建过程,学习如何在ARM系统上搭建嵌入式服务器,并通过CGI控制外部设备的一般方法。1.3 系统简介嵌入式WEB 服务器及远程测控总的思想就是网络化仪器。完成的目标就是设计基于L
2、inux 操作系统的远程测控系统,并且讨论实践中的可行性,我们通过普通的浏览器就可以对远端现场的控制和测量以及获取远端现场的图像信息。使用嵌入式WEB 服务器的好处有这样几点:(1) 远程监控终端仅需要安装浏览器即可,无需开发专门的应用软件,降低系统成本。(2)浏览器所在的监控终端平台与WEB 所在的服务器平台无关,监控终端可以采用多种操作系统,真正实现了跨平台。(3)操作界面简单统一,表达直观生动,用户无需经过专门培训。(4)易于扩展新的功能,系统升级仅需在Web 服务器一端添加相应模块,与远程监控终端无关,降低系统升级维护费用。系统整体结构如下:图3.1 系统整体结构远程监控系统所涉及的知
3、识点很多,主要包括Linux 操作系统,内核移植,文件系统的移植,服务器的移植,CGI 程序的移植,CGI 脚本的编写,设备驱动的调试和JavaScript 脚本,TCP 服务器与客户端,UDP 服务器与客户端,Java 中的多线程技术,Java 画图板及各种控件的添加。下面提供几张已经做好的测控服务器的图片,先达到一个感性的认识。图3.2 是一个实时视频及温度测量远程监控系统,它将采集到的图像以及温度参数在网页中显示出来。图3.2 ARM9 远程实时视频及温度测量在这一章中我们将学习一个基本的嵌入式远程监控系统的搭建,由于涉及到的知识点较多,我们只能把其中最主要的知识简要地描述,更多更详细的
4、设计可以参考手册后面的参考文献。通过对本章的学习,读者可以了解架设一个嵌入式WEB服务器的全过程及其要点。1.4 嵌入式WEB服务器移植1.4.1 BOA的移植1、下载BOA源码下载地址: 或者。最新发行版本: 0.94.13 下载 boa-0.94.13.tar.gz,注意:从boa 上下载的是boa-0.94.13.tar.gz,按照一般解压步骤进行解压:# tar xzf boa-0.94.13.tar.gz 2、生成Makefile文件生成Makefile 文件直接运行src/configure 文件。 3、修改Makefile文件修改Makefile 文件修改 CC = gcc 为
5、CC = arm-linux-gcc 修改 CPP = gcc - E 为 CPP = arm-linux-gcc -E4、编译# make 生成boa 文件 # arm-linux-strip boa 去掉文本信息,使boa 变小# make 生成boa 文件 # arm-linux-strip boa 去掉文本信息,使boa 变小5、BOA的配置BOA 需要在/etc目录下建立一个boa 目录,里面放入BOA的主要配置文件boa.conf。在BOA源码目录下已有一个示例boa.conf,可以在其基础上进行修改。 (a)、Group 的修改修改 Group nogroup 为 Group 0
6、 由于在/etc/group文件中没有nogroup组,所以设成0。另外在/etc/passwd 中有nobody用户,所以User nobody不用修改。(注意如果没有nobody 用户,也需要将User设成0)(b)、ScriptAlias 的修改指示CGI 脚本的存放位置。修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 为 ScriptAlias /cgi-bin/ /var/ ScriptAlias /index.html /var/ 指示网页存放的位置。(c)、ServerName 的设置修改 ServerName 为 ServerName 注意
7、:该项默认为未打开,执行BOA会异常退出,提示“gethostbyname:No such ”,所以必须打开。其它默认设置即可。 6、BOA 的运行成功配置以后,还需要创建日志文件所在目录/var/log/boa ,创建HTML 文档的主目录/var/www,将静态网页存入该目录下(可以将主机 /usr/share/doc/HTML/ 目录下的index.html 文件和img 目录复制到/var/www 目录下),创建CGI 脚本所在录 /var/ ,将cgi 的脚本存放在该目录下。另外还要将mime.types 文件复制/etc 目录下,通常可以从linux 主机的 /etc 目录下直接复
8、制即可。实际运行时,可以将index.html文件、img目录和mime.types文件放到CF 卡目录下,建立目录后,拷贝至相应目录。制作run.sh:mkdir /etc/boacp /cf/boa/boa.conf /etc/boa/mkdir /var/logmkdir /var/log/boamkdir /var/ /cf/boa/index.html /var/www/cp -r /cf/boa/img /var/www/mkdir /var/cp /cf/boa/mime.types /etc/cp /cf/boa/boa /./boa &启动浏览器,直接在浏览器中输入,出现BO
9、A TEST的欢迎网页。静态HTML调试成功。1.4.2 CGI 脚本测试为了测试刚才建立的BOA服务器是否正确,我们可以编写一个简单例程进行测试。helloworld.c 程序就起这个作用,其内容如下:#includeint main() printf(Content-type: text/htmlnn);printf(n); printf(BOA CGI TESTn);printf(n); printf(BOA CGI TESTn);printf(n);printf(n);exit(0); 编写完后进行交叉编译,得到的helloworld 拷贝到var/ 目录下。# arm-linux-g
10、cc -o helloworld.cgi helloworld.c在浏览器中输入 可以看到BOA测试页面,表示CGI 测试通过。1.5 HTML 网页设计普通的HTML 页面只能提供静态的信息给用户,如果要实现网页的交互仅靠HTML 是无能为力的。在一个完整的系统中,用户提交信息输入界面的好坏将影响到系统的成败。好的输入界面可以弥补系统设计上的某些缺陷,但如何才能设计一个好的输入界面呢?HTML 中表单(FORM)在CGI 中是常见使用的输入界面,虽然并不十分完美,但它的确是目前www中最强大的输入工具。FORM是由一组相关联的标签所组成,使用方法就像HTML 中的其他标签一样。在FORM 中
11、提供了多种输入资料的工具,如文字输入区(Text)、下拉式菜单(select)、复选框(CheckBox)、单选框(RadioButton)等等。就目前所定义的标准种,FORM 的标签可以分为、以及三个大类。我们来看看具体的程序实现,下面是一段HTML 表单:CGI LED test基于S3C2440 的Web 服务器的设计程序系统资源:s3c2440,16M Flash,32M SDRM,IP:192.168.1.70输入要点亮的LED:输入LED 状态:网页中表单由字头开始,结束。其中action=/cgi-bin/cgi_led.cgi指明使用的CGI 程序名为cgi_led.cgi;m
12、ethod 属性指定提交数据的方法(POST 还是GET),这里使用的是GET 方法。我们要实现的功能很简单,就是采集现场的LED的状态,并在网页上输出结果。在这个实例中我们提交了两个数据,一个是数据的名字是led,另一个数据的名字是status,它们的值由用户在网页中输入。这里首先了解一下CGI 编码的规则。其规则如下:不同域(变量值对)之间用“&”分开;变量与值之间用“”连接;空格符用“”代替;任何特殊字符用“”接相应的十六进制ASCII 码代替,最后形成的格式为:name1=value1&name2=value2%name3=value3 .1.6 CGI 程序设计CGI(Common
13、Gateway Interface) 通用网关接口的简称。其主要的功能是在WWW环境下,从客户端传递一些信息给WEB服务器,再由WEB服务器去启动所指定的程序来完成特定的工作。所以简单点说,CGI是一种通用的接口标准。CGI可以为我们提供许多HTML(HyperText Markup Language,超文本标记语言)无法做到的功能。比如一个计算器、顾客表格的提交以及统计、搜索引擎、WEB 数据库等等。用HTML是没有办法记住客户的任何信息的。要把顾客的信息记录在服务器的硬盘上,就要用到CGI。CGI是一种通用的接口标准。CGI程序就是符合这种接口标准的,运行在WEB服务器上的程序。它的工作就
14、是控制信息要求,产生并传回所需的文件。CGI 由浏览器的输入触发这个程序。先看看浏览器浏览网页是怎样实现的。作为一个用户首先在浏览器的地址栏中添加上要访问的主页地址并回车触发这个申请。浏览器将申请发送到服务器上。WEB服务器接收这些申请并根据.htm 或.html 的后缀并认识到这是HTML 文件。WEB服务器从当前硬盘或内存中读取正确的HTML 文件,然后将它送回浏览器。HTML文件将被用户的浏览器解释并将结果显示在用户浏览器上。CGI程序可以用来在WEB内加入动态的内容。通过接口,浏览器能够发送一个可执行应用程序的HTTP请求,而不仅仅只是静态的HTML文件。服务器运行指定的应用程序,这个
15、应用程序读取与请求相关的信息,获得请求传过来的数值。例如使用者填写HTML表单提交了数据,浏览器将这些数据发送到WEB服务器上。WEB服务器接收这些数据并根据客户机指定的CGI程序把这些数据递交给指定的CGI程序,并使CGI在服务器上运行。CGI程序运行结束,生成HTML页面,WEB服务器把CGI程序运行的结果送回用户浏览器。HTML文件将会被用户的浏览器解释并将结果显示在用户浏览器上。CGI的基本工作情况如下图所示:图3.3 CGI工作流程示意图WEB服务器与CGI 程序之间通过四种途径进行通信: 环境变量、命令行、标准输入和标准输出。其中负责输入的有环境变量、命令行和标准输入。命令行只用于
16、ISINDEX 查询,较少使用。环境变量存放服务器向CGI程序传递的一些运行参数, 比如REQUEST_METHOD表示用户提出请求或提交数据的方法是GET 还是POST。方法(METHOD) 是HTTP中对命令的称呼。GET方法通过环境变量QUERY-STRING传递用户提交的数据。经过编码的数据以问号打头追加在标识CGI脚本地址的URL后一起传给WEB服务器。服务器将其存于QUERYSTRING中,CGI 程序可以通过getenv( )函数来读取。编码数据除了表单数据,还可以是直接调用CGI脚本时追加在URL 地址后面的参数。POST 方法则通过标准输入( stdin) 传递提交数据。编码
17、了的表单数据独立地传送给WEB 服务器, CGI 程序从标准输入中获得,可以用getchar( ), sscanf( ) , fread( ) 等函数。要注意的是数据的长度是通过读取环境变量CONTENT_LENGTH 获得的, 而不是通过文件尾标识符来判断。一般而言,要使用CGI 程序就必须在WEB网页中迁入调用CGI 程序的代码。通常的做法有三种,一是通过表单调用,二是通过超链接调用,三是通过SSI 调用。在3.5节中我们已经阐述了网页的设计,在这里重点说明使用表单调用CGI 程序的办法。 我们来看看到底如何从GET表单收集数据到CGI 程序,下面给出了一个比较简单的C 源代码:#incl
18、ude #include #include #include #include #include #include #include #define DEVICE_GPIODRV /dev/gpiosint main() int fd; int led; int status; char *data; if(fd=open(DEVICE_GPIODRV,O_RDONLY | O_NONBLOCK)0) printf(open device: %sn,DEVICE_GPIODRV); perror(can not open device); exit(1); printf(Content-typ
19、e:ext/html;charset=gb2312nn);printf(n); printf(CGI LED DEMOn); printf(n); printf(CGI LED DEMO 1:0 led1 on 1:1 led1 offn); printf(n); data=getenv(QUERY_STRING); if(sscanf(data,led=%ld&status=%ld,&led,&status)!=2) printf( 请正确输入); printf(); if(led3) printf(Please input 0=led=3!); printf(); if(status1)
20、printf(Please input 0=status=1!); printf(); ioctl(fd,status,led); close(fd); printf(n); exit(0); 对于CGI程序来讲,当采用GET方式提交数据时,用户提交的数据放在环境变量QUERY_STRING中。CGI程序从环境变量QUERY_STRING获得数据。为了解释和执行程序,CGI必须要分析(处理)这个字符串。当你想从服务器获得数据并且不改变服务器上的数据时,应该选用GET。但是用GET 方式提交时,数据不经过CGI编码,而且数据长度不能超过1K字节。否则只能用POST方式了。CGI 程序的任务大概有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 远程 监控 系统 设计 实现
限制150内