Boa的移植和CGI程序设计
由于嵌入式设备资源有限,并且不需要同时响应多用户请求,因此一般使用一些专门的Web服务器用于嵌入式应用设计。Boa是单任务web服务器,源代码开放,性能高,支持CGI,能为CGI程序fork出一个进程来执行,其设计目标是速度和安全,可执行代码只有约60KB。移植Boa的过程如下:从sourceforge.net上下载 boa-0.94.13,在其解压目录下生成并修改makefile文件,然后运行make得到可执行程序,利用命令armv4l-unknown-linux-strip将调试信息剥去,然后修改Boa的配置文件boa.conf,使其能支持CGI程序的运行。最后将生成的可执行程序Boa挂载到目标系统,若能成功访问静态HTML网页和运行测试用的CGI程序,则表明配置成功。
通用网关接口CGI可将Web服务器连接到外部应用程序,它主要完成两件事情:一是收集从Web浏览器发送给Web服务器的信息,并将这些信息提供给外部程序利用;二是对提出请求的Web浏览器发送程序的输出。CGI具有平台独立性、语言独立性和层次感等优点。利用CGI程序则可以实时执行并输出动态信息,且其占用资源少。CGI程序的执行过程为:浏览器将表单数据以POST方法提交给Web服务器,服务器根据收到的数据设置环境变量,并新开一子进程来执行CGI程序,CGI程序从环境变量中读取所需要的数据,通过调用用户自定义的外部功能函数完成数据处理后,再读取相应的HTML模板文件,根据注释标记将对应的数据填充到HTML文件中,生成新的HTML页面经Web服务器返回给浏览器。
为快速开发符合应用要求的CGI程序,在设计时添加了CGIC库和gd库。CGIC是一个功能强大的支持CGI开发的开放源码的标准C库。Thomas Boutell编写的gd库是标准的C语言库,具有基本的绘图等功能。为实现在网页上动态显示心电波形,将每次采集的数据经过功能程序处理后存储的同时送给CGI程序,利用gd库提供的函数来创建图像。通过在网页模块上设定刷新时间(使用HTML语言的META标记),从而实现在网页上心电波形的动态显示。
主程序设计
主程序首先完成对系统的初始化,然后阻塞监听网络接口是否有连接请求,一旦客户端发出连接请求,则在服务器端产生中断;读取网络数据,然后对网络数据进行解析,这一步主要是解析HTTP协议,需要判断连接请求是否符合服务器规定的请求格式,判断是连接请求的请求方法,判断请求的文件是否存在服务器上,判断认证信息是否正确等等;在处理A/D采集的数据这一过程中,首先要将采集后的心电信号进行滤波处理,主要是抑制心电信号中的50Hz工频干扰,再完成滤波后,将数据送到本地的LCD上显示,同时将当前的数据以网页数据的格式发送到网口。
结语
本系统的设计定位于家庭医疗监护,通过在用于生理特征信息监测的嵌入式系统中集成Web服务器实现Internet的接入,从而实现用于远程家庭医疗的监护系统。其意义在于:设计出一套价格低且易于推广的远程家庭医疗监护系统,改变目前我国家庭医疗监护落后的状况;有效提高中老年人群心血管等慢性疾病的监护水平,有利于提高中老年人群突发疾病患者的整体救治率;为医疗机构提供大量有价值的我国中老年人群疾病的原始数据进行科研工作。