姚存治,李海胜
(郑州铁路职业技术学院,河南 郑州 451460)
传统车辆GPS定位需要在车辆上安装GPS接收机,并需专业人员对GPS接收机进行设置,车辆提供GPS接收机电源才能对车辆进行定位。此外,获取的GPS数据只能保存在GPS接收机或与其连接的计算机上。如需对车辆进行远程监控,则还需安装数据发送模块,如“单片机+SIM+GPRS”通信模块。整个系统结构复杂,技术要求高,部署难度大且成本高。客户端需专业设备、软件才能完成车辆信息的查询,专业设备与软件开发成本昂贵,且多固定部署无法移动使用,难以大范围推广。
本系统使用手机GPS定位服务端,将GPS定位功能、GPRS通信功能统一由智能手机完成,只需开发相应的Android应用程序即可实现上述两项功能。系统结构简单,技术要求低,部署简单且成本低。用户无须购买专业设备,只需下载手机查询客户端程序,将其安装到自己的android手机上即可。客户端程序自动连接服务器,完成班车查询。查询功能会产生微量的GPRS流量,对用户而言使用成本几乎为零。
班车GPS定位与查询系统采用C/S(Client/Server)结构,即客户机和服务器结构设计,包括手机GPS定位服务端、服务器端、手机查询客户端等三大模块。系统实现的关键技术有手机GPS定位、百度手机地图服务、Android应用开发、互联网Socket通信等。系统结构如图1所示。
图1 系统结构图
手机GPS定位服务端采用具有GPS、GPRS模块的智能手机,安放在班车上,班车运行过程中通过Socket通信链接发送运行方向、车牌号、GPS坐标(百度经纬度坐标)、车速、定位精度等数据到服务器端。
服务器端是一台连接互联网的主机,负责接收、处理手机GPS定位服务端发送的信息,并将班车位置显示在服务器端百度地图之上,接受手机查询客户端的Socket连接请求,将当前班车运行信息转发至手机查询客户端。主要功能如下。
(1)服务管理:对手机GPS定位服务端与手机查询客户端的Socket连接进行管理,开启/关闭这两项服务。
(2)班车查询:地图显示班车当前的运行情况。
(3)用户管理:查看系统当前用户数量、用户使用规律,考察系统的实用性与用户对本系统的满意程度。
手机查询客户端采用具有GPRS功能的android智能手机,通过手机数据服务,Socket连接服务器端,接收服务器端发送的班车信息,将信息解码,在客户端百度地图中显示班车当前位置、车牌号、车速等信息。主要功能如下。
(1)动态跟踪:选择班车运行方向,地图自动对该运行方向车辆进行动态跟踪并显示。
(2)临近警告:设置自己的上车点,当班车临近上车点时(如班车距离上车地点小于100m),则对用户发出临近警告,提醒班车即将抵达上车点。
系统软件设计包括手机GPS定位服务端软件、服务器端软件和手机查询客户端软件等三个模块。手机GPS定位服务端软件和手机查询客户端软件开发语言为Android,开发环境为eclipse3.7;服务器端软件开发语言为Java,开发环境为eclipse3.7。下面是服务器端的程序片段:
importjava.io.IOException;
importjava.net.Socket;
importjava.util.ArrayList;
importjava.util.List;
//检测GPS客户端socket连接情况,删除失联//socket classclientSocketCheckHandleextendsThread
{
@Override
publicvoidrun()
{
while(!Thread.currentThread().isInterrupted())
{
System.out.println("GPS客户端检测服务已启动......");List
for(Sockets:MultiThreadServer.mClientSocketQuene)
{
errorSockets.clear();
try{
s.sendUrgentData(0xff);
}catch(IOExceptione)
{
System.out.println("GPS客户端离线:"+s.getInetAddress()+"port:"+s.getPort());
errorSockets.add(s);
try{s.close();}
catch(IOExceptione1)
{e1.printStackTrace();}
}
MultiThreadServer.mClientSocketQuene.removeAll(errorSockets);//从列表中去除无效的Socket
MultiThreadServer.updateLabUserNum(MultiThreadServer.mClientSocketQuene.size());//更新UI用户连接数
}
try{
Thread.sleep(5000);
}catch(InterruptedExceptione){
Thread.currentThread().interrupt();
}
// while((System.currentTimeMillis()-begin<5000))
// 每隔5s检测一次GPS客户端Socket连接
//
{}
}System.out.println("GPS客户端检测服务已停止......");
}
}
将GPS定位端或客户端安装文件GPSServerApp.apk或GPSUserApp.apk下载到手机上;点击apk文件,系统安装该app,安装成功后,在手机桌面显示app图标。用户只需安装客户端app,如图2和图3所示。
图2 GPS定位端1.65M
图3 客户端1.63M
本系统仅提供Android系统的GPS定位端、客户端,支持2.3以上版本。GPS定位端单击打开“GPSServerApp”应用,按提示做一系列设置即可。
本应用自动连接服务器,并根据用户选择显示班车图标,图标上文字显示班车车号信息。用户根据自身需要设置自己的上车点,当班车临近上车点时(50 m),app发出手机震动,提醒用户。
服务器购买阿里云服务器ECS,位于青岛。服务器端安装“班车GPS定位监控服务端”服务程序,该服务程序用于接收GPS定位端发送的GPS信息,并将其发送给客户端。
经过实际测试,在班车接近上车点50 m时,客户端手机会有震动提示,实现了比较高的查询精确度。
[1]李雪英.住宅小区监控系统的发展[J].科技创业家,2014(8):167.
[2]张聪,王辉,孙博月.监控系统的设计原则与方案[J].中小企业管理与科技(上旬刊),2013(4):299.
[3]李存建.一种昼夜监控系统的设计[J].中小企业科技.2007(1):52.
[4]文俊杰.构建GPS监控系统的技术分析[J].科技信息(学术研究).2007(23):197.