新闻  |   论坛  |   博客  |   在线研讨会
设备产品WEB管理界面实现
电子禅石 | 2022-02-23 16:45:01    阅读:8521   发布文章

1. 需求分析

需要在设备内部集成WEB管理功能,类似于家用路由器,通过网页浏览器登陆设备,实现对设备进行状态监视、参数设置、固件升级等功能。

硬件条件:设备内部主控制器的嵌入式CPU普遍低端,主频只有几百兆,内存有128M的,也有的只有几百K片上配置,WEB管理功能的集成不能影响设备网络主业务性能,可能无文件系统。

轻量级 WEB Server

首先要找一个合适的轻量级的WEB Server,最好是C/C++实现的,有OS和没有OS都能方便移植。WEB Server不需要太复杂,能支持1种动态语言,提供良好的CGI接口。

设备管理架构 Device Manager Framework

以轻量级的WEB Server为基础,提供一个设备管理框架,可通过代码直接定制目录结构,可直接修改模板增减状态和配置页面。

使用AJAX等技术实现不重新加载页面的情况下,刷新网页局部,实现设备状态“实时”监视功能。

2. 轻量级WEB Server 对比

开源的轻量级WEB Server很多,比如GoAhead、Shttpd、Thttpd、Lighttpd、BOA、mathopd、minihttpd、appweb,但适合于移植到嵌入式平台的并不多。

GoAhead

GoAhead基于C语言的嵌入式WEB Server,由Embedthis公司维护,实现了服务端的嵌入式Javascript、CGI、DHTML,支持文件上传,,网上资料比较多,最新V3.4.3源码在这。

GoAhead本身自带Windows、Linux、各种RTOS的移植子目录文件,其他服务器公共模块移植性做的很好,可不使用文件系统而将所有WEB资源文件ROM化,是学习进阶C语言的很好例子。若开发linux平台下的web监控,你可以利用windows下的vs先调试好JS+CSS前端,再去linux平台下解决数据交互层面的问题。

Lighttpd

Lighttpd是一个德国人领导的开源Web服务器软件,具有非常低的内存开销、cpu占用率低、性能好以及丰富的模块等特点,相比GoAhead更专业,支持php,当然更占点资源。Lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI,CGI,Auth,输出压缩(output compress),URL重写,Alias等重要功能。

lighttpd针对web并发请求的特点,采用事件驱动模式架构以提高性能,可以看作是一个轻量级的Apache,消耗内存更少,Apahche的很多功能在lighttpd上都有相应的实现。lighttpd支持FastCGI,利用临时内存文件快速响应HTTP请求;支持COMET,服务器端的主动推送技术;并支持异步IO模式的响应。

uHttpd

uHTTPd是一个OpenWrt/LUCI 开发者从头编写的Web服务器,能满足嵌入式设备在linux平台下的轻量级任务需求,使用select模型进行多请求并发处理。

uHTTPd是OpenWRT上默认的Web服务器,支持CGI,以及静态文件的服务,很多路由器使用OpenWRT架构,顺便使用支持lua的uHTTPd开发管理界面。通过Luci处理CGI请求,实现基于Lua脚本的web开发。

busybox httpd

busybox是嵌入式Linux下的开发“瑞士军刀”,基本上Android手机上都有安装;httpd是busybox的附带工具之一,轻量级,支持CGI。用的人少:(

3. 设备管理架构Luci

感兴趣的童鞋可以在虚拟机上先安装OpenWrt镜像,体验下Luci的管理界面。

延伸阅读
  1. Duktape在C/C++项目中嵌入JavaScript


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客