车联网监控中心的研究与设计
摘要:为了解决由汽车而引起的能源、环境和安全问题,进行了车联网的PC机监控中心以及Android手机客户端的研究与设计。完成了PC机的Socket通信、电子地图的加载与纠偏、后台数据库的设计。同时也完成了在Android操作系统下Socket通信和地图的加载与纠偏问题。与硬件平台进行联合测试,验证了监控中心和手机客户端设计的有效性,且具有良好的鲁棒性。
引言
随着汽车行业的快速发展,全球能源问题、环境问题和安全问题日益严重,解决问题的方式之一是建立汽车移动物联网通信平台。汽车移动物联网分为感知层、网络层和应用层三层。由感知层获取采集车辆内部和外部的各种信息。网络层主要是GPRS/3G无线网络,将感知层得到的信息通过GPRS/3G无线网络发送到上位机,应用层主要是接收网络层传输过来的数据并进行处理[1],图1为车联网三层架构图。
系统的应用层包括上位机监控中心和Android手机版本的客户端,具备六大功能模块:车辆基本信息、远程监控、远程控制、远程故障诊断、寻车辅助、驾驶员疲劳状态等。
上位机监控中心作为Socket服务器,要求具备公网IP和端口,可以被外网访问。车载终端模块作为Socket客户端,当Socket连接建立之后,由车载终端将车辆的信息通过GPRS无线网络传给PC机,同时上位机监控中心也可以主动下发一些指令,查询车载终端的状态,要求车载终端上传相关信息。
1 PC机监控中心设计
1.1 Socket通信设计
Socket分为服务器和客户端两部分,上位机作为服务器,使用VB中的Winsock控件,通过Socket实现与车载终端和手机客户端的通信。
服务器端Winsock在接收客户端连接之后,会检测Winsock1.State的值,如果Winsock1没有关闭的话则会将Winsock1关闭。当服务器与客户端连接成功之后,服务器便开始接收客户端的数据并且进行处理,同时还可以向客户端发送数据和命令。
当打开了主窗体时,在Private Sub Form_Load()事件中自动加载Socket的监听和连接,并且当点击了各个功能模块的按钮时,上位机会通过Socket向车载终端下发查询或者控制指令。
在PC机上位机程序中,需要设计两个Socket连接,一个是用来与车载终端建立连接,另外一个是用来与Android手机建立连接。上位机Winsock1收到车载终端发送的数据之后,会进行处理并且存入到后台数据库。Android手机通过Winsock2从上位机获取数据。当多个车载终端同时连接监控中心时,可以采用动态加载和卸载Winsock的方式,同一个端口监听不同的连接请求,根据客户端的IP地址来区分车载终端,端口号相同但连接的Index不同。
1.2 电子地图的加载与纠偏
为了能够在电脑上直观地看到车辆的位置,在上位机设计了一个地图加载界面,通过GPRS传送的经度和纬度信息,显示出车辆的当前位置。由于传统的地理信息系统(GIS)技术复杂,建设和维护的成本高,本次设计采用调用在线地图API(应用程序接口)的方式来实现地图的加载,这样一方面省去了繁琐的测绘和地图编制工作,另一方面也保证了地图更新的实时性,地图提供商会定期更新地图,提高定位的有效性和精度[2]。
通过VB中的webbrowser控件,来加载一个后缀名为.htm的静态网页文件,可以实现电子地图的加载。在静态网页中,编写一个JavaScript函数,就可以在百度地图上通过经度和纬度进行定位,并且可以实现电子地图的放大、缩小和移动。
由于GPS的坐标与百度地图加载的坐标是不匹配的。国际上采用的是WGS-84标准的地心坐标,国内发行的地图必须要使用国家测绘局规定的GCJ-02进行加密,而百度地图在此基础上还使用百度公司的BD-09进行二次加密,因此GPS采集的经纬度和百度地图并不匹配,需要进行坐标接口转换,百度地图也提供了进行坐标转换的API接口函数。
在VB中利用webbrowser控件调用电子地图并且实现坐标转换的语句如下:
WebBrowser1.Document.parentWindow.execScript "map.panTo(new BMap.Point( " & jingdu & "," & weidu & "))", "javascript"
WebBrowser1.Document.parentWindow.execScript"map.addOverlay(new BMap.Marker(new BMap.Point( " & jingdu & "," & weidu & ")))", "javascript"
WebBrowser1.Document.parentWindow.execScript "BMap.Convertor.translate(new BMap.Point( " & jingdu & "," & weidu & "),0,translateCallback)", "javascript"
在上面的语句中,使用WebBrowser1.Navigate App.Path & "BaiduMap.htm"这个语句来加载已经编写好的“BaiduMap.htm”地图文件。调用坐标转换函数时使用了new BMap.Point函数来新建坐标点,translateCallback为在静态网页文件中编写的函数,该函数可以实现将指定点移到地图中心、清除标注以及在指定坐标位置添加地标[3]。
1.3 后台数据库的设计
在VB中可以直接嵌入开发Access数据库,通过“外接程序”中的“可视化数据管理器”可以直接创建Access数据库,也可以加载或导入其他类型的数据库。在VB中与数据库的连接通常是使用ADO来实现的,在VB中操作后台数据库的步骤如下[4]:
(1)创建或导入数据库,与数据库建立连接。
(2)根据相应的命令读取数据库中的数据,并且在数据绑定控件中显示。
(3)对获取的对象进行增删改查操作,并且将更新后的数据重新存入数据库。
评论