由c语言交叉编译为cgi,ARM嵌入式系统中Web服务器功能的实现

4嵌入式网关接口程序的实现

为了实现客户浏览器同Web服务器之间的动态交互,需要采用动态网页技术,使客户不仅可在浏览器上实时查看远传来的数据,而且还能主动控制Web服务器端的嵌入式设备。目前,实现动态网页的四种技术分别是CGI、ASP、PI-IP和JSP。但μClinux不支持ASP和PHP,故采用CGI来实现动态Web页面。

CGI是一种在Web服务器中运行的程序,其功能是在Web服务器和应用程序之间建立通信链接。当Web服务器接收到客户机浏览器发送的HTTP请求消息,即传送给相应的CGI程序,只要有对应的资源,CGI就会把应答返回服务器,由后者将结果回复给客户机。CGI的工作机制如图3所示。

f83b6ba159fd55e1cf5e7c91e2337b02.png

图2嵌入式Web服务器的工作流程

525538b8413a353b52f47e51049c1c18.png

图3 CGI的工作模式

当用户在网页中点击按钮时,HTML页面的表单数据就被发送到Web服务器。服务器随即创建一个新的进程运行CGI程序,并把表单数据传送给程序。CGI再根据表单数据调用其他服务进程,将执行结果给服务器。再由服务器封装成HTTP应答包,发送给客户浏览器。

开发的CGI程序主要由四部分组成:

1)从POST请求表单中读取数据。用户通过标准输入将POST请求中的数据传送给Web服务器,服务器则把输入数据作为一系列的键-值对,提供给CGI程序。键是HTML表单元素的名字,值是用户输入的数据或空值。各键-值对由“&”字符分开,键和值由“=”分开。

2)解释来自请求表单的数据。读到的CONTENT—LENGTH字符串是一系列键一值对和编码,程序将此字符串中的键和值一一对应起来,通过表单元素的名字可以获得用户输入的数据。

3)对请求表单中的数据进行解码。程序要使用这些数据,还要对其进行解码,除去其中的“+”、十六进制ASCII码等。按照1)中提到的编码规则逆操作,然后将每一个键-值对添加到自定义的结构体(变量名—值对)数组中保存起来。

4)交互其他应用程序,返回结果。根据解析出来的变量名,值对,通过变量名判断用户请求的类型,把对应的值传递给其他程序。程序执行完后,将结果返回CGI。CGI再通过一系列的打印输出函数生成HTML源代码,最后由服务器按照HTTP协议将其打包,返回客户浏览器。

CGI程序可使用多种语言编写,如Perl、Shell、C、C++、Fortran、Pascal等。Linux下可使用Perl、C语言等开发CGI程序。但μClinux不支持Perl,故应选用C语言编写。

与CGI交互的嵌入式应用程序,应采用模块化编程技术,每个功能模块由一单独的进程完成,并以μClinux所支持的System V IPC所提供的各种进程通信机制,如信号、消息队列和共享内存等,来实现各进程之问的通信。对于嵌入式测控应用来说,主要进程包括数据采集、系统时间设置等。

CGI进程接收服务器传来的表单信息并解析成各种命令,然后以消息队列的方式发送到相应的进程。数据采集进程采用信号(软中断)机制实现数据采集功能,初始化后首先进入信号阻塞状态,当定时信号到达时,将采集到的数据以共享内存的方式上传给CGI进程。CGI进程与各应用进程之间的通信如图4所示。

cc6a3a513b89a54bd4ff4c21b20316f9.png

图4 CGI进程与各应用进程之间的通信框图

编写好的CCI源程序经交叉编译后,在服务器cgi目录下生成*.cgi可执行程序。用户点击Web页面上的按钮或指向CGI程序的链接,*.cgi便被执行。CGI程序为用户提供了一个图形式的界面。远程Web用户通过向Web表单输入数据并提交来实现与现场嵌入式设备之间的信息交互。但由于每运行一个CGI,服务器就需一个进程为其服务,这样服务器与浏览器交互越多,对服务器端嵌入式系统总体性能的影响就越大,因此对于数据的后期处理和显示方式等任务,应采用基于客户端浏览器的动态HTML技术来完成,由脚本语言JavaScript实现,以减轻嵌入式服务器端的负担。

内嵌JavaScript的HTML以及其他静态HTML都保存在服务器的文档目录下,当用户点击HTML链接时,服务器就会自动找到相应的HTML页面返回。

5 结语

基于μClinux操作系统,将ARM嵌入式应用系统与Internet结合,通过向内嵌的Web服务器中添加嵌入式网关接口CGI程序等手段,实现了动态Web技术在远程监控系统中的应用,使得用户通过Internet就可以直接访问和控制远端的嵌入式应用系统,而不再需要通用微机作Web服务器。具有成本低、可靠性高等优点,可对监控领域的发展和方案的选择提供实用的参考价值。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值