基于GPRS的车辆监控系统技术研究

  • 格式:docx
  • 大小:41.58 KB
  • 文档页数:7

基于GPRS的车辆监控系统技术研究

吴晓彬;杜东高

【摘 要】In order to implement the positioning tracking for dangerous

goods, passenger, cargo transport vehicles and other special project

vehicles, the GPS positioning system and GPRS communication technology

are adopted for the achievement of real-time vehicle monitoring system.

The data communication between the vehicle terminal and the control

center is a-chieved by taking GPRS communication technology as a carrier

of information transmission to display real-time traffic information by GPS

positioning and WEBGIS technologies. The system has the advantages of

high-speed conftnunication, strong communication format scalability, high

communication reliability and strong client controlling capacity to vehicles.

The vehicle front-end status and location are displayed by Web page. It is

easy for the clients to use the system.%为了对危险品运输,客运、货运、工程车辆等特殊行业的车辆定位跟踪,采用了GPS定位系统和GPRS通信技术实现了车辆实时监控系统;实现了以GPRS通信技术作为信息传输载体在车载终端,监控中心进行数据通信,GPS定位和WebGIS技术实时展示车辆信息;该系统具有通信速度快、通信格式扩展性强、通信可靠性高,客户端对车辆的控制性强,前端使用Web页面展示车辆状态和位置,系统无需安装,用户使用便捷等特点.

【期刊名称】《现代电子技术》

【年(卷),期】2011(034)024

【总页数】3页(P107-109) 【关键词】车辆监控系统;GPS;GPRS;UDP

【作 者】吴晓彬;杜东高

【作者单位】南京工程学院计算机学院,江苏南京210000;焦作大学信息工程学院,河南焦作454003

【正文语种】中 文

【中图分类】TN919-34

0 引 言

随着我国经济的发展,车辆日益增多,交通运输的经营管理,货运、客运的安全管理等,已成为公安、交通系统中的一个重要问题。车辆监控系统以全球定位系统(Global Position System,GPS)和 GPRS(General Packet Radio Service)通信技术基础,它可以将车载单元上接受到的实时定位数据通过无线网络传送至监控中心服务器上,监控中心计算机再利用地理信息系统的地图显示功能,以及信号指令的发送功能,实现对动态车辆的跟踪与调度控制,从而建立起的一种大范围、全方位发挥作用的、实时、准确、高效的综合车辆调度和管理系统。系统基于Internet网络,将监控中心、远程监控终端、数据服务器、无线移动通信网、GPS

车载终端有机地结合在一起,以Internet服务器为核心实现分布式监控。

1 系统结构

基于GPRS的车辆监控信息系统由4个主要部分构成,即监控服务中心、车载终端、监控终端及无线通信网络构成;监控服务中心是系统的核心部分,它连接车载终端和客户端。监控服务中心由Web服务器,通信服务器,数据库服务器构成。通信服务器接受车载终端的数据,并将数据转发给Web服务器和数据库服务器。该系统结构图如图1所示。

2 系统关键技术

2.1 GPRS通信技术及UDP数据传输协议

在车辆和监控中心之间需要通信设备来发送或接收信息。通信手段的选择是监控系统的难点和技术关键。合理的通信方式的选择可以为监控系统的指挥调度、报警处理提供一个稳定、快速的平台。

车辆监控系统使用GPRS 网络作为传输载体。GPRS是一种采用分组交换和传输技术的高效率数据传输方式。它克服了电路交换速率低、资源利用率差等缺点,最大限度地利用了现有的GSM 网络资源,提高了传输速率。相对于短消息方式来说,GPRS服务既提高了质量又降低了使用费用。移动车载终端与监控调度中心之间的通信突发性较强,而每次数据量较小,使用GPRS网络作为其传输载体是目前比较理想的解决方案,GPRS通信主要分为TCP和UDP协议。

图1 监控系统结构图

TCP和UDP协议同在传输层,由于本系统每次传输的数据量小而且突发性强,所以采用UDP协议传输数据。UDP协议的主要作用是将网络数据流压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。UDP协议为不可靠的传输协议,不提供数据传送的保障机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,必须在应用层的协议中添加保障信息传输可靠性的确认机制。监控中心向终端下传数据时,要求终端返回接收正确或错误的确认信息,监控中心收到正确的确认信息后数据下传进程才完毕。否则,监控中心将在规定的时间内重发,直到收到正确的确认信息或发送次数标志溢出才终止。

GPRS网络UDP 端口资源十分紧缺,变化很快;UDP由于自身特点,以及GPRS网络UDP端口资源的有限性,在一段时间没有数据流量后,端口容易改变,产生的影响就是从服务器中心端向GPRS 终端发送数据,GPRS终端接收不到。原因是移动网关从中做了中转,需要隔一定时间给主机发UDP包来维持该IP和端口号,这样主机就能主动给GPRS发UDP 包,笔者在测试中发现,这个间隔时间很短,约1min发一次UDP包才能够维持,再长时间移动网关那边就要丢失这个端口了,逾期主机想主动发数据给终端,将无法送达。只有GPRS终端设备重新发一个UDP 包过去,移动再分配一个中转IP和端口,才能够进行双向通信。为保证端口有效性和数据实时性,终端设备每5s发送一条包含定位和状态的数据给服务器。

2.2 基于C#发送、接收UDP数据包使用的主要方法

(1)UDP 数据类。用 Visual C# 实现 UDP 协议,最为常用,也是最为关键的类就是UdpClient,UdpClient位于命名空间.Sockets中,Visual C#发送、接收 UDP 数据包都是通过 UdpClient 类的。UdpClient类主要有以下几个方法,见表1。

(2)接受终端UDP 数据。接收UDP 数据包使用的是UdpClient中的“Receive”方法。此方法的调用语法如下:public byte[]Receive(ref IPEndPoint

remoteEP);参数remoteEP 是一个IPEndPoint类的实例,它表示网络中发送此数据包的节点。下面就是通过侦听本地端口号“8080”来获取信息代码:

UdpClient server= new UdpClient(8080);

IPEndPoint receivePoint = new IPEndPoint (IPAddress.Any,0);

byte[]recData=server.Receive(ref receivePoint);

recData就是接受到的UDP报文,其中UDP包头结构如下:源端口16位,目的端口16位,长度16位,校验和16位;上文中阐述了GPRS的UDP 端口非常紧缺,随时会变化,在每次接受到UDP报文后,必须记录源端口、IP 地址。receivePoint参数是引用类型,receive到新的UDP 后,receivePoint对象的address和port属性值就是发送源的IP 地址和端口。这个IP 和端口未必是真的终端的IP和端口。因为终端上的应用程序绑定本地一个端口(比如是9002),通过这个端口发送请求给路由器,路由器由此记录下终端的内网IP和端口(9002),然后路由器分配自己的一个空闲端口(比如是7000),通过这个端口(7000)发送请求给监控中心。而对于监控中心,它没有任何关于终端的信息,它要做的只是回信息到路由器的外网IP 的7000这个端口。路由器收到发送到其7000端口的数据后会再转发给终端。

表1 UdpClient类中常用方法及其说明连接Connect 建立与远程主机的连接Receive 返回已由远程主机发送的UDP 数据文报Send UDP方法 说明Close 关闭UDP数据文报发送到远程主机

(3)发送 UDP 数据报。发送 UDP 数据报使用”Send”方法。“Send”方法的调用语法如下:public int Send(byte[]dgram,int bytes,IPEndPoint

endPoint);参数说明:dgram 要发送的 UDP 数据文报(以字节数组表示)。bytes数据文报中的字节数。endPoint一个IPEndPoint,它表示要将数据文报发送到的主机和端口。返回值是已发送的字节数。下面使用UDPClient发送UDP数据包的具体的调用例子:

string IP =receivePoint.Address.ToString();

int Port=receivePoint.Port;

//receivePoint在上文中描述过,为Receive接受UDP 时的引用;

IPEndPoint host= new IPEndPoint(IP,Port);

UdpClient.Send (" 发 送 的 字 节" ," 发 送 的 字 节 长 度" ,host);

该代码实现了对某终端发送UDP 报文后的回复。如果需要主动向终端发送报文则需要从数据库中提取该终端最近一次的IP和端口号,调用该方法发送内容。

2.3 数据封装和转存

监控中心与客户端的数据通信包含2种:一种是上行数据,一种是下行数据。上行数据包含终端汇报车辆的状态信息,车辆实时信息,车辆语音信息,视频信息等。下行信息包含对终端的回应,车辆的实时控制等信息。数据种类大约一百多种,可分为20多种格式。针对每种格式定义一个结构进行数据接受和转存到数据库,进行数据显示和分析。终端返回数据一般是结构类型,为保证数据转换准确和便捷,C#也使用同样的结构对数据进行接受。上文中UDP 报文接受到的正文是byte类型,该byte内容有报文头和报文类型、校验部分和正文构成。根据报文类型找到对应的C# 结构体structType。利用 Marshal.SizeOf(structType);获取结构体大小,并进行分配空间:IntPtr structPtr =Marshal.AllocHGlobal(size);然后将byte数组拷到分配好的内存空间:Marshal.Copy(recData,0,structPtr,size);将内存空间转换为目标结构体object obj =