精华内容
下载资源
问答
  • 停车收费系统.rar

    2020-06-18 22:37:10
    简易的停车收费系统,包含客户端和服务器端,涉及到的技术: Linux环境下的网络编程,多线程编程(纯C语言) QT的网络编程,多线程编程(涉及C++)
  • 停车收费系统又称电子收费系统(ElectronicCollectionSystem),简称ETC系统。它利用车辆自动识别技术完成车辆与收费站之间的无线数据通讯,进行车辆自动识别和有关收费数据的交换,通过计算机网路对收费数据进行...
  • 停车收费系统又称电子收费系统(Electronic Collection System),简 称ETC系统。它利用车辆自动识别技术完成车辆与收费站之间的无线数据通讯,进行车辆自动识别和有关收费数据的交换,通过计算机网路对收费数据...
  • ETC系统简单设计。Linux下编写ETC系统,实现车辆进出站的数据采集、费率计算、通行服务等。windows下用QT设计客户端程序并连接监控设备,对车辆的进出进行监控、信息记录以及查找显示。客户端与服务器端通过简单的...
  • 非机动车RFID移动支付停车收费系统方案
  • 毕业设计的智能停车收费系统上位机软件,打包好的,可运行参考
  • 中兴通讯ETC系统(Electronic Toll Collection System,电子不停车收费)是利用专用短程微波通讯DSRC技术,通过路侧单元RSU与车载单元OBU的信息交换,自动识别车辆并扣除通行费用。系统采用电子支付,自动完成车辆...
  • 在基于射频识别技术的基础上,对硬件系统中核心部件电子标签与读写器进行硬件设计与分析;然后对ETC软件进行开发设计,完成系统软件总体框架的设计和分析。最后对研发的ETC系统进行现场测试,给出试验结果并进行分析...
  • 社区停车收费系统

    2019-01-16 16:30:46
    社区停车收费系统采用java swing开发,开发工具是NetBeans8.1版本,数据库采用的是SQL Server2014版本,使用前请阅读说明书,在根目录下的readme.txt文件中,十大功能板块个性化皮肤
  • 针对提高公路收费道口通行能力, 减少公路收费道口车辆阻塞的目的, 设计研发了基于RFID 的不停车收费系统,采用了无线射频识别(RFID) 、自动车辆识别(AVI) 、自动车型分类(AVCS)、短程通信、逃费抓拍等技术,...
  • 手机版停车收费系统是一款简易的停车收费软件。
  • 一种基于ARM的新型不停车收费系统RSU设计,刘炳森,,目前国内汽车保有量的提升速度已经超过了国家建设与改造各种道桥的速度。如何在现有道路设施基础上方便、经济的提升特别是桥梁、
  • 摘 要:针对射频识别(RFID)技术应用的广泛前景,设计了一种基于RFID的高速公路不停车收费系统。该系统集无线通信、计算机网络及信息处理、自动控制等技术于一体,应用于高速公路收费管理、车辆控制与人员管理,...
  • 电子联网不停车收费系统的设计,于华丽,李季,本文根据当今路网快速发展的趋势,分析当今ETC系统的不足,依据先进性与实用性、可靠性与安全性、经济性与可扩展性相结合的原则,
  • 基于FPGA的新型不停车收费系统中RSU设计.pdf
  • #资源达人分享计划#
  • 电子不停车收费系统路测单元应用技术规范,河北省地方标准DB3
  • 针对提高公路收费道口通行能力,减少公路收费道口车辆阻塞的目的,设计研发了基于RFID的不停车收费系统,采用了无线射频识别(RFI
  • 一个小小的计算停车场收费的C++源码 停车收费规则为:? 1小时内免费;? 1小时以上: 超过15分钟不到30分钟按半小时收费; 超过30分钟不到1小时按1小时收费; 超过1小时按每小时4元收费;? 超过1天,每天按30元收费;...
  • RFID在高速公路不停车收费系统中的应用,董敏,陈金鹰,结合RFID技术原理和优点,探讨了RFID在高速公路不停车收费系统中的实际应用,给出该应用的具体实现的框图,以及如何与管理中心实现�
  • ParkingOS_local 车牌识别停车收费系统postgres包是数据安装文件
  • 简易的停车收费系统

    千次阅读 2020-06-18 20:25:41
    停车收费系统: 1.硬件摄像头:使用电脑自带的摄像头,由运行在此摄像头的电脑上的服务器端直接控制。 2.服务器端:由纯C写成,运行在一个性能良好的电脑上,初始化过后,开辟线程。线程一用于进行视频的采集,并将...

    前言:

    用了好几天的时间写完这个项目,主要是对QT不熟,走了很多弯路,导致百度的时间花去很多,真是烦🤢。好了,做完了就不再抱怨了。我自认为自己做的还行,哈哈,吹牛的👨。
    客服端和服务器都是在Ubuntu里完成的,其中客服端在Ubuntu自带的QT5.4环境里完成,服务器端由Ubuntu中下载的codeblocks里完成的。注意编译环境!!!!!!
    温馨提示:本文几乎没有代码,想要源码的可以点击链接下载,当然是要积分的 链接在这里(这什么审核速度啊,比我还拖,都1天了,才通过。。)毕竟这是努力成果。虽然在大佬看来没啥牛逼的地方,但大佬们可以瞧瞧渣渣是怎么思考问题的,哈哈😂。

    接下来,我说一下怎么实现的这个项目,分为项目简介,项目理解,服务器端,客服端。

    项目简介

    设计一个完整的停车收费系统,能实时监控当前区域,对过往车辆实现收费,车辆消费记录要保存。

    项目理解

    个人觉得这样做:
    服务器与客服端约定好通信方式,所以可以在客服端发送不同的指令,让服务器实现不同响应。比如:
    约定客服端与服务器端的指令如下:命令开始码(0x08) 指令码 结束码(0x03)
    打开监控: 0x08,0x01,0x03

    关闭监控: 0x08,0x02,0x03

    停止计费: 0x08,0x03,0x03

    断开连接: 0x08,0x04,0x03
    (以上都是写死的指令,自己看源码的时候注意就行了)
    tips:
    1.硬件摄像头:使用电脑自带的摄像头,由运行在此摄像头的电脑上的服务器端直接控制。通过服务器端的摄像头采集一帧帧图片,通过约定的IP和端口传给客服端,客服端再显示出来。

    2.保存消费记录:这个我是用文件读写来实现的,放在服务器上进行。
    看着简单吧,实际上也没太复杂,但是边百度边写代码就太慢了。

    服务器端

    由纯C写成,运行在一个性能良好的电脑上,初始化过后,开辟线程1。线程一用于进行视频的采集,并将数据存放在全局缓冲队列中,同时开辟线程2,线程二用于监听客服端(最多两个),收到客服端连接请求后,再次为客服端开辟线程3来通信(命令传输线程)。根据不同指令响应对应的操作,也就是按照约定的指令办事!
    预览图:黑漆漆的,没啥好看的。。。
    在这里插入图片描述

    服务器主线程只用于接收输入(是拥有服务器的用户输入),进行车辆信息生成器操作,对输入的车辆信息进行保存。换句话,也就是对充钱了的车在文件里更新余额。

    tips:
    服务器开机运行后:

    在主线程中的操作: 开辟全局内存,用于线程之间的通信,开辟线程1,对摄像头操作,接着同时开辟线程2进入TCP链接的监听状态,收到客服端的链接请求后,开辟线程3,用于与客服端的通信。最多同时和两个客服端建立连接–>最多两个通信线程!!!!(实际上没试过两个客户端,,,😂)

    在子线程1中的操作: 子线程1用于响应主线程对摄像头的操作,子线程1不停地采集图片,并将图片缓存在全局图片缓存中。子线程1在没有收到主线程的停止命令之前,将一直采集图片,收到停止命令之后,停止采集,并释放摄像头的资源。(实际上,主线程不会关闭摄像头,不过功能是完整的)
    在子线程2中的操作: 子线程2用于管理客服端的连接,对请求连接的客服端开辟新的线程,当客服端连接断开后,释放其占有的资源,当客户端个数到2时,不会响应后续的其他客服端的连接请求。IP为系统随机指定(要ifconfig查询才知道),默认的监听端口为8080。

    子线程3: 用于响应客服端的指令:
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ①收到客服端的 打开监控(== 0x08,0x01,0x03==) 指令,开辟子视频传输线程,开始进行视频流(1张/秒)的传输。注意,这里的视频传输线程采用了不同的端口来与客户端连接,默认8081,方便区分连接的种类
    在子线程3中的操作: 开辟视频传输线程
    在视频传输线程中的操作: 建立与客服端的TCP链接,向客服端返回全局图片缓存中的图片。

    ②收到客服端的 关闭监控(== 0x08,0x02,0x03==) 指令,停止图片的传输。
    在子线程3中的操作: 结束视频传输线程,然后向客服端返回 视频传输结束的信号
    视频传输线程的操作: 等待被子线程3终结。

    ③收到客服端的 停止计费(== 0x08,0x03,0x03==) 指令,由客服端提交的车辆信息(就在指令的后面,也就是偏移3个字节之后就是车辆信息),在服务器端进行扣费,并返回余额信息。
    在子线程3中的操作: 查找文件,找到车辆信息,得到车辆余额,进行扣费,然后保存文件,再将扣费之后的车辆信息返回给客服端。
    当然如果在文件中没找到当前的车辆信息,则返回给客服端没找到的原因。比如说:保存车辆信息的文件打不开,余额不足,账号不存在。

    ④收到客服端的 断开连接(== 0x08,0x04,0x03==) 指令,断开与当前客服端的连接。
    在子线程2中的操作::结束子线程3:,释放子线程3所占用的资源,也就是内存和端口,以及视频传输线程。
    在子线程3中的操作: 等待被子线程2终结。
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    客服端

    先放一下预览图:
    预览图
    请忽略中间的按钮。。。。。

    在QT客服端:基于QT的图形化程序,运行在一般的PC上,受百度API的免费额度的限制,最多同时运行两个相同的客服端来查询车牌只是同时查询的额度,但是每天每个个人开发者只有200次的总查询额度

    ///
    点击不同的功能按钮:
    刚打开的时候:只有连接服务器按钮可点击!输入约定的IP和端口之后,点击连接,就会连接服务器,端口不输入的话,默认8080(说的好像废话,,)

    在下方就是断开连接按钮,点击的话。。。。

    在 UI主线程 中的操作: 创建子线程1,时刻响应按钮的回调,响应子线程1的回调,同时也负责刷新UI界面,切记不可以在主线程中直接进行网络访问!!!因为容易造成ANR,对子线程1的信号的响应:利用预先定义的槽函数接收到子线程1的回调之后,将信号中的图片内容取出来,并将其显示在指定区域,即刷新UI界面。 以下将不对UI主线程说明。

    在子线程1中的操作: 向指定服务器发送TCP连接请求,同时建立连接。于是此线程实际上就是指令传输线程,对接收到的指令进行判别,执行不同的操作。一句话,它一方面接收UI主线程对服务器的指令,一方面也接收服务器返回的指令响应,另一方面也负责对开辟的子线程的回调处理。是不折不扣的通信线程!

    ②**打开监控:**功能概述:向服务器发送 打开监控 指令,同时开辟线程,分配内存并接收图片流(在子线程中)。接收到的图片将连续显示在 视频显示 区域。

    ==在子线程1中的操作:==收到UI的按钮消息之后,向服务器发送打开监控的指令,等待服务器的视频传输线程就绪,然后启动子线程2,连接约定好的端口(默认8081),,进行图片流的接收。

    ==在子线程2中的操作:==向服务器发送TCP连接请求,同时建立连接。分配适当的内存开始接收图片,每接收一张完整的图片就使用自定义的回调函数向子线程1的槽里发送信号。

    关闭监控:功能概述:。。。
    在子线程1中的操作: 线程1通过按钮的信号识别到是 关闭监控 后,向服务器发送关闭监控指令,等待等待服务器的视频传输线程终结信号,然后终结
    子线程2

    在子线程2中的操作: 子线程2收到被终结信号后,释放所占用的资源(包括端口号),清理自身内存。

    ④**车辆截图:**功能概述:获取当前图片帧,保存为新图片,打开文件选择对话框,得到图片的路径。启动线程3,在线程3中进行Base64编码,并调用百度API上传图片,等待百度服务器的返回报文,然后解析报文,提取车牌信息并放入发射信号到子线程1的槽里。子线程1同步在UI线程里的车辆信息一览表。

    在线程中1的操作: 线程1通过按钮的信号识别到是 车辆截图 后,获取当前图片帧,保存为新图片,然后开辟子线程3,发射带图片路径的信号到线程3,随后刷新UI界面,准备接收子线程的回调信号和用户的UI线程操作。接收到子线程3的回调信号后,提取信号中车牌信息,然后同步在UI上。

    在子线程3中的操作:子线程3创建之后,得到图片路径,以路经创建一个图片对象,接着对图片进行Base64编码,并调用百度API上传图片,等待百度服务器的返回报文,然后解析报文,提取车牌信息并写入在要发射到线程1的信号里传递信息。由线程1刷新当前保存的车辆信息并通知UI线程显示。

    开始计费: 功能概述:获取当前系统时间T0,获取当前收费价格P。
    在UI主线程中的操作 : UI主线程通过按钮的信号识别到是 开始计费 后,得到停车价格栏的价格并以信号的方式发送给线程1。

    ==在线程中1的操作:==读取并记录当前系统时间T0,同时得到停车价格。

    停止计费: 功能概述:获取当前系统时间T1,由收费价格和总时长计算此次停车费用,并上传到服务器。接收当前车辆的信息,并在车辆信息一览表里刷新。
    ==在线程中1的操作:==线程1通过信号识别到是 停止计费 后,读取并记录当前系统时间T1,将前后时间相减,得到停车费用为 P*(T1-T0) 。然后将此次扣费信息上传至服务器。待接收到服务器的返回消息后,提取车辆信息(当然包括服务器的出错消息),然后将信息刷新在UI线程里。

    退出客户端: 功能概述:向服务器发送断开连接指令,然后释放线程1,清理自身的内存并退出。
    在UI主线程中的操作: 主线程通过按钮的信号识别到是 断开连接 后,向子线程1发送断开连接的信号。然后等待子线程1回调。接收到子线程1的回调后,释放线程1。然后exit(0)退出程序。

    在子线程1中的操作: 收到主线程的终结信号后,向服务器发送断开连接指令,然后向主线程发送结束信号,清理自身的内存和占用的资源(包括端口号)。
    ///

    总结

    看一下实际运行:
    实际效果

    零.客服端和服务器端还有不少问题的,只是时间紧迫,不能再弄了,不过按照步骤来操作的话,大体上能运行,传输监控的图片很卡顿,也能正常识别车牌,服务器也能记录消费信息,但是有时候服务器端不知什么原因会卡掉。或者客服端也会直接卡掉!!!!!如果有大佬解决了,可以麻烦发在评论里

    一.服务器端的开发纯粹用C,几乎难度不大,就是偶尔指针的乱用。

    二.QT客户端的开发难度对没用过QT的新手有点大,主要问题如下:

    1.线程的使用问题:QT中的线程和 C的线程 和 java的线程都有很大的区别,让我体会到线程的退出问题的困难,QT线程创建容易,但安全释放难度大,不仅仅是简单的 quit() 和 wait() 就好了的。为此,我总结了一条规律:谁创建线程,谁就管理线程。在子线程里不对自身的退出问题考虑,而交由父线程管理,这样可方便的利用信号与槽的机制来执行任务。

    2.在新开辟的子线程里使用QNetworkAccessManager这个类的对象来进行百度API的调用时,由于要刷新 token值 ,发送指定报文后,总是收不到finish()信号,导致不能回调槽函数,所以调用一直失败,百度了很多文章,下面为这些文章的结论:QNetworkAccessManager为异步方式访问,而且需要依赖 创建的新的槽 才能完成信号的正常发送,否则信号队列一边堵塞,而槽这里又收不到信号,相当于直接失效, 所以在 post() 数据之后,会直接运行后面的代码,这将导致这个子线程可能已经运行完之后的代码任务了,然而回调还是没出现,这将导致一些逻辑顺序的错误:以调用百度API为例:首先每次调用API进行图片识别之前,应该先更新 token值,然后上传编码后图片。但实际情况总是先把图片上传了,然后token值才更新,一直出现110(无效的token)的错误。
    说一下解决方法:

    void baiduRunnable::renewal_token()
    {
        QEventLoop loop;//自定义事件循环
     
        manager_token = new QNetworkAccessManager(this);
    
    
        QString url_token="https://aip.baidubce.com/oauth/2.0/token";
    
        QString req_url = url_token+"?grant_type=client_credentials&client_id="+AK+"&client_secret="+SK;
    
        qDebug()<<"url_token:"<<req_url<<endl;
    
        QUrl url(req_url);
    
        QNetworkRequest request(url);
    
        QByteArray data="";
        reply=manager_token->post(request,data);
        connect(reply,SIGNAL(readyRead()),this,SLOT(replyToken()));
        connect(manager_token, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));//绑定退出信号
    
        loop.exec();//进入事件循环
    
        delete reply;
        delete manager_token;
    
    }
    

    以上有注释的三条代码就解决了这个问题,创建了一个消息循环,保证一定在收到finish 信号之后才退出消息循环,执行之后的代码。

    3.QT的UI编辑器比较难用或者说我还没用掌握精髓,相比AS来说感觉更难操作(或许换句话对AS使用的久),比如到现在我也不知道怎么设置占空比,怎么设置网格布局的行列数,怎么设置窗口的自由拉伸等等…

    三.
    时间过得好快,导致这几天都没复习,有点担心啊,都6月快下旬了,大家应该一轮复习完成了吧,我也要追上你们,啊啊啊啊啊啊。

    加油,奥利给,干就完了!!!!!! 0803,爱启航,宇哥助我!

    在这里插入图片描述

    展开全文
  • 摘 要:针对射频识别(RFID)技术应用的广泛前景,设计了一种基于RFID的高速公路不停车收费系统。该系统集无线通信、计算机网络及信息处理、自动控制等技术于一体,应用于高速公路收费管理、车辆控制与人员管理,...
  • 摘要: 针对提高公路收费道口通行能力, 减少公路收费道口车辆阻塞的目的, 设计研发了基于RFID 的不停车收费系统,采用了无线射频识别(RFID) 、自动车辆识别(AVI) 、自动车型分类(AVCS)、短程通信、逃费抓拍...
  • 停车收费管理系统》是一套专门针对现代化停车收费管理的软件,适用于大中小型停车场。该软件包含基本信息、月卡管理、车辆管理和费用。其中:1、基本信息主要包括停车场设置、费用设置和停车场状态查看;2....
  •  不停车收费系统又称电子收费系统(Electronic Collection System),简 称ETC系统。它利用车辆自动识别技术完成车辆与收费站之间的无线数据通讯,进行车辆自动识别和有关收费数据的交换,通过计算机网路对收费数据...
  • 现在拥有私家车的人越来越多,城市停车成为一个新的难题,而其中停车收费尤为重要,做到安全、快捷的停车收费正是手持POS停车收费系统的目的。一、系统软件设计1、系统原则采用手持POS实现对车辆进出停
  • 此项目为本人本科毕业设计项目,非常简单的一个停车收费系统,我的重点放在了Qt开发上位机软件上,简单记录一下。 利用ARM Cortex-A9芯片作为车道控制设备中央处理器,基于Linux系统开发下位机程序,搭建服务器,...

            此项目为本人本科毕业设计项目,非常简单的一个停车收费系统,我的重点放在了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

    展开全文
  • 智能停车收费系统项目的linux服务器及QT客户端源码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,074
精华内容 2,029
关键字:

停车收费系统