ARM + Linux + QT 智能停车收费系统
此项目为本人本科毕业设计项目,非常简单的一个停车收费系统,我的重点放在了Qt开发上位机软件上,简单记录一下。
利用ARM Cortex-A9芯片作为车道控制设备中央处理器,基于Linux系统开发下位机程序,搭建服务器,驱动摄像头,采集传输车牌视频信息。利用Qt开发平台自主开发一款配套下位机系统的上位机管理软件,实现视频接收、车牌识别、计费管理、记录查询等相关操作。
一、系统需求模型
二、系统总体设计
三、硬件设计
四、软件设计
五、软件实现
1、登录模块
本系统的用户名和密码由系统进行分配注册,输入已注册的用户名和对于的密码,点击“登录”按钮,后台会在管理员数据库表中查找相应用户名,对比其密码,密码一致即可成功登录,进入操作界面,密码及用户名错误或不存在则提示登录失败,界面阻塞不可进入。
2、数据管理及服务器连接界面
在登录系统成功后,为完成接收下位机监控视频的功能,我们需要连接下位机TCP服务器,网络管理在数据管理界面的右下部分。下位机服务器正常运行后,输入下位机对应的服务器的IP和端口号,点击“网络连接”按钮,没有问题即可连接成功。若服务器未运行,点击按钮则不会有反应,若服务器运行异常,则登录失败。
在“数据管理”模块可以对车辆用户进行增删改查的基本数据库管理操作。车辆用户用来记录车辆用户的个人信息及账户余额,每一个第一次入库的车辆必须先在此登记信息,进行账户充值,方可入库停车。所有的入库用户信息在此列表显示。
3、监控计费主界面
在服务器成功连接之后,回到“监控计费”界面,我们可以看到入口和出口的监控视频显示区域显示“监控未打开”字样,我们点击“打开监控”即可接收相应监控的视频画面。
4、记录查询
在“记录查询”页面可以查看车辆出入库的记录,通过数据库记录了所有出入库车辆的车牌号、出入库状态、出入库时间及停车时长,分页逐条显示。可以点击相应按钮跳转页面,也可删除选择项及清空数据库。
为了方便记录备份及查看,我们可以点击“导出记录”按钮将当前页面数据以Excel文件的方式导出,点击保存即可。
5、使用帮助
随便写一些装逼。
6、用户管理
切换用户、查看个人信息及关闭系统等操作。
7、车牌识别
车牌识别功能主要调用百度智能云的API,登录百度智能云官网,我们可以看到如图4.2.8所示的相关百度智能云服务。在本设计中我们可以选择图像识别,创建应用,从而获取相应的API密匙。
在上位机客户端软件编写中,我们就需要用到从百度智能云获取的车牌识别API密匙,Qt中调用百度API进行车牌识别的代码如下,封装了一个百度车牌识别的类进行实现,通过公有函数getCharNumber()返回识别的车牌号,在其他文件中需要的地方进行调用获取。
baiduAPI::baiduAPI(QWidget *parent) :QWidget(parent)
{AK="8IK1ddUmBy*************";//百度智能云获取的密匙SK="ubEfVro4XX*************";requestUrl="https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate";renewal_token(); //更新token值manager = new QNetworkAccessManager();connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
}
void baiduAPI::networkPost()
{//设置urlQUrl url(requestUrl+"?access_token="+accessToken);QNetworkRequest request(url);//设置http header
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/x-www-form-urlencoded"));//设置http bodyQString name = "./car1.jpg";QImage image(name);QByteArray ba;QBuffer buffer(&ba);buffer.open(QIODevice::WriteOnly);image.save(&buffer, "jpg");QByteArray header = "image=";QByteArray postData = header+ba.toBase64().toPercentEncoding();//post方式发送manager->post(request,postData);
}
QString baiduAPI::getCarNumber()
{return carnumber;
}
六、使用测试
1、启动服务器
在Linux系统中运行服务器代码,如如5.1.1所示,摄像头初始成功,服务器初始化成功,等待客户端连接。
2、客户端连接
3、入库测试
在上位机软件中打开入口的摄像头,接收视频画面,视频显示正常点击车牌识别按钮车牌识别正常,入库时间及车位数量等都计算无误。
4、出库测试
在上位机软件中打开出口的摄像头,接收视频画面,视频显示正常点击车牌识别按钮车牌识别正常,出库时间、收费计算及车位数量等都计算无误,闸门打开正常。
5、记录查询
在经过入库及出库测试后,在上位机的记录查询界面可以看到刚才的出入库记录,车牌号及出入库时间等相关信息均无误。
七、环境配置
下位机选择了FS4412开发板,FS4412的主频可以达到1.4~1.6GHz,处理器采用Exynos4412, 该处理器是三星比较新的一款ARM Cortex-A9四核CPU,采用广受欢迎的ARM MPCore技术兼容[10]。ARM的成本低,效率高,最主要的是它能够运行Linux操作系统,方便对ARM的开发,能够编写TCP服务器程序完成网络通信。
下位机程序开发环境为VMware Workstation Pro,虚拟机为Ubuntu12.04,采用vim 编辑器及gcc4.6.4调试器。另外ARM需移植Linux操作系统,Linux系统内核为Linux3.14。
上位机软件开发采用Qt开发,它是跨平台的C++图形用户界面应用程序开发框架,其可以跨平台开发使用就是选择它的主要原因。版本:Qt 5.9.1,Qt Creator4.3.1,构建套件(Kit)为Qt5.9.1 MinGW_32,编译器支持C/C++编译,常用gdb调试器。如下图Qt中的编译器配置界面,采用MinGW 5.3.0 32位编译器。
八、最后
关于上位机,如果没有ARM开发板,当然直接运用电脑自带摄像头,在linux下运行服务器代码也可完全达到运行效果,用ARM是在实用上,作为毕业设计装逼就行了。
服务器实现流程如下,非常简单
对于AMR开发板,只需移植linux操作系统,运行服务器代码即可,摄像头驱动都已经写好了的。
需要上位机软件运行及服务器客户端源代码参考的可点击链接下载:
https://download.csdn.net/download/qq_41632571/19860567?spm=1001.2014.3001.5503
https://download.csdn.net/download/qq_41632571/19860620?spm=1001.2014.3001.5503
ARM + Linux + QT 智能停车收费系统相关推荐
- ETC电子不停车收费系统(附项目总文件下载)
ETC系统(附项目总文件下载) 编写ETC系统(电子不停车收费系统),设计客户端,要求实现车辆进出站即记录,提供费用计算.通行服务.全自动化实时监控等功能. 以下是当初我们组制作的简单ETC系统项目( ...
- 电子不停车收费系统(ETC)专题(1)——系统概述
我国道路交通普遍较为拥堵已经在国人的脑海中留下了深刻的印象,每当车辆通过收费站时都要停下来缴费,既耽误了司机和乘客的时间,又消耗了交通管理部门的人力.物力和财力,更重要的时候,加剧了交通拥挤.因此,上 ...
- 电子不停车收费系统(ETC)专题(5)——最新动态
第十四届智能交通世界大会于2007年10月9-13日在北京召开,大会主题是"智能交通-创造美好生活".在展会上,从各个论坛到各个展台,新技术.新应用层出不穷,其中高速公路联网收费系 ...
- 电子不停车收费系统(ETC)专题(2)——国内现状
我国从90年代中后期引入该系统,并形成了第一次试点建设热潮.当时在江苏.广东.北京.福建等地有小规模试点应用,但是总体应用效果不好,大部分系统没能开通或成功运营.这一阶段的ETC系统建设多是以技术为驱 ...
- ARM Linux QT虚拟键盘的系列问题
最近在做Linux系统的虚拟键盘功能,其中遇到很多问题,在此一一记录. 使用的系统平台为ARM Ubuntu18.04的系统,安装的QT版本为5.9.5,使用指令安装QT,安装后该版本QT默认不带虚拟 ...
- java计算机毕业设计临时停车收费系统源代码+数据库+系统+lw文档
java计算机毕业设计临时停车收费系统源代码+数据库+系统+lw文档 java计算机毕业设计临时停车收费系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- java计算机毕业设计临时停车收费系统源码+系统+mysql数据库+lw文档
java计算机毕业设计临时停车收费系统源码+系统+mysql数据库+lw文档 java计算机毕业设计临时停车收费系统源码+系统+mysql数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语 ...
- java毕业设计临时停车收费系统源码+lw文档+mybatis+系统+mysql数据库+调试
java毕业设计临时停车收费系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计临时停车收费系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈 ...
- 全球及中国电子不停车收费系统(ETC)行业竞争模式及十四五建设现状分析报告2021-2027年
全球及中国电子不停车收费系统(ETC)行业竞争模式及十四五建设现状分析报告2021-2027年 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订 ...
最新文章
- 3 v4 中心节点固定_死磕以太坊源码分析之p2p节点发现
- 【重复制造精讲】4、计划初识
- Python selenium对js元素进行增删改查操作
- Verilog 补码加法溢出判断及处理
- Oracle to_char() to_date() to_number()函数
- 【前端笔试题】文本居中的几种小技巧
- 工作68:子路由跳转
- (C/C++学习)15.C语言字符串和字符数组
- LibcarePlus用户态程序热补丁
- CVPR2017精彩论文解读:用于生物医学图像分析的精细调节卷积神经网络
- sql 教程_SQL
- Go实现 爬虫v0.2
- spring Beans初始化及配置
- BP神经网络预测模型+粒子群算法优化的BP神经网络(PSO-BP)预测模型,基于Matlab
- 第7章 EL表达式和JSTL
- lldp协议代码阅读_软件实现LLDP协议HaneWin LLDP Service
- 鸿蒙石之鉴老猴死了怎么办,智取芭蕉扇那个剧情选分支1过不了怎么办
- 如何设置IE禁用代理服务器
- Atitit 学科与知识领域分类门类分类法 目录 1. 学位学科门类是授予学位的学科类别。国际上大体有两种划分方法:	1 2. 三大类法 文理科 医学	1 3. 五大门类	2 4. 13门类	2 5
- 使用压缩包安装mysql