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()
{
    //设置url
    QUrl url(requestUrl+"?access_token="+accessToken);
    QNetworkRequest request(url);
    //设置http header
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/x-www-form-urlencoded"));
    //设置http body
    QString 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

  • 14
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源客V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值