本系统需要web后台来管理,当然如果是app也是同理。所以需要web前端技术。如果你想借鉴我的系统代码,你需要知道基础的HTML知识。
HTML:HTML是网页设计使用的语言。HTML采用标记符号用来告诉相关应用需要显示什么样的界面。我们平时见到的网页简单来说跟TXT文件是同一类型文件,即文本文件,浏览器解析网页文件中的标记符,然后浏览器就会知道如何显示其中的内容。浏览器从前到后地解析网页文件,然后依据文件中的符号来显示内容[2] 。如果html中有些语法错误,浏览器并不会像编译器一样报错,而是跳过这段错误的内容,开发人员只能通过显示效果判断错误内容在哪里。值得开发人员注意的问题是,由于浏览器所使用的内核不同,浏览器解析同一个标记符可能会显示不同的效果,并且有些标记符只适合某一种浏览器。
jQuery:jQuery是一个使用JavaScript语言开发的开源免费框架,相对于原生JavaScript来说,开发人员使用jQuery开发网页更加高效、方便,因为jQuery封装了JavaScript中很多功能。并且JQuery优化了JS的事件处理、Ajax交互和HTML元素操作。
*HTML主要设计静态界面,然后jQuery进行动态展示,这里没有用到前端框架,如果你有时间的话,可以使用前端框架,如Vuejs,效果会更好,这里你不用担心CGi设计网页是不是会很难,后面我会讲到如果轻松实现CGI网页。
前端设计只是用来展示数据,web后台就是来处理数据的。web后台需要和数据库,硬件进行交互。
CGI技术:CGI是网页前端和后台通信的一个接口技术。后台程序使用CGI技术可以很方便地获取到前端传送的数据。这种技术在实际开发中广泛使用,比如开发人员可以开发CGI程序来访问服务器上的数据库,用户使用客户端可以通过CGI技术访问后台CGI程序,CGI程序可以直接查询到服务器上的数据库,将数据库的数据传送到前端。
C++:Web端后台程序的是由C++语言编写的。之所以用C++语言,是因为C++程序中可以使用C语言接口,因此可以调用硬件接口,间接操作硬件,并且C++程序运行速度较快,对于嵌入式服务器处理器速度较慢的情况,比较适合。
*这里之所以可以用C++写web后台,得益于CGI技术,当然你也可以基于CGI技术,用其他语言,比如C语言,python或者java,但是这里推荐使用C++,因为我们是和硬件接口交互,C语言编写程序效率太低,java又太慢,所以这里用C++最好。
Boa服务器是一种所需资源非常小的服务器,源代码量非常少,只有几十KB,非常适合嵌入式紧缺资源的情况,所以嵌入式环境中,常常采用Boa服务器。Boa服务器只能在任何时刻运行一个任务,所以Boa服务器只能一个一个响应客户端请求,虽然不支持多任务,但是Boa服务器支持CGI技术,开发人员可以使用像C语言去fork出一个新的进程来执行。Boa最初的目标就是速度快和更安全,另外Boa很容易移植到嵌入式环境中,只需要交叉编译Boa源程序即可。
*我们将写好的网页放在Boa服务器之后,我们就能远程访问网页了。Boa服务器,我们部署到开发板中,因为我们是要控制硬件资源的。
QT是跨平台的应用开发框架。QT支持大多数常用的操作系统,比如Windows、各种版本的Linux和现在火热的移动端的IOS、安卓等。
QT并不是一种像C++、C语言那样的编程语言,而是一个用C++语言开发的应用框架,但是QT并不只有GUI库,QT还支持很多模块,比如网络、串口、摄像头等等,在QT中的模块都是可以跨平台使用的。
*我们用QT编写门禁终端的程序,即开发板上的界面程序。
SQLite是一款小和灵活的开源免费的数据库。SQLite可以很方便地使用,并且它的性能也比较好,很多领域都在使用SQLite。
SQLite特点如下:
我们使用OpenCV来做人脸识别。
OpenCV是一个基于BSD的计算机视觉开源库。
OpenCV自带了几百个应用接口,这些接口都是所有系统平台都可以使用。OpenCV很少需要使用外部的动态库,如果需要,你也可以使用。OpenCV由于是开源的,所以任何应用都可以免费地使用OpenCV。
MJPG-streamer是一个轻量级的免费开源的视频服务器。一个可以从单一输入组件获取图像并传输到多个输出组件的命令行应用程序。
该软件可以应用于局域网和互联网中,从摄像头中获取并传输摄像头画面到浏览器中,比如IE、谷歌浏览器等。
它使用了流结构,如果嵌入式开发板有资源限制问题,则可以使用这项技术。因为MJPG-streamer兼容L4V2,所以我们可以使用免驱的USB摄像头获取远程视频画面。并且由于MJPG-streamer是开源的,所以我们可以很简单地移植它到ARM开发板上。
这里有些技术可能已经过时了,比如CGI技术,我觉得如果开发板资源足够的话,可以用JNI进行开发,当然这只是个人的一些想法。