收藏官网首页
查看: 5351|回复: 0

[技术分享] 嵌入式设备APP访问方式

77

主题

89

帖子

1938

积分

金牌会员

Rank: 6Rank: 6

积分
1938
跳转到指定楼层
楼主
 楼主| 发表于 2022-7-20 17:41:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
校园创客福利
说明
需求:一些没有屏幕的嵌入式产品(例如:路由器,安防摄像头等),需要显示一些信息或者提供一些设置功能给用户;或者一些有屏幕的嵌入式产品也可能需要提供一些访问接口给手机等外置设备。
常见解决方案:设备端通过物理连接或者网络与其它平台客户端进行通信,在其它平台客户端上实现信息显示和对设备控制,当前产品最常见的是网络。

网络传输
通过网络传输数据,最重要的是选择能满足条件并且可靠的网络协议。
当前最成熟并且使用最广泛的协议是Http协议,Http协议是超文本传输协议,不仅仅可以用于实现web应用,也可以用来充当应用协议。
http协议是很成熟很强大的协议,几乎能满足产品所有的需求。
在项目开发中,应当尽量使用成熟稳定的协议,如果没有特殊需求不要尝试自定义协议,不然只不过重复发明轮子。

客户端信息显示
常见方式:可采用浏览器直接访问设备中的web应用或者实现手机客户端。
采用浏览器观看网页的方式,设备端需要集成一个web应用,在同一个局域网内用户可以通过PC或者其它设备的浏览器访问该web应用,相对其它方式,该方式使用便利并且更节省成本。

设备端实现方式
采用网络传输(Http协议)加浏览器的方式,设备端需要做以下事情:
需要集成一个嵌入式HTTP服务器。
在HTTP服务器上部署一个web应用。
对外提供webservice接口。

应用接口
由于资源受限,嵌入式领域软件技术相对滞后,使用到的库、框架等技术都比较老,嵌入式web服务器也不例外,大部分公司使用的实现对外接口的方式比较老旧。

CGI协议方式(常见方式)
CGI标准协议已经非常老了,但是在嵌入式端确是非常常见的方式。
方式说明:移植网上开源的嵌入式web服务器,新增http接口采用CGI协议,实现CGI程序,在CGI程序中通过进程通信的方式和主进程通信。

协议说明
CGI是一个标准协议,可以采用大部分语言实现CGI程序,每个HTTP请求都需要创建单独的进程执行相应的CGI程序,执行完后CGI进程结束,并将CGI程序的标准输出返回给客户端。


常见嵌入式web服务器
网上可以找到很多小型的嵌入式web服务器,例如:boa,goahead, lighttpd, mongoose等。
方式优缺点
优点
不需要修改开源库源码并且扩展性非常好,新增接口比较简单。
对HTTP服务器依赖较小,由于CGI协议是标准的,CGI程序也是独立的,选择哪款嵌入式web服务器差别不是很大。
缺点
频繁的创建和销毁进程容易导致性能低下。
与主进程通信时需要使用到进程通信,非持久的CGI进程需要重复创建和释放进程通信通道,占用一定性能。


Memory CGI方式
一些开源HTTP服务器(goahead,mongoose等),支持一些较新的机制,例如:支持内存中的CGI和ASP技术等。
Memory CGI方式说明:处理HTTP请求时不需要创建新的进程来处理,直接在服务器进程中处理。
缺点:新增接口时需要修改和编译服务器代码。
自主实现
在互联网领域,HTTP服务器有一些较为复杂但是功能强大的机制,例如:PHP的fastCGi,java的servlet等,但是在嵌入式领域,暂时没有哪款开源库支持复杂的机制,有些公司,技术能力足够,自己设计一个HTTP服务器,例如:我工作的第一家公司使用的是自己设计的一个web服务器,封装成了库,扩展性很好,使用也很方便。
自主实现的优势
功能更强大,性能更好。
大部分嵌入式HTTP服务器为了追求性能,兼容性和稳定性,使用到的技术比较老,更新不频繁,例如:大部分使用C语言实现,网络多路复用使用select而不是epoll,网页方面只支持ASP等基础的模板功能。
网上开源库很多复杂功能不支持,使用限制较多,只能满足基础和简单功能。
扩展和使用方便
网上的嵌入式HTTP服务器大部分未考虑将服务器嵌入主程序等一些复杂应用,扩展性相对不是很好,需要修改和编译服务器代码。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表