公路运输车辆动态称重检测管理系统的软件实现

类别:公司新闻 时间:2018-03-07 点击:74 次

本文提出了一种对恢速行驶的车 辆的重量信.息及车牌信.息进行采集 并匹配,上传,存储,超限判别,报警 的软件实现方案。
0.引言
车辆超限运输对公路破坏严重,为了 快速有效判别超限车辆.n以在公路上安 幾动态称重检测管龜系统,对运输孝辆在 行驶过程中进彳于检狐及超限判别。系统对 车辆数据进行采集.并对超限车辆报警. 提示执法人员拦截处理;系统可以将车辆 数据完整保存供查询汇总统计。本文描述 了动态称重检测系统的软件实现。
1.系统功能需求描述
(1)重量数据的采集
(2)车辆图片及车牌号的采集
(3)重量与图片的匹配
(4)车辆完整数据的保存及上传(上传到服务器数据库')
(5)判别超限车辆并实时报警 (6 )车辆数据的查看及汇蜊
2.超限车辆判别标准
先算出标准重量(单位取公斤).标准重量算法为(轴数 *10000, 55000),min个值中取较小值.如樂牵货总 重大手标准重量,认为傘辆超限、杏则认 为不超限。
2.软件架构设计(图1)

4.软件主要接口、算法、流程、存储的 设计及关键代码
4.1重量采集控制器与匹配软件之 间的接口设计
用C++开发的通用的侦听代码为: UINT ThreadListen(LPVOID pv)
{
SOCKET g_socket = socket(AF_ INET,SOGK_STREAM,0);
if(g_socket!=INVALID—SOCKET)
{
SOCKADDR—IN addr={0}; addr. sin—family=AF—INET; addr. sin—port=htons(6601); addr.
sin—addr.S—un.S—addr=0; if(0==bind(g_socket,(LPSOCKADDR)& addr,sizeof(addr))) {
if(0==listen(g—socket,5)){
while(l){
SOCKADDR—IN clientSockAddr; SOCKET clientSocket; int addrLen=sizeof(SOCKADDR_IN); clientSocket=accept(g_socket,(LPSOCK ADDR)&clientSockAddr,&addrLen)
if(clientSocket!=INVALID_SOCKET){ AfxBeginThread(ThreadTalk,(LPV 0 ID)clientSocket,THREAD_PRIORITY_ NORMAL,0,0,0);
})}}}
return 0; i
当发送端有数据发送时,服务端启动 一个新线程ThreadTalk,在逢程士进行 会话o
4.2车牌识别摄相机与匹配软件之 间的接口设计
4.3匹配算法设计
将重量信息和车图信息各以一个队 列保存,创建一个定时器,定时遍历重量 队列,匹配重量信息及车图信息,将匹配 好的信息保存。:
int iTimel=GetPrivateProfileInt(nset",n Time 1",1000,gGetAppConfig0.c_str0); if(iTimel<1000) iTimel=1000; int iTime2=GetPrivateProfileInt(nset',,n Time2n,1000,gGetAppConfig().c—str());
if(iTime2<1000) iTime2=1000; TDateTime dtNow=Now();
for(int i=0;i<m_caps->Count;i++) {
CCap *pc = (CCap*)m_caps-
>Items[i];
int iDiff=MilliSecondsBetween(pc- >m_dt,dtNow);
if(iDiff>iTime 1+iTime2) { delete pc; m_caps->Delete(i); i一一;
//删除车属
for(i=0;i<m_weights->Count;i++) // 遍 历重量队列 {
GWeight *pw=(CWeight*)m— weights->Items[i];
int iDiffl=MilliSecondsBetween(dtN ow,pw->m_dt);
if(iDiffl>=iTimel)
{
bool bFind=false; for(int j=0;j <m_caps->Count;j++) //遍历车图队列 {
CCap *pc=(CCap*)m_caps-
>Items[j];
i n t
iDiff2=MilliSecondsBetween(pc->m_dt,pw-
>m_dt);
if(pw->m_iRoadNo==pc->m_ iRoadNo && iDif?<iTime2)
{
bFind=tme;//找到了要匹配的
车牌
mlnsert(pw,pc); II 保存匹配好 的重量及车图
delete pw; m_weights- >Delete(i); i--; // 删除重量
delete pc; m_caps->Delete(j);
j--;"删除车
break;
}//end if 评end for
if(!bFind)//没找到 {
CCap *pc=new CCapO; mlnsert(pw,pc); II涼荐匹配好的 重量及车图
delete pc;
delete pw; m_weights->Delete(i); i?//删除重量 }//end if }//end if }.// end for
mListWeight();// 显 7K 重量队列 mListPlate();//益地车牌队列 4.4车辆完整信息存储设计 匹配软件与管理软件可能不在同一 台计算机,匹配软件需要将匹配好的数据 暂存并上传到管理软件,并最终写入数据 库,为好保持部署方便,现将匹配好的数 据以XML文件形式存储,并用TCP方式 上传到管理软件。XML格式为
〈Root Type = H Data" ><Data Type="GSYJn><List
F_V G_YUJXH=H 3201000040012014

4.5匹配软件到管理软件数据上传 接口设计
4.6实时报警
匹配软件判断出车辆超限后,可以 发送实时数据到管理软件,实时数据包的 格式可以采用数据上传的包格式,管理软 件只需要换一个端□侦听.管理软件收到 数据后转发给报警程序。由于太屏智能手 机及平板较为普及,报警顺序可以开发在 android终端上。超P艮数据流向为(*2 ) 4.7数据库车辆信息表设计 车辆信息.表结构以XML格为模板设 计#段询屯一般都要逢是一个时间段 作为条为了使璧^询速度快,以F—DT_ GOmSESSDAY建立聚簇索引;以F— VC—TOJXH为生键《有关人员管裡,权_ k设置等葡*以仿照其他信息系统建立相应 的表实现。
4.8车辆数据的查看及汇总统计
完整的车辆信息表建立可以在 表上按各种条件进行查询,并查看明细数 据;可以按各种维度进行统计,在此不再 赘述写SQL语句时总是将时间条件放在 最前面:能明显提高查询速度,如Select * from -车辆.偉息表 whet'fe.ft_compr.essay between beginday and endday • • •

5.结束语
本文提出一种公路动态称重检测 管理系统的软件实现方案,能在本辆高速 运行的过程中完整梁集车辆的重量及车 牌信息.匹配后上传服务器,存储在数据 库中方便查询汇总;并且匹配时对超限车辆进行了判别,实时报警提示执法人员 拦截,对公路治超工作有很大帮助。
 

中国领先的称重软件技术提供商

The Leading Provider of Geomatic Solutions in China

展开收起网站地图