一种车载gps设备协议转换软网关的制作方法

文档序号:7852544阅读:221来源:国知局
专利名称:一种车载gps设备协议转换软网关的制作方法
技术领域
本发明涉及车载GPS设备与服务器通信过程中私有协议与SIP协议转换技术,是一种GPS设备接入软网关。
背景技术
近年来,伴随着GPS技术的成熟,为了通过GPS系统对车辆,人员进行更有效的管理,GPS设备与管理服务器之间的通信技术也便发展起来。目前不少设备厂商对GPS设备进行了一定深度的开发,对GPS功能进行了扩展。因此其在处理GPS数据时,不再是发送简单的定位数据报,而是对其进行了私有协议下的数据封装,然后通过TCP协议上传服务器。但是由于不同厂家私有协议的之间的兼容性差,难以在车载定位,录像采集,车辆管理等大应用背景中进行数据整合,使得设备在与服务器通信过程中,需要解析处理不同 协议报文,对管理造成困难。而且由于现有多媒体应用中,如音视频会话,常使用RTP,RTCP等自有通信协议。因此,在车载GPS设备与服务器会话过程中,通过某种会话管理协议,对不同类型协议类型数据进行统一管理显得十分重要。SIP是由IETF制定的一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话。通过与RTP/RTCP、SDP、RTSP等协议及DNS配合,SIP支持语音、视频、数据等,并已经取得了广泛的应用。因此加入SIP协议管理很好的满足了车载GPS设备与服务器通信的需求。但如果要在GPS车载设备中直接加入SIP协议封装模块,必须对不同厂商的设备进行软硬件的重新设计,成本大,也难以对现有产品进行兼容。因此本方案,采用架设协议转换软网关的方式,对设备与服务器通信过程中的会话进行设备私有协议与SIP协议的转换,既保证了设备平台的兼容性,又保证了服务器会话管理的统一性,扩展性。

发明内容
为了克服已有车载GPS设备与服务器通信过程中私有协议的通用性不强,兼容性差,会话管理能力弱,扩展能力有限等不足,本发明提供一种设备私有协议与SIP协议转换软网关,对接入设备与通信会话进行统一有效的管理,加强通信会话的统一性,有效性,可扩展性。本发明解决其技术问题所采用的技术方案是—种车载GPS设备协议转换软网关,所述软网关的技术的主体构架为Python语言,通过Twisted非堵塞网络框架实现具体功能。所述Python语言为一种高阶动态编程语言。所述Twisted是一种基于事件的开源网络框架;所述车载GPS设备协议转换软网关为设备私有协议与SIP协议转换软网关,所述软网关包括Dev2GateFactory对象单兀,Dev2GateProtoco对象单兀和Simu_dev对象单元;所述Dev2GateFactory对象单元,用以负责Dev2GateProtocol对象的管理,模拟设备的本地UDP端口查找,数据库读写接口等会话管理的方法实现。
所述Dev2GateProtocol对象单元,用以负责软网关与GPS设备TCP连接超时管理,数据报文解析校验,GPS设备数据库读取写入,启动/停止模拟设备,私有协议与SIP协议转换,转发设备请求/响应等网络处理的方法实现。 所述Simu_dev对象单元,用以负责实例化软网关中对应注册车载GPS设备的模拟设备,通过该模拟设备,实现设备与服务器之间会话的具体方法。进一步,所述的车载GPS设备协议转换软网关Dev2GateProtocol对象中,本软网关接收到GPS设备私有数据报文后,触发dataReceivedO事件,实现所述数据报文解析校验方法首先调用函数QCpredeWserO进行预解析处理,对报文进行校验,并解析出设备SN序列号与去除GPRS头的数据报data。所述设备SN序列号由厂家自由定义,并事先注册到软网关设备数据库中。软网关读取数据库,检索该设备SN序列号是否合法,并登记接入GPS设备网络信息;所述Dev2GateProtocol对象单元中,依然在所述dataReceivedO事件里,实现私有协议与SIP协议报文转换经预解析和数据库查询之后的合法GPS设备,软网关会将其需要上发至服务器的TCP报文数据,保存到列表缓存dbuff中。然后函数deferToThread()进入延迟对象Deferred子线程中,调用函数send2Server(),按照设定的时间间隔,从列表中读取保存的私有协议数据,经函数QCdeWserO转换为SIP协议报文之后发送至服务器,以防止GPS设备大量发送私有协议数据导致服务器负载过重。由于send2Server函数返回Deferred对象,该函数中的阻塞行为不会阻塞系统,可以达到快速退出dataReceivedO事件的目的;所述Dev2GateProtocol对象单元中,TCP保活机制是每次收到GPS设备发送的TCP数据报文便更新报文时间。定时启动TCP超时处理程序,检查当前时间与最新报文时间间隔是否超时,若超时则软网关主动断开与设备的TCP连接。再进一步,所述Dev2GateProtocol对象单元中,为了实现设备与服务器之间的会话,必须在每个设备第一次接入时,注册启动模拟设备simu_dev()对象实例。每个GPS设备对应一个模拟设备实例,通过该实例经过UDP链路向SIP服务器发送请求或响应。同时也可以根据需要将服务器的请求与响应转发给GPS设备,以达到建立并完成会话目的。所述模拟设备实例中,实例化sip. Base类对象rvsip_endpoint,模拟设备端点,用于上发服务器设备请求,或者服务器下发指令;实例化sip. Request类对象rvsip_request,用于组成上发服务器的相应SI P协议请求报文。此外,模拟设备还实现了启动心跳包保活,向设备转发服务器请求或响应等功能的方法,从而对GPS设备与服务器之间的会话过程进行有效处理。模拟设备在接收到服务器下发GPS设备指令时,将调用QcserfdevO函数,将SIP协议报文解析为设备可识别的私有协议报文,并下发。所述模拟设备Simu_dev O实例心跳包服务,可以控制刷新TCP报文时间,维持GPS设备与软网关的TCP连接,同时通过发送心跳报文刷新模拟设备实例与SIP服务器的会话注册登陆状态,从而起到保持车载GPS设备,软网关系统,SIP服务器之间的通信连接的安全稳定的作用。所述协议转换软网关中,一旦出现如TCP连接超时,接入设备未注册,数据报文非法,会话无响应等事件,则系统将触发connectionLost O事件,执行关闭TCP连接,删除模拟设备,清空缓存等操作,保证网关网络资源的有效性。所述私有协议数据报文预处理函数QCpredeV2Ser O,私有协议数据报文转换XML格式SIP协议数据报文函数QCdev2ser O,SIP协议报文转换成私有协议报文函数Qcser2dev()均为C语言扩展模块protoTrans中的子函数。由于设备私有协议往往是16进制的,每一个Byte,甚至一个Byte中的每一个bit都可能有不同的含义,采用C语言处理具备更多的处理优势,在加快处理速度的同时,C语言编译后的二进制代码,也克服了 python作为解释性语言,源码可见,对私有协议等敏感内容保密不利的缺点。本发明的技术构思为针对车载GPS协议软转换网关需要在运行时能够同时处理多个连接,而数据的收发并不一定是连续的,因此该软网关必须采用非堵塞设计。本软网关采用了 Python语言下的Twisted网络编程框架,其为基于异步I/O的事件驱动跨平台网络框架。本方案同时避免了分叉(forking)方案消耗内存大,局限于UNIX/LINUX平台的缺点。也克服了纯粹的线程(threading)方案,不同连接之间共享内存,易造成内存变量读写冲突的不足,保证了该软网关的可靠性与有效性。当车载GPS设备接入软网关时,对私有协议数据报进行预解析,校验数据报,去除数据报GPRS并保存至缓存。加入数据库管理,通过读取数据库比对SN序列号,查询该车载 GPS设备是否为合法设备,并对设备进行统一编号,网络地址IP与接口 Port登记,保证对设备的统一有效管理。由于每个接入的车载GPS车载设备实例化对应的模拟设备simu_dev()对象,因而可以保证多个接入设备相互独立,不受干扰。该实例实现了模拟设备与服务器之间请求或响应的组包,SIP报文上发下行等方法。软网关调用上述方法,使模拟设备通过UDP链路通信,注册登陆到SIP服务器。之后通过向SIP服务器上发设备请求/响应报文,或者向设备下发SIP服务器请求/响应报文,达到完成会话的目的。以设备上发数据至SIP服务器为例在数据接收处理事件dataReceivedO退出前,该事件调用函数deferToThread O进入延迟对象Deferred子线程中,利用函数send2Server O ,按照设定的时间间隔,定时处理私有协议报文,经函数QCdev2ser O转换为XML格式SIP协议报文之后发送至服务器。由于send2Server函数返回Deferred对象,并通过函数Deferred. callback()回调,该函数中的阻塞行为不会阻塞dataReceived O事件的快速退出。通过设置TCP超时处理机制,开启心跳服务包服务,加强通信链路保活能力,维持活动车载GPS,软网关,SIP服务器之间的有效通信。同时能够及时断开超时TCP连接,无响应连接等无效通信链路,保证通信链路的有效性与可靠性。软件实现步骤为车载GPS设备接入协议转换软网关,软网关接受私有协议数据报,经过校验,数据库查询;启动模拟设备,注册登陆到SIP服务器,建立会话;进入延迟对象子线程定时对私有协议数据报文与SIP协议报文进行相互转换,调用模拟设备方法上发服务器或下发设备;通过模拟设备,根据会话要求要求具体实现各类请求或响应报文中转后上发或下发,并作相应处理的方法;会话结束,断开通信连接,注销模拟设备,清空缓存。本发明的有益效果主要体现在(I)通过转换协议,实现车载GPS设备与服务器之间应用层通信过程由SIP协议进行统一的会话管理。减轻了服务器解析多种私有协议的负担,增强了设备与服务器之间通信质量的稳定性与可靠性。(2)通过软网关进行协议转换,避免了对原有GPS设备的软硬件的重新设计,将上发服务器的连接,更改为上发软网关即可。
(3)通过加设车载GPS设备数据库,对接入GPS设备进行查验,登记,统一编号,有效管理GPS设备合法接入。(4)采用异步I/O的事件驱动型网络编程框架Twisted搭建系统,保证了软网关的非阻塞性与跨平台性。(5)该软网关在设计过程中,既实现了车载GPS设备定位私有协议数据通过转换成SIP协议报文上传服务器的基本功能要求,也为服务器与设备之间的多媒体会话扩展预留了设计空间。


图I是车载GPS协议转换软网关网络框架。图2是车载GPS设备实现与服务器通过SIP协议会话总流程图。 图3是TCP连接超时处理流程图。图4是软网关接收GPS设备数据报后处理流程图。图5是软网关通过模拟设备与SIP服务器建立会话流程图。
具体实施例方式下面结合附图对本发明做进一步描述。参照图f图5,一种车载GPS设备协议转换软网关,其特征在于所述车载GPS设备协议转换软网关为设备私有协议与SIP协议转换软网关,所述软网关包括Dev2GateFactory对象单元,用以负责Dev2GateProtocol对象的管理,模拟设备的本地UDP端口查找,以及会话管理的方法实现,所述会话管理包括数据库读写接口 ;Dev2GateProtocol对象单元,用以负责软网关与GPS设备TCP连接超时管理,数据报文解析校验,GPS设备数据库读取写入,启动/停止模拟设备,私有协议与SIP协议转换,转发设备请求/响应等网络处理的方法实现;Simu_dev对象单元,用以负责实例化软网关中对应车载GPS设备的模拟设备,通过该模拟设备,实现设备与服务器之间会话的具体方法。本实施例的车载GPS设备协议转换软网关,通过将GPS设备私有协议数据报文与服务器XML格式SIP协议报文之间的相互转换,并转发,从而实现建立,完成会话的目的。(I)图I为所述协议转换软网关与车载GPS,SIP服务器之间通信的网络结构。软网关与车载GPS设备之间通信采用TCP链路通信,保证链路质量可靠性,数据报文格式为车载GPS设备私有协议格式;软网关与服务器之间由于在应用层上采用SIP协议通信,具有握手机制来保证对链路质量的控制,所以在传输层上采用UDP链路进行通信,该过程数据报文为SIP协议报文。在此网络结构基础上,软网关通过转发经过转换协议的报文,达到建立,完成车载GPS设备与SIP服务器之间会话的目的。 (2)所述车载GPS设备通过本发明协议转换软网关与SIP服务器建立,完成会话。本次流程首次连接请求由车载GPS设备发起,如图2总流程图所示其步骤为2. I)所述基于Twsited网络框架的软网关启动后,调用reactor. IistenTCP()函数,实例化ServerFactory类对象Dev2GateFactory初始化软网关资源,监听TCP端口,调用reactor, run O ,准备网络事件处理。
2. 2)当有车载GPS设备通过TCP接入时,软网关实例化Protocol类对象Dev2GateProtoco I,对网络连接进行处理启动网络事件处理。2. 3)建立TCP连接后,触发connectionMade O事件,查找空闲UDP端口,保存TCP报文时间,启动TCP超时处理函数handle_Tcptimer O2. 4)软网关接收到GPS设备数据报文,触发dataReceivedO事件,开始对报文进行数据库注册校验,解析该私有协议,启动并进入Deferred子线程,定时私对有协议报文进行SIP协议转换。2. 5)判断该GPS设备是否为首次接入软网关,若是,则实例化模拟设备simu_dev O对象,启动模拟设备服务,调用相应方法,注册登陆SIP服务器,建立会话。若否,则跳过启动注册步骤。 2. 6)模拟设备启动注册之后,Deferred子线程利用对应的模拟设备simu_dev()实例中的具体方法,上发已转换的SIP报文,处理设备对服务器的响应与请求。2. 7)软网关接收SIP服务器下发响应/请求数据报文,并处理。判断是否需要将服务器下发报文转发至设备。若是,则通过模拟设备对应实例调用转换模块中的Qcserfdev O函数将SIP报文转换为私有协议报文,并下发。若否,则等待dataReceivedO事件触发,处理后续数据报文。2.8)服务器报文已经转换,下发后,判断会话是否结束。若是,则启动connectionLost ()事件断开相应连接,清理缓存。若否,则等待下次dataReceived O事件触发,处理后续数据报文。(3)图3为TCP超时处理函数handle_Tcptimer()流程图,其用于,定时判断TCP连接是否超时,并处理。其在TCP连接保活机制,模拟设备心跳包机制中都有应用。具体描述为,每次接收到TCP报文或系统特定时间时,系统均会将当前时间保存当TCP报文更新时间。然后以timeout为时间间隔,定时循环启动handle_Tcptimer()超时处理函数,所述timeout为预定义TCP连接超时的时间间隔。每次校验过程为3. I)获取当前系统时间now。3. 2) now减去最新TCP报文时间比较是否小于时间间隔timeout。若否,贝U判断TCP连接超时,启动connectionLost O事件断开链接。3. 3)若是则不做任何处理,退出处理程序。系统等待timeout大小时间间隔后,将再次调用handle_Tcptimer O进行超时判断处理。(4)当存在车载GPS设备接入软网关后,系统实例化Dev2GateProtocol对象,启动网络事件处理。其中重要流程为当接收到GPS数据报后,触发系统dataReceivedO事件,开始对报文进行处理的过程。所述步骤如图4所示4. I)刷新当前系统时间为TCP连接活动标记,保存最新TCP报文时间,对本次连接进行保活处理。4. 2)调用函数QCpredev2ser O对GPS私有协议数据报文进行预处理,返回设备序列号sn与经过预处理的私有协议数据报文data。所述序列号sn为厂商自行定义编号。所述QCpredev2ser O为扩展模块protoTrans中的子函数,利用C语言编写,快速对GPS报文进行了类型判断,格式处理,格式转换,报文X0R,CRC检验,去除GPRS头等处理。4. 3)软网关系统判断sn序列号是否已经经过设备数据库校验。如果是,则该设备合法,且并非首次接入,直接将预处理后数据报文data保存到dBuff缓存中。4.4)如果否,则该sn序列号设备首次接入软网关系统,必须进行数据库查询比对,判断是否合法。如果该sn序列号未在设备数据库中找到,则判断本次GPS设备接入非法,系统将断开连接,并清空对应缓存数据。4. 5)如果该sn序列号在数据库中找到,则其为在设备数据库中注册备案过的合法设备编号。软网关会将本次设备接入的网络IP与端口 Port进行登记,写入数据库,并读取其注册的统一编号,作为系统内部识别编号。然后将预处理后的数据报文data保存到dBuff缓存中。4. 6)通过回调函数 Deferred, callback(),在 deferToThread 线程中,调用函数send2Server()对缓存中的数据报文进行非阻塞定时处理,并尝试调用对应的模拟设备方法,上发报文。若此时对应模拟设备未启动,则函数返回,并在设定时间内再次尝试调用。 完成以4. I广4. 6)流程后,系统完成完成对私有车载GPS设备协议数据接收处理,但仍然需要通过启动对应的模拟设备实例,调用其中的具体方法来实现会话注册,报文的转发等具体功能。(5)在完成(4)中的流程处理后,GPS设备私有协议数据处理结束,需要开始建立与SIP服务器会话,完成通信会话任务。由于目前大多数GPS设备与SIP服务器通信目的主要在在上传私有协议封装的定位数据。因此图5所示流程,通过实现该基本功能,从而演示本发明在该环节的工作机制5. I)系统判断该车载GPS设备是否为首次进行报文协议转换发送。如果否,说明之前已经注册启动相应的模拟设备Simu_deV()类对象实例,则跳过注册启动与SIP服务器会话的流程。如果是,则必须重新实例化对应的模拟设备Simu_deV()类对象,注册并启动服务simudev. start O,通过该模拟设备实例模拟GPS设备与SIP服务器完成会话通信任务。5. 2)实例化模拟端点对象rvsip_endpoint,用于上发服务器设备请求,或者服务器下发指令。5. 3)模拟设备服务启动后,将调用reactor. IistenUDPO方法,监听的图2所示,
2.3)步骤中查找到的UDP端口,以便接收或上发服务器报文。5. 4)实例化会话注册请求rvsip_request ("REGISTER"...),通过调用该实例中的req. IoginO方法,将相应验证密文,模拟设备网络IP,Μ)Ρ端口等信息打包为XML格式SIP协议注册请求报文。然后通过rvsip_endpoint实例中的deliverRequest O方法向指定SIP服务器发送该报文。5. 5)模拟设备发送注册报文后,等待SIP服务器响应。如果未在规定时间内收到注册成功服务器响应,则继续重发注册报文,直到重发次数超过3次,停止重发,启动connectionLost O事件断开连接,关闭本次会话;如果在规定时间内收到注册成功服务器响应200 (OK),则会话注册成功。模拟设备与SIP服务器建立会话,开启心跳包,维持GPS,软网关,服务器三者之间通信。5. 6)模拟设备与SIP服务器会话注册成功后,数据接收处理流程4. 6)中的deferToThread 线程中的 send2Server()函数,利用 sleep O 函数,定时调用 QCdev2ser()子函数将预处理数据缓存dBuff中最旧的请求/响应数据报data转换成XML格式的SIP报文,起到控制数据报文处理、上发频率,预防接收数据过快导致报文丢失的作用。5. 6)完成协议转换后,在Send2Server()函数中可以成功调用已经启动注册的模拟设备实例中的方法sendO向服务器发送经过转换的SIP报文。5. 7)发送数据报文后,相应模拟设备实例等待SIP服务器响应。如果未在规定时间内收到服务器响应,则重新调用sendO方法重发SIP数据报文,若重发次数超过3次,则停止重发,启动connectionLost O事件断开连接,关闭本次会话;如果在规定时间内收到服务器响应200 (0K),则表明SIP数据报文发送成功,本次会话的协议转换任务完成。为了能够实现更丰富的会话控制功能,本发明还预留了针对SIP服务器与GPS设备之间其他响应或者请求会话处理的设计空间。只 需要在模拟设备Simu_deV()类对象实例中加入相应响应或请求的处理方法并调用即可,从而保证了系统的扩展性。
权利要求
1.一种车载GPS设备协议转换软网关,其特征在于所述车载GPS设备协议转换软网关为设备私有协议与SIP协议转换软网关,所述软网关包括 Dev2GateFactory对象单元,用以负责Dev2GateProtocol对象的管理,模拟设备的本地UDP端口查找,以及会话管理的方法实现,所述会话管理包括数据库读写接口 ; Dev2GateProtocol对象单元,用以负责软网关与GPS设备TCP连接超时管理,数据报文解析校验,GPS设备数据库读取写入,启动/停止模拟设备,私有协议与SIP协议转换,转发设备请求/响应等网络处理的方法实现; Simu_dev对象单元,用以负责实例化软网关中对应车载GPS设备的模拟设备,通过该模拟设备,实现设备与服务器之间会话的具体方法。
2.如权利要求I所述的车载GPS设备协议转换软网关,其特征在于所述软网关接收到GPS设备私有数据报文后,触发dataReceivedO事件,实现所述数据报文解析校验方法首先调用QCpredeV2ser O函数进行预解析处理,对报文进行校验,并解析出设备SN序列号与去除GPRS头的数据报data ;所述设备SN序列号由厂家自由定义,并事先注册到软网关设备数据库中; 软网关读取软网关设备数据库,检索该设备SN序列号是否合法,并登记接入GPS设备网络信息;所述Dev2GateProtocol对象单元中,在所述dataReceived O事件里,实现私有协议与SIP协议报文转换经预解析和数据库查询之后的合法GPS设备,软网关会将其需要上发至服务器的的TCP报文数据,保存到列表缓存dbuff中;调用函数deferToThreadO进入延迟对象Deferred子线程中,按照设定的时间间隔,从列表中读取保存的私有协议数据,经函数QCdeWserO转换为SIP协议报文之后发送至服务器; 所述Dev2GateProtocol对象单元中,TCP保活机制是每次收到GPS设备发送的TCP数据报文则更新报文时间,定时启动TCP超时处理程序,检查当前时间与最新报文时间间隔是否超时,若超时则软网关主动断开与设备的TCP连接。
3.如权利要求I或2所述的车载GPS设备协议转换软网关,其特征在于所述Dev2GateProtocol对象单元中,在每个设备第一次接入时,注册启动模拟设备simu dev O对象实例;每个GPS设备对应一个模拟设备实例,通过该实例经过UDP链路向SIP服务器发送请求或响应,同时也可以根据需要将服务器的请求与响应转发给GPS设备;所述模拟设备实例中,实例化sip. Base类对象rvsip_endpoint,模拟设备端点,用于上发服务器设备请求,或者服务器下发指令;实例化sip. Request类对象rvsip_request,用于组成上发服务器的相应SIP协议请求报文,模拟设备还通过开启心跳包,定时向SIP服务器发送从心跳报文,保持模拟设备与SIP服务器之间的UDP链路通信会话的有效性,模拟设备在接收到服务器下发GPS设备指令时,将调用Qcserfdev O函数,将SIP协议报文解析为设备可识别的私有协议报文,并下发。
4.如权利要求I或2所述的车载GPS设备协议转换软网关,其特征在于所述协议转换软网关还包括TCP超时处理子单元,如出现TCP连接超时,接入设备未注册,数据报文非法或会话无响应,则软网关将触发connectionLost O事件,执行关闭TCP连接,删除模拟设备,清空缓存操作。
5.如权利要求2所述的车载GPS设备协议转换软网关,其特征在于所述私有协议数据报文预处理函数QCpredev2ser O,私有协议数据报文转换XML格式SIP协议数据报文函数QCdev2ser O,SIP协议报文转换成私有协议报文函数Qcser2dev O均为C语言扩展模块 protoTrans中的子函数。
全文摘要
一种车载GPS设备协议转换软网关,包括Dev2GateFactory对象单元,用以负责Dev2GateProtocol对象的管理,模拟设备的本地UDP端口查找;Dev2GateProtocol对象单元,用以负责软网关与GPS设备TCP连接超时管理,数据报文解析校验,GPS设备数据库读取写入,启动/停止模拟设备,私有协议与SIP协议转换,转发设备请求/响应等网络处理的方法实现;Simu_dev对象单元,用以负责实例化软网关中对应注册车载GPS设备的模拟设备,通过该模拟设备,实现设备与服务器之间会话的具体方法。本发明对接入设备与通信会话进行统一有效的管理,加强通信会话的统一性,有效性,可扩展性。
文档编号H04L29/06GK102724183SQ20121017485
公开日2012年10月10日 申请日期2012年5月28日 优先权日2012年5月28日
发明者孟利民, 彭宏, 徐志江, 王胜 申请人:杭州普诺科技有限公司, 浙江工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1