0%

嵌入式web

Web是什么呢?

Web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构

自然咱们搞开发,肯定是能看懂一二?看懂给鬼啊?搞嵌入式哪里会这些东西。这些一看就是前端后端那些要完蛋的东西。但是,其实还是有些地方的前端工资有很高,就算在卷,一个项目最终要一个人,一个团队审核,所以说,肯定是要有人会的,这种级别的大佬,工资不低哦,不是说搞前端工资高,而是全栈,啥都会,cto,技术总监那种同时会前端,自然是香的。

说白话,就是用户看不懂开发,连抓包都不会的,看状态,查bug就更不可能了,只有简洁好用的界面还差不多。那么有啥东西,通用又简单,而且不用下载软件,不吃设备呢?欸!我有一个点子,铁牛牛肉面(bushi)。开玩笑,那就是浏览器了。

浏览器和内核

首先,内核是浏览器的核心,这个操作系统是一样的,外部就是浏览器了,也就是这个内核的套壳。

浏览器,这东西见怪不怪了。浏览器开发含金量有,但是不是很高,你觉得百度怎么样?我觉得是依托,但是它的开发难度确实不低。

浏览器内核,这东西的含金量才高的吓人,真的非常非常非常非常牛逼,他的代码量非常大,而且现在国外基本都是Google的引擎,市场率好像是68%,至于bing的内核也是好东西,那是因为微软强行带它玩的,真正厉害的引擎还是google内核,不过这个优劣就不讨论了,总比国内的套壳百度好太多了。

开发一个浏览器的内核难度,绝对不亚于开发一个操作系统,里面有多到骇人的协议栈,有非常多的标志位,是依托大大的屎山,但是没人敢乱动它。它可以做到所有平台下的兼容,这点真的真的太牛逼,确实是系统根据浏览器内核留下来的接口,进行对接才实现的。因此用户不用担心平台设备问题,可以随心所欲使用浏览器,虽然主要功能是显示和交互,但是难度真的不低,要兼容历史遗留,浏览器内核要兼容各个浏览器。自然咱们搞屌嵌入式的,这个自然是用用就好了,顶多抓个包,逆向一些东西捞点钱罢了。

为什么一直以来都没有国产浏览器内核,研发一个究竟有多难?_标准

(5 封私信) 自主研发一款浏览器内核的难度到底有多大? - 知乎

嵌入式Web用途呢?

这个啥意思呢?我们大部分使用Web都是在电脑上,也就是PC(Personal Computer)上面,使用浏览器查看的,但是嵌入式设备不是电脑,嵌入式就是一个垃圾电子,它贯彻够用就行,所以,很多时候都不能二次开发,系统裁剪,内存裁剪,存储裁剪,所以,它是一个方向的极致设备了,不同电脑是可以执行多种操作,想干嘛就干嘛,只要有资源和条件。

note: 我只是要控制USB的一个灯泡,总不能买一个mac电脑,对usb进行一个代码编写,然后就为了控制这个灯泡吧。那其他硬件不都浪费,所以,嵌入式就是这种”剪身成蝶”的设备了,剪出来一个合适的大小,满足需求即可咯。

用途:Web肯定是联网的,但是可以是广域网,也可以是局域网咯。

  • 最最最常用就是配置无线路由器了,这个是通过手机浏览器或者电脑浏览器去访问特定浏览器地址,然后就能进入一个Web界面,这个界面其实就是为了帮助用户来进行修改属性的,用户肯定是不可能看得懂这些代码和开发的,但是开关和设备那些,输入账号密码,还是有可能会的。也就是说,Web就是为了防呆,就是为了让用户可以低成本实现对硬件配置,用户通过交互让本地的路由器得到数据,然后路由器把本地的页面传给用户端,也就是类似软件一样的交互和操作了,不过这一切都是发生在Web上的。但是还有用很多用户不知道怎么操作和设置属性,建议多去网上搜一下视频和教程吧,低成本快速入手,不意味着啥也不用操作,等着饭送到嘴边,不想动脑就得花钱请人,就是那么简单。咱们嵌入式工程师都来写前端了,你还想让我们怎么样啊,呜呜呜。

  • 我们知道了,其实就是通过了网络来进行通信,自然就可以远程控制和修改属性,比如我家里面有一个智能管家,我要远程去修改他的参数,我是用户啊,我肯定看不懂,只有相对合理的配置界面还差不多,让用户输入命令行,等着退货和差评吧。此时需要哪个智能管家连上网络,对接到厂商提供的服务器。我们打开app,然后app就会去访问服务器,我们发送查询请求,服务器就会去查询我们绑定的嵌入式设备,然后把它的Web数据发送给服务器,服务器再转发给我们app上面,此时我们就知道嵌入式设备的属性和状态啦,我们修改一下,再确定上传就完成对设备的操作咯。这里服务器可以选择解析Web数据,然后再发送给我们app,也可以作为一个透传功能。

有人要问了,为什么不用mqtt协议啊?我只能说,孩子,你高估用户的编程开发水平了,他们要是看得懂数据和拆包,我们可以下岗了。http、https和mqtt都是基于tcp\ip的封装,mqtt确实高效实时,但是用户看不懂,除非你在app层面对这些数据进行处理,也是可以的,Web就是为了交互和不限设备、以及安全性。想那种智能家居,估计用就是mqtt了,但是一开始配置联网的过程很可能用到了Web;

一句话总结:

首先要有网络,现在一般都是无线网络;其次要配置网络连接、网络属性或者参数;有无远程访问寻求;裁剪程度和设备复杂度;有无app开发,需不需要;给谁用,受众是谁。

嵌入式Web的主要组成部分
1.Web服务器
  • 嵌入式Web服务器是运行在嵌入式设备上的Web应用服务器,它负责处理HTTP请求、返回网页内容,并与设备的硬件或操作系统进行交互。
  • 常见的嵌入式Web服务器包括:uHTTPdlighttpdNginxApache(虽然主要用于PC,也可以在某些嵌入式设备上运行),以及专为嵌入式设计的mongooselibmicrohttpd等。
2.Web前端
  • 前端界面是通过Web浏览器访问的HTML、CSS和JavaScript组成的网页。用户通过这些网页与嵌入式设备进行交互。
  • 在嵌入式设备中,前端界面往往需要精简,以适应低资源的硬件环境。通常会使用轻量级的前端框架,如BootstrapjQuery,甚至定制的前端代码来减小资源消耗。
3.Web后端
  • 后端通常由嵌入式设备中的应用程序或控制器提供,处理前端请求、控制设备硬件、管理数据等。
  • 后端编程语言有很多选择,可以使用嵌入式开发语言(如C/C++Python)或嵌入式操作系统提供的API(如RTOS)进行开发。
4.协议和接口
  • 嵌入式Web通常通过HTTP协议进行通信,也可以使用WebSocket进行双向通信,尤其适用于实时数据交互。
  • 数据通常采用JSON或XML格式进行传输,以便在Web客户端和嵌入式设备之间交换信息。
LWIP

这个是为了实现最最最基础的网络通信咯,也就是tcp\ip或者utp通信,我们开发者可以通过socket在嵌入式上面运行咯,甚至mcu都能使用这个socket,非常非常牛逼,从网上下载对应的库,然后查看手册进行编程吧,这里是需要一些网络编程基础的,可以先去学一下linux的网编再来从事这个lwip库吧。

也可以查考下面这个博客,搭建一个嵌入式web服务器操作哦。

手把手教你在开发板中搭建一个嵌入式web服务器-CSDN博客

需要掌握的网络协议

ICMP、TCP\IP、UDP、Http、Https、CoAP、Mqtt、WebSocket、REST、SOAP、UPnP、FTP/SFTP、SNMP、BASIC/Modbus TCP(这个了解就好了)等,还有非常非常多协议。建议找一个开源项目尝试一下哦。

总结

就是为了让用户看懂和快速上手操作的交互界面,嵌入式设备内部存放这web页面数据,通过连接之后,用户通过浏览器进入对应ip,就会向嵌入式设备发送web请求得到,然后就会发送web页面到用户浏览器中,就可以进行交互操作了,嵌入式设备就可以因此得到想要的数据了。

note:不是只有linux嵌入式设备才能有所谓的web功能,只是因为大部分物联网嵌入式设备,直接mqtt就ok了,用不着web,也不需要用户来交互,一个app控制网络就好了。如果你想要,用mcu也可以实现web功能,看需求咯。

-------------下次的来访是什么时候呢[doge]-------------