在大多数国家,出租车都是一种十分普遍和便捷的交通工具。国外对车辆调度监控系统的研究较早,20世纪90年代中后期就己经有许多比较成熟的产品投放到市场。目前,国际上流行的车辆调度系统是美国模块公司的DISPATCH,它是综合监控系统,软、硬件功能都很强,经过多年的发展,现己能实现GPS定位、对设备转台自动监控、自动派车等功能,己经在世界范围内得到了广泛的使用。在西方很多发达国家的城市如伦敦、巴黎、新加坡等,在马路上,很难找到一辆空驶的出租车,除非电话预约,或者在指定的停靠地点,很少能看到在街头打车的人,一般都是电话叫车。新加坡的出租车公司也早在1995年底就有了较完备的GPS智能化调度管理系统为乘客提供派车服务[1]。
在国内,以GPS,GIS以及无线通信技术为核心的车辆调度系统的研究和应用也有了很大的发展,并在各行各业中已经得到一定的发展和应用,尤其在公安、金融、物流、公交、出租等部门。我国从90年代初期才开始车辆调度监控系统的研究,并在1994年至1995年形成第一个高潮。在国内的出租车市场上除了少数大城市(如上海、北京等)的部分出租车安装运行了出租车调度系统外,国内大多数城市仍然以乘客街头叫车为主,虽然部分城市已经实现了出租车安装GPS设备和实时记录出租车位置信息,但是并没有很好地利用这些GPS位置信息为出租车调度服务,导致很多出租车GPS系统成为摆设。综上所述,我国的出租车调度系统无论是在技术水平还是在应用方面和国外的发达国家相比还存在着较大的差距。我国的车辆调度系统虽然在应用面和规模上在国际上居于领先地位,但是从系统的技术水平、产品的质量和成熟程度来说,还处在发展时期。
随着城市建设规模不断扩大,车辆日益增多,城市道路日益复杂,人们对交通运输有了更高的要求。出租车以其方便、快捷、安全、舒适的特点,成为城市交通运输体系的重要组成部分。为了适应城市交通的不断发展和社会治安的改善,出租车的现代化管理已提上议事日程,建立一个统一、高效、通畅、覆盖范围广、带有普遍性的出租车监控调度系统就显得非常有必要。而3G技术(GPS、GIS、GSM)的发展使得建立这样的系统变成可能[2]。经济的发展,社会的进步,人民生活水平的提高,为出租车行业发展创造了有利条件。城市出租车数量近年来增长迅速,但是行业管理的相对落后带来了种种弊病:效率低,费用高,实时性差,调度分散,资源浪费,行业发展受阻。加上近年来出租车抢劫案件显著增加,给驾驶员人身安全和财产造成严重威胁。目前,大多数出租车都可以提供24小时全天候服务,乘客搭乘出租车的方式主要是扬招式。随着出租车投放数量的增加,这种粗放的管理模式,使出租汽车的营运效率呈下降趋势[3]。主要表现在出租车的空驶率高、交通堵塞、油料浪费和环境污染等方面。因此,推出基于无线通信技术、网络技术、GPS(GlobalPositioningSystem)技术、GIS(GeographicInformationSystem)技术建立具有较高自动化程度的出租汽车调度系统,对出租车进行合理调度,提高运营效率,减少空载运营和交通堵塞已经是势在必行。
1关键技术介绍
1.1心跳机制
当客户端与服务器端建立基于TCP的socket网络连接之后,如果在客户正常退出之前出现客户端掉线情况,这时在服务器端仍然以为该客户端正常连接,并且服务器端的在线用户信息链表中仍然保留该用户的在线信息,这样的情况是极其严重的。一方面增加服务器的负担,另一方面造成系统不稳定性,给用户的使用造成影响,所以要引入心跳机制来解决这种问题[4]。
心跳机制:心跳机制在客户端与服务端之间使用,客户端定时向服务端发送一个数据包(心跳包),证明自己活着,也可以汇报状况。服务器超过一定的时间没有收到服务端的心跳包则说明客户端出现问题(可能出现了客户端死机现象或网络连接异常掉线),就对该客户端做出相应的处理(一般处理记录状态,并且断开连接,如果发现时异常掉线,则进行掉线重连)。
心跳机制的实现,在客户端新建一个线程,该线程完成每5秒向服务器端发送一个心跳包,告诉服务器该连接处于正常状态。在服务器端维护一个在线用户信息链表,所有新连接进来的客户端用户信息都添加到该链表中。在accept之后,将该用户信息及其网络信息添加到该链表上,在close连接之后,删除链表中的该在线用户信息。其中在线用户信息链表每个结点的结构中包含文件描述符fd和它对应的timer。
此外,在selectIO当检测到某个文件描述符可读,首先要更新给文件描述符对应的timer,即当收到客户端数据的时候,将该客户端的timer置为0。
2需求分析
GPS出租车调度系统,由车载端提供车辆位置信息,通过网络通信发送给服务器端(调度中心),调度中心便可以及时掌握车辆位置信息,并进行合理的调度处理。预约端可以预约用车,同时后台系统也接受电话约车。
客户端主要功能:建立基于TCP的socket网络连接、驾驶员登录、上传驾驶员信息、监听业务频道、接受业务信息、驾驶员退出。
服务器端主要功能:监听TCP连接、认证登录信息、接受客户预约业务、接受出租车信息注册、维护当前在线用户、下载信息、接受出租车的位置信息及用户信息数据保存。
3系统的设计与实现
3.1系统整体方案
3.2功能模块设计
修改状态功能主要完成用户设置车载状态,设为空车或载客,这里的状态要和后台服务器端的状态保持一直。监听业务功能主要完成进入监听频道,等待服务器端发送周边业务请求并进行处理。请求相片信息功能主要完成发送下载相片信息请求,接收服务端发送图片信息。查看信息功能主要完成用户信息的查看,其中用户信息是保存在服务器端,信息的获得需要从服务端接收。退出完成客户端用户的退出系统。
登录信息处理主要完成验证用户登录信息是否正确。注册信息处理主要完成接收客户端发送的注册信息,判断用户名是否存在并作出相应处理。调度业务处理主要完成接收预约端或电话的业务预约信息,进行调度处理,发送业务请求给客户周边的车载端。心跳信息处理主要完成接收心跳包信息,更新在线用户链表信息中timer,根据timer值作出相应处理。在线用户信息维护主要完成对当前在线用户链表信息的维护。位置信息处理完成接受出租车的位置信息,并保存。
4编码与实现
4.1获取用户附近200m经纬度范围
5总结
本设计方案客户端实现了用户登录、注册、监听及接受业务、下载相片、设置车载状态及查看信息等功能。服务器端实现了对出租车进行业务调度、心跳机制、位置信息处理及在线用户链表维护等功能。
参考文献:
[1]张芳.基于GPS导航设备的航路设计模拟系统[D].大连:大连海事大学,2011.
[2]吕芳,张跃,杨宏业.清华嵌入式GPS出租车调度系统[J].计算机测量和控制,2003,11(10):751-753.
[3]王长浩.GPS车载导航软件系统的设计与实现[D].西安:陕西科技大学,2010.
[4]FindingPointsWithinaDistanceofaLatitude/LongitudeUsingBoundingCoordinates[EB/OL].http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates