基于嵌入式Linux的Web远程测控系统的设计与实现
- 格式:pdf
- 大小:212.23 KB
- 文档页数:3
2)完成 Boa的配置 ,使其能支持 CGI程序的执行 在 boa源码目录下有一个 boa. conf,可以对其进 行如下修改 :
Group nobody改为 Group 0 / /用户组 DocumentRoot / var/www / /HTML文件的主目录 Sc rip tA lias/ cgi - bin / var/www / cgi - bin / /指明 CGI脚本
迁入调用 CGI程序的代码 。通常的做法有通过表单 调用 、通过超链接调用 、通过 SSI调用 3种 。这里着重 阐述使用表单调用 CGI程序的办法 。
将数据通过表单提交给 CGI程序 。下面是一个 简单的表单 。
< htm l > < title >简单的表单 < / title > < body > < form action = " / cgi - bin / cgi_get" method = " get" > < p align = " center" > 参数 1: < input type = " text" name = " get_data1" > < br > 参数 2: < input type = " text" name = " get_data2" > < br > < p align = " center" > < input type = " subm it" name = " subm it" value = "提交数据 " > < input type = " reset" name = " reset" value = "重新填写 " > < / form > < / body > < / htm l >
嵌入式系统离不开嵌入式操作系统 。目前商用的 操作系统往往价格昂贵 , 不适合广泛应用 。嵌入式 L inux操作系统源码可开发 ,移植性好 ,支持多种硬件 平台和支持几乎所有常见网络通信协议 ,支持的文件 系统也很丰富 ,是一个功能完整的嵌入式操作系统 ,并 且有大量优秀的开发源码的应用软件和开发工具可以 使用 。因此 ,采用 L inux作为平台 ,使用 W eb技术进行 远程在线测控系统的设计 。
收稿日期 : 2008203214; 修回日期 : 2008204221。
·68·
制 ;嵌入式服务器能够接收 W eb页面的指令 ,解析并 控制前端执行相应动作 ;局域网安装一个数据库服务 器 ,嵌入式微处理器定时将数据存入服务器 ,形成历史 数据库 ,供查询 、决策参考及故障分析 。本文主要研究 在嵌入式平台下的 W eb技术和 CGI(公共网关接口 ) 程序的编写方法 。
3 CG I程序设计技术
3. 1 CG I程序的工作流程 CGI是一种通用的接口标准 。CGI程序就是符合
这种接口标准的 、运行在 W eb服务器上的程序 。它的 工作就是控制信息要求 ,产生并传回所需的文件 。由 浏览器的输入触发 CGI程序 。
CGI程序可以用来在 W eb 内加入动态的内容 。 通过接口 ,浏览器能够发送一个可执行应用程序的 HTTP请求 ,而不仅仅只是静态的 HTML 文件 。服务 器运行指定的应用程序 ,这个应用程序读取与请求相 关的信息 ,获得请求传过来的数值 。例如使用者填写 HTML 表单提交了数据 , 浏览器将这些数据发送 到 W eb服务器上 。W eb服务器接收这些数据并根据客 户机指定的 CGI程序把这些数据递交给指定的 CGI
get_ data1 = 12&get_ data2 = 23&subm it = % CC%
E1%BD % CA % FD %B E%DD 3. 3 CG I程序的编写
对于 CGI程序来说 ,当采用 GET方式提交数据 时 ,用户提交的数据放在环境变量 QUERY_ STR ING 中 。CGI程序从环境变量 QUERY_STR ING获得数据 。 为了解释和执行程序 , CGI必须要分析 (处理 )这个字 符串 。当需要从服务器获得数据并且不改变服务器上 的数据时 ,应该选用 GET。但是用 GET方式提交时 , 数据不经过 CGI编码 ,而且数据长度不能超过 1 kB , 否则只能用 POST方式了 。
在这个实例中提交了两个数据 ,一个数据的名字 是 get_data1,另一个数据的名字是 get_data2,它们的 值由用户在网页中输入 。这里首先了解一下 CGI编 码的规则 。规则如下 :不同域 (变量值对 )之间用“&” 分开 ;变量与值之间用“ = ”连接 ;空格符用“ + ”代替 ; 任何特殊字符用“% ”接相应的十六进制 ASC II码代 替 ,最后形成的格式为 :
name1 = value1&name2 = value2% nam e3 = value3 …
假如用户在 get_ data1 域中输入的是 12,在 get_ data2域中输入的是 23。然后点击提交按钮这个内容
·69·
·计算机与自动化技术 ·
电子工程师
2008年 7月
ቤተ መጻሕፍቲ ባይዱ
将被编码 。最后形成的编码如下 :
的虚拟路径对应的实际路径 ,一般所有的 CGI脚本都要 放在实际路径中 Sc rip tA lias/ index. htm l/ var/www / index. htm l / /指 明 服 务 器的默认页面的虚拟路径对应的实际路径
3)文件系统的制作 在 ramdisk. image文件系统目录下 ,拷贝可执行的 程序 boa 到 / bin 目 录 下 ; 新 建 目 录 / var/www / cgi bin;拷 贝 一 份 主 机 / etc 目 录 下 m im e. types到 目 录 / var/www 下 ;拷贝刚刚修改好的 boa. conf文件到 / var/ www 下 ;自己的默认页面放在 / var/www下 , cgi程序放 在 / var/www / cgi - bin目录下 。经过以上的几个步骤 后 ,嵌入式 W eb服务器移植基本结束 。
第 34卷第 7期 2008年 7月
EL
电子工 ECTRON IC
程 EN
师 G IN
EER
VJ uol.l.
34 No. 2008
7
基于嵌入式 L inux的 W eb远程测控系统的设计与实现
卞东进 ,顾昊琳 ,潘应云
(南京师范大学物理系 ,江苏省南京市 210097)
Boa是一个非常小巧的 W eb服务器 ,可执行代码 只有 61. 3 kB。它是一个单任务 W eb服务器 ,只能依 次完成用户的请求 ,而不会开辟新的进程来处理并发 连接请求 。但是 Boa支持认证 ,支持 CGI功能 ,非常适 合用于在资源有限的嵌入式系统中 。
在嵌入式 L inux下移植 Boa的步骤如下 : 1)完成 Boa程序的移植 从 www. boa. org上下载 Boa源码 ,当前的版本是 0. 94. 13,将其解压并进入源码目录的 src子目录 。
CG I程序的任务大概有输入任务和输出任务两部 分 。输入任务就是指获取用户提交数据的过程 。输入 任务可分为以下几个步骤 :
a)从 CGI环境变量 REQUESR _M ETHOD 中获取 CGI程序的提交方式 ;
b)根据提交方式的不同取出变量名和变量值 ,如 果是 GET方式 ,从环境变量 QUERY_STR ING中取出 编码数据 ;如果是 POST方式 ,从标准输入输出中读取 相应 的 字 符 串 , 读 取 长 度 由 环 境 变 量 CONTENT _ LENGTH决定 ;
网页中表单由字头 < form >开始 , < / form >结束 。 其中 action = " / cgi - bin / cgi_get"指明使用的 CGI程 序名为 cgi _ get; method 属 性 指 定 提 交 数 据 的 方 法 ( POST或 GET) ,这里使用的是 GET方法 。
# tar xzf boa20. 94. 13. tar. gz # cd boa20. 94. 13 / src 生成 M akefile文件 # . / configure
第 34卷第 7期
卞东进 ,等 :基于嵌入式 L inux的 W eb远程测控系统的设计与实现 ·计算机与自动化技术 ·
根据宿主机交叉编译器对 M akefile 进行相应修 改:
程序 ,并使 CGI在服务器上运行 。CGI程序运行结束 , 生成 HTML 页面 ,W eb服务器把 CGI程序运行的结果 送回用户浏览器 。HTML文件将会被用户的浏览器解 释并将结果显示在用户浏览器上 。CGI的工作流程如 图 2所示 。
图 2 CG I工作流程示意图
3. 2 CG I程序的使用方法 一般而言 ,要使用 CGI程序就必须在 W eb网页中
c)根据 CGI编码规则取出字符串中的数据 (变量 名和变量值对 ) 。
输出任务完成后 ,得到所有的变量名和变量值对 , 然后是输出任务 。输出任务主要有以下 3个 :
ROOT“ / var/www”,这里定义的是 W eb服务器的文件 目录 (用户可以自己定义 ,只要与 boa. conf中一致就 行 ) 。然后运行 make 进行编译 , 得到的可执行程序 boa,将调试信息剥去 ,得到最后程序只有 61. 3 kB。
#m ake
#armv4 l - unknown - linux - strip boa
Group nobody改为 Group 0 / /用户组 DocumentRoot / var/www / /HTML文件的主目录 Sc rip tA lias/ cgi - bin / var/www / cgi - bin / /指明 CGI脚本
迁入调用 CGI程序的代码 。通常的做法有通过表单 调用 、通过超链接调用 、通过 SSI调用 3种 。这里着重 阐述使用表单调用 CGI程序的办法 。
将数据通过表单提交给 CGI程序 。下面是一个 简单的表单 。
< htm l > < title >简单的表单 < / title > < body > < form action = " / cgi - bin / cgi_get" method = " get" > < p align = " center" > 参数 1: < input type = " text" name = " get_data1" > < br > 参数 2: < input type = " text" name = " get_data2" > < br > < p align = " center" > < input type = " subm it" name = " subm it" value = "提交数据 " > < input type = " reset" name = " reset" value = "重新填写 " > < / form > < / body > < / htm l >
嵌入式系统离不开嵌入式操作系统 。目前商用的 操作系统往往价格昂贵 , 不适合广泛应用 。嵌入式 L inux操作系统源码可开发 ,移植性好 ,支持多种硬件 平台和支持几乎所有常见网络通信协议 ,支持的文件 系统也很丰富 ,是一个功能完整的嵌入式操作系统 ,并 且有大量优秀的开发源码的应用软件和开发工具可以 使用 。因此 ,采用 L inux作为平台 ,使用 W eb技术进行 远程在线测控系统的设计 。
收稿日期 : 2008203214; 修回日期 : 2008204221。
·68·
制 ;嵌入式服务器能够接收 W eb页面的指令 ,解析并 控制前端执行相应动作 ;局域网安装一个数据库服务 器 ,嵌入式微处理器定时将数据存入服务器 ,形成历史 数据库 ,供查询 、决策参考及故障分析 。本文主要研究 在嵌入式平台下的 W eb技术和 CGI(公共网关接口 ) 程序的编写方法 。
3 CG I程序设计技术
3. 1 CG I程序的工作流程 CGI是一种通用的接口标准 。CGI程序就是符合
这种接口标准的 、运行在 W eb服务器上的程序 。它的 工作就是控制信息要求 ,产生并传回所需的文件 。由 浏览器的输入触发 CGI程序 。
CGI程序可以用来在 W eb 内加入动态的内容 。 通过接口 ,浏览器能够发送一个可执行应用程序的 HTTP请求 ,而不仅仅只是静态的 HTML 文件 。服务 器运行指定的应用程序 ,这个应用程序读取与请求相 关的信息 ,获得请求传过来的数值 。例如使用者填写 HTML 表单提交了数据 , 浏览器将这些数据发送 到 W eb服务器上 。W eb服务器接收这些数据并根据客 户机指定的 CGI程序把这些数据递交给指定的 CGI
get_ data1 = 12&get_ data2 = 23&subm it = % CC%
E1%BD % CA % FD %B E%DD 3. 3 CG I程序的编写
对于 CGI程序来说 ,当采用 GET方式提交数据 时 ,用户提交的数据放在环境变量 QUERY_ STR ING 中 。CGI程序从环境变量 QUERY_STR ING获得数据 。 为了解释和执行程序 , CGI必须要分析 (处理 )这个字 符串 。当需要从服务器获得数据并且不改变服务器上 的数据时 ,应该选用 GET。但是用 GET方式提交时 , 数据不经过 CGI编码 ,而且数据长度不能超过 1 kB , 否则只能用 POST方式了 。
在这个实例中提交了两个数据 ,一个数据的名字 是 get_data1,另一个数据的名字是 get_data2,它们的 值由用户在网页中输入 。这里首先了解一下 CGI编 码的规则 。规则如下 :不同域 (变量值对 )之间用“&” 分开 ;变量与值之间用“ = ”连接 ;空格符用“ + ”代替 ; 任何特殊字符用“% ”接相应的十六进制 ASC II码代 替 ,最后形成的格式为 :
name1 = value1&name2 = value2% nam e3 = value3 …
假如用户在 get_ data1 域中输入的是 12,在 get_ data2域中输入的是 23。然后点击提交按钮这个内容
·69·
·计算机与自动化技术 ·
电子工程师
2008年 7月
ቤተ መጻሕፍቲ ባይዱ
将被编码 。最后形成的编码如下 :
的虚拟路径对应的实际路径 ,一般所有的 CGI脚本都要 放在实际路径中 Sc rip tA lias/ index. htm l/ var/www / index. htm l / /指 明 服 务 器的默认页面的虚拟路径对应的实际路径
3)文件系统的制作 在 ramdisk. image文件系统目录下 ,拷贝可执行的 程序 boa 到 / bin 目 录 下 ; 新 建 目 录 / var/www / cgi bin;拷 贝 一 份 主 机 / etc 目 录 下 m im e. types到 目 录 / var/www 下 ;拷贝刚刚修改好的 boa. conf文件到 / var/ www 下 ;自己的默认页面放在 / var/www下 , cgi程序放 在 / var/www / cgi - bin目录下 。经过以上的几个步骤 后 ,嵌入式 W eb服务器移植基本结束 。
第 34卷第 7期 2008年 7月
EL
电子工 ECTRON IC
程 EN
师 G IN
EER
VJ uol.l.
34 No. 2008
7
基于嵌入式 L inux的 W eb远程测控系统的设计与实现
卞东进 ,顾昊琳 ,潘应云
(南京师范大学物理系 ,江苏省南京市 210097)
Boa是一个非常小巧的 W eb服务器 ,可执行代码 只有 61. 3 kB。它是一个单任务 W eb服务器 ,只能依 次完成用户的请求 ,而不会开辟新的进程来处理并发 连接请求 。但是 Boa支持认证 ,支持 CGI功能 ,非常适 合用于在资源有限的嵌入式系统中 。
在嵌入式 L inux下移植 Boa的步骤如下 : 1)完成 Boa程序的移植 从 www. boa. org上下载 Boa源码 ,当前的版本是 0. 94. 13,将其解压并进入源码目录的 src子目录 。
CG I程序的任务大概有输入任务和输出任务两部 分 。输入任务就是指获取用户提交数据的过程 。输入 任务可分为以下几个步骤 :
a)从 CGI环境变量 REQUESR _M ETHOD 中获取 CGI程序的提交方式 ;
b)根据提交方式的不同取出变量名和变量值 ,如 果是 GET方式 ,从环境变量 QUERY_STR ING中取出 编码数据 ;如果是 POST方式 ,从标准输入输出中读取 相应 的 字 符 串 , 读 取 长 度 由 环 境 变 量 CONTENT _ LENGTH决定 ;
网页中表单由字头 < form >开始 , < / form >结束 。 其中 action = " / cgi - bin / cgi_get"指明使用的 CGI程 序名为 cgi _ get; method 属 性 指 定 提 交 数 据 的 方 法 ( POST或 GET) ,这里使用的是 GET方法 。
# tar xzf boa20. 94. 13. tar. gz # cd boa20. 94. 13 / src 生成 M akefile文件 # . / configure
第 34卷第 7期
卞东进 ,等 :基于嵌入式 L inux的 W eb远程测控系统的设计与实现 ·计算机与自动化技术 ·
根据宿主机交叉编译器对 M akefile 进行相应修 改:
程序 ,并使 CGI在服务器上运行 。CGI程序运行结束 , 生成 HTML 页面 ,W eb服务器把 CGI程序运行的结果 送回用户浏览器 。HTML文件将会被用户的浏览器解 释并将结果显示在用户浏览器上 。CGI的工作流程如 图 2所示 。
图 2 CG I工作流程示意图
3. 2 CG I程序的使用方法 一般而言 ,要使用 CGI程序就必须在 W eb网页中
c)根据 CGI编码规则取出字符串中的数据 (变量 名和变量值对 ) 。
输出任务完成后 ,得到所有的变量名和变量值对 , 然后是输出任务 。输出任务主要有以下 3个 :
ROOT“ / var/www”,这里定义的是 W eb服务器的文件 目录 (用户可以自己定义 ,只要与 boa. conf中一致就 行 ) 。然后运行 make 进行编译 , 得到的可执行程序 boa,将调试信息剥去 ,得到最后程序只有 61. 3 kB。
#m ake
#armv4 l - unknown - linux - strip boa