一种信息发送方法、装置及车载人车交互终端
技术领域
本申请涉及通信技术领域,尤其是涉及一种信息发送方法、装置及车载人车交互终端。
背景技术
车联网系统包括车载T-BOX、后台系统、手机APP和主机。车载T-BOX,即TelematicsBOX,车载T-BOX主要用于与后台系统以及手机APP之间进行通信,实现手机APP的车辆信息显示与控制。车载T-BOX中通常包含多个应用模块,例如车身数据模块、远程控制模块、车辆诊断模块等,多个应用模块在实现其对应的功能的时候通常需要进行信息交互。例如在对车辆进行远程控制时,远程控制模块可能需要获取车身数据模块中的车身数据以及车辆诊断模块中的诊断数据。
现有技术中,多个应用模块之间进行通信时,通常是点对点通信,即一个模块只能与一个模块进行通信,不能同时与多个模块之间进行通信,通信效率较低。
发明内容
有鉴于此,本申请的目的在于提供一种信息发送方法、装置及车载人车交互终端,以提高车载人车交互终端中多个模块之间的通信效率。
第一方面,本申请实施例提供了一种信息发送方法,作用于车载人车交互终端,所述车载人车交互终端包括:第一应用模块和第二应用模块;
所述方法包括:
确定目标车辆运行信息的形式;
若所述目标车辆运行信息为第一种形式的目标车辆运行信息,则第一应用模块通过CommAPI信息通道向第二应用模块发送信息获取请求;以使所述第二应用模块使用所述第一应用模块和所述第二应用模块约定好的通信协议,通过所述CommAPI信息通道向所述第一应用模块发送所述目标车辆运行信息;所述第一种形式的目标车辆运行信息为非常量形式的信息,且所述第一种形式的目标车辆运行信息使用的编程语言、所述第一应用模块内使用的编程语言和所述第二应用模块内使用的编程语言均相同;
所述第一应用模块通过所述CommAPI信息通道接收所述目标车辆运行信息;
所述第一应用模块按照所述约定好的通信协议解析所述目标车辆运行信息。
结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,其中,
所述人车交互终端还包括独立存储单元,所述方法包括:
若所述目标车辆运行信息为第二种形式的目标车辆运行信息,则所述第二应用模块将所述目标车辆运行信息存储在所述独立存储单元中,以使所述第一应用模块直接获取所述目标车辆运行信息:所述第二种形式的目标车辆运行信息为常量形式的信息,且所述第二种形式的目标车辆运行信息使用的编程语言、所述第一应用模块内使用的编程语言和所述第二应用模块内使用的编程语言均相同;
所述第一应用模块直接获取所述目标车辆运行信息。
结合第一方面,本申请实施例提供了第一方面的第二种可能的实施方式,其中,
所述人车交互终端还包括传输线,所述方法包括:
若所述目标车辆运行信息为第三种形式的目标车辆运行信息,则所述第二应用模块将所述目标车辆运行信息打包成protocol buffer数据交换格式的数据包,通过所述传输线将已打包的目标车辆运行信息传输至所述第一应用模块;所述第三种形式的目标车辆运行信息为非常量形式的信息,且所述第三种形式的目标车辆运行信息使用的编程语言与所述第一应用模块内使用的编程语言相同,且所述第一应用模块内使用的编程语言与所述第二应用模块内使用的编程语言不相同;
所述第一应用模块通过所述传输线获取所述已打包的目标车辆运行信息。
结合第一方面,本申请实施例提供了第一方面的第三种可能的实施方式,其中,
所述第一应用模块为车载程序模块或车载服务模块;所述第二应用模块为车载程序模块或车载服务模块或车载CAN总线数据交互模块。
第二方面,本申请实施例还提供一种信息发送装置,作用于车载人车交互终端,所述人车交互终端包括:第一应用模块和第二应用模块;信息发送装置设置在所述第一应用模块内;
所述信息发送装置包括:确定模块、发送模块、接收模块以及解析模块;
所述确定模块,用于确定目标车辆运行信息的形式;
所述发送模块,用于若所述目标车辆运行信息为第一种形式的目标车辆运行信息,则所述第一应用模块通过CommAPI信息通道向所述第二应用模块发送信息获取请求;所述第一种形式的目标车辆运行信息为非常量形式的信息,且所述第一种形式的目标车辆运行信息使用的编程语言、所述第一应用模块内使用的编程语言和所述第二应用模块内使用的编程语言均相同;
所述接收模块,用于通过CommAPI信息通道接收所述目标车辆运行信息;
所述解析模块,用于按照约定好的通信协议解析所述目标车辆运行信息。
结合第二方面,本申请实施例提供了第二方面的第一种可能的实施方式,其中,
所述第一应用模块为车载程序模块或车载服务模块;所述第二应用模块为车载程序模块或车载服务模块或车载CAN总线数据交互模块。
第三方面,本申请实施例还提供车载人车交互终端,应用于信息发送方法,包括:
第一应用模块和第二应用模块;
所述第一应用模块,用于若车辆运行信息为第一种形式的目标车辆运行信息,则通过CommAPI信息通道向所述第二应用模块发送信息获取请求;所述第一种形式的目标车辆运行信息为非常量形式的信息,且所述第一种形式的目标车辆运行信息使用的编程语言、所述第一应用模块内使用的编程语言和所述第二应用模块内使用的编程语言均相同;
所述第二应用模块,用于使用与所述第一应用模块约定好的通信协议,所述通过CommAPI信息通道向所述第一应用模块发送目标车辆运行信息;
所述第一应用模块,还用于通过所述CommAPI信息通道接收所述目标车辆运行信息;
所述第一应用模块,还用于按照约定好的通信协议解析所述目标车辆运行信息。
结合第三方面,本申请实施例提供了第三方面的第一种可能的实施方式,其中,还包括:独立存储单元;
所述独立存储单元,用于若所述目标车辆运行信息为第二种形式的目标车辆运行信息,则存储所述目标车辆运行信息;所述第二种形式的目标车辆运行信息为常量形式的信息,且所述第二种形式的目标车辆运行信息使用的编程语言、所述第一应用模块内使用的编程语言和所述第二应用模块内使用的编程语言均相同。
结合第三方面,本申请实施例提供了第三方面的第二种可能的实施方式,还包括传输线;
所述独立存储单元,用于若所述目标车辆运行信息为第三种形式的目标车辆运行信息,则将所述目标车辆运行信息打包成protocol buffer数据交换格式的数据包并传输至所述第二应用模块;所述第三种形式的目标车辆运行信息为非常量形式的信息,且所述第三种形式的目标车辆运行信息使用的编程语言与所述第一应用模块内使用的编程语言相同,且所述第一应用模块内使用的编程语言与所述第二应用模块内使用的编程语言不相同。
第四方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,存储器存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储器之间通过总线通信,机器可读指令被处理器执行时执行上述信息发送方法中任一种可能的实施方式中的步骤。
第五方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述信息发送方法中任一种可能的实施方式中的步骤。
本申请实施例提供的信息发送方法,作用于车载人车交互终端,车载人车交互终端包括:第一应用模块和第二应用模块;所述方法包括确定目标车辆运行信息的形式;若目标车辆运行信息为第一种形式的目标车辆运行信息,则第一应用模块通过CommAPI信息通道向第二应用模块发送信息获取请求;以使第二应用模块使用第一应用模块和第二应用模块约定好的通信协议,通过CommAPI信息通道向第一应用模块发送目标车辆运行信息;第一种形式的目标车辆运行信息为非常量形式的信息,且第一种形式的目标车辆运行信息使用的编程语言、第一应用模块内使用的编程语言和第二应用模块内使用的编程语言均相同;第一应用模块通过CommAPI信息通道接收目标车辆运行信息;第一应用模块按照约定好的通信协议解析目标车辆运行信息。本申请实施例提供的信息发送方法针对第一种形式的目标车辆运行信息,可以实现利用CommAPI信息通道进行通信,提高了车载人车交互终端中多模块之间的通信效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种信息发送方法的流程图;
图2示出了本申请实施例所提供的车载T-BOX模块分层架构的结构示意图;
图3示出了本申请实施例所提供的一种信息发送装置的结构示意图;
图4示出了本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
车联网系统包括车载T-BOX、后台系统、手机APP和主机。车载T-BOX,即TelematicsBOX,车载T-BOX主要用于与后台系统以及手机APP之间进行通信,实现手机APP的车辆信息显示与控制。车载T-BOX中通常包含多个应用模块,例如车身数据模块、远程控制模块、车辆诊断模块等,多个应用模块在实现其对应的功能的时候通常需要进行信息交互。例如在对车辆进行远程控制时,远程控制模块可能需要获取车身数据模块中的车身数据以及车辆诊断模块中的诊断数据。
现有技术中,多个应用模块之间进行通信时,通常是点对点通信,即一个模块只能与一个模块进行通信,不能同时与多个模块之间进行通信,通信效率较低。
考虑到现有技术中多个应用模块之间通信效率较低。基于此,本申请实施例提供了一种信息发送方法、装置及车载人车交互终端,下面通过实施例进行描述。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种信息发送方法进行详细介绍。
本申请实施例提供的一种信息发送方法作用于车载的人车交互终端,具体可以作用于车载T-BOX中,车载T-BOX中进行内部通信时涉及很多应用模块,各应用模块之间通常需要进行信息交互。各应用模块之间使用的编程语言可能不相同,需要对应的信息发送方法发送信息。为了更快速地实现各模块之间定制化地信息交互需求,可以将各应用模块进行分层,降低车载应用模块与车载服务模块之间的耦合度。如图1所示,示出了车载T-BOX模块分层架构的结构示意图,具体可以分为应用层、中间层以及控制层,应用层可以包括车载应用模块,具体如GPS应用模块、车身数据模块以及其他车载应用模块等,中间层可以包括车载服务模块,具体如电源管理服务模块、网络管理服务模块以及其他车载服务模块等,控制层可以包括MCU微控制模块、ECU电子控制模块以及其他车载CAN总线数据交互模块等。
如图2所示,为本申请实施例提供的一种信息发送方法流程图。
S201:确定目标车辆运行信息的形式。
S202:若车辆运行信息为第一种形式的目标车辆运行信息,则第一应用模块通过CommAPI信息通道向第二应用模块发送信息获取请求;以使第二应用模块使用第一应用模块和第二应用模块约定好的通信协议,通过CommAPI信息通道向第一应用模块发送目标车辆运行信息。
S203:第一应用模块通过CommAPI信息通道接收目标车辆运行信息。
S204:第一应用模块按照约定好的通信协议解析目标车辆运行信息。
在本申请实施例提供的信息发送方法中,首先确定目标车辆运行信息的形式,再根据目标车辆运行信息的形成采用对应的信息发送方法。
由于车载T-BOX中有多种应用模块,应用模块可以包括第一应用模块和第二应用模块,在具体实施中,若第一应用模块需要向第二应用模块请求信息时,可以定义第一应用模块为信息请求模块,定义第二应用模块为信息提供模块;若第二应用模块需要向第一应用模块请求信息时,可以定义第二应用模块为信息请求模块,定义第一应用模块为信息提供模块,这里,可以定义第一应用模块为信息请求模块,定义第二应用模块为信息提供模块。
在步骤201中,第一应用模块与第二应用模块使用的编程语言不一定相同。例如,若第一应用模块和第二应用模块均为车载程序模块或车载服务模块时,具体如车身数据模块、远程控制模块、GPS导航模块、网络管理服务模块、控制服务模块等,第一应用模块和第二应用模块使用的编程语言均可以为C++编程语言;若第一应用模块为车载程序模块或车载服务模块,第二应用模块为车载CAN总线数据交互模块时,具体如MCU微控制模块、ECU电子控制模块等,第一应用模块使用的编程语言可以为C++编程语言,第二应用模块使用的编程语言可以为C编程语言。因此根据第一应用模块与第二应用模块使用的编程语言是否相同,需要判断第一应用模块与第二应用模块之间交互的目标车载运行信息使用的编程语言是否与第一应用模块或第二应用模块使用的编程语言相同。
另外,还可以根据第一应用模块与第二应用模块之间交互的目标车载运行信息是否为常量信息,可以将目标车载运行信息分为常量形式的目标车载运行信息和非常量形式的目标车载运行信息。
根据上述分析,具体地,车载T-BOX中目标车辆运行信息的形式可以有以下三种形式的目标车辆运行信息:
第一形式的目标车辆运行信息为非常量形式的信息,且第一种形式的目标车辆运行信息使用的编程语言、第一应用模块内使用的编程语言和第二应用模块内使用的编程语言均相同,也就是第一应用模块与第二应用模块均可以为车载应用模块或车载服务模块,目标车载运行信息是存储在车载应用模块或车载服务模块里的非常量形式的信息;
第二种形式的目标车辆运行信息为常量形式的信息,且第二种形式的目标车辆运行信息使用的编程语言、第一应用模块内使用的的编程语言和第二应用模块内使用的编程语言均相同,也就是第一应用模块与第二应用模块均可以为车载应用模块或车载服务模块,目标车载运行信息是存储在车载应用模块或车载服务模块里的常量形式的信息;
第三种形式的目标车辆运行信息为非常量形式的信息,且第三种形式的目标车辆运行信息使用的编程语言与第一应用模块内使用的编程语言相同,且第一应用模块内使用的编程语言与第二应用模块内使用的编程语言不相同,也就是第一应用模块可以为车载应用模块或车载服务模块,第二应用模块为车载CAN总线数据交互模块,目标车载运行信息是存储在车载CAN总线数据交互模块里的非常量形式的信息。
这里需要说明的是,在实际中只有车载应用模块或车载服务模块中保存有常量形式的目标车辆运行信息,由于车载应用模块或车载服务模块中使用的编程语言是相同的,因此第二种形式的目标车辆运行信息使用的编程语言第一应用模块内使用的的编程语言和第二应用模块内使用的编程语言必定是相同的。常量形式的目标车辆运行信息包括登录通信仿真平台的状态信息、车身车架号、T-BOX的识别码PDID以及车身中其他常量信息。
在步骤S202中,第一应用模块向第二应用模块发送信息获取请求发送之前,首先在第一应用模块与第二应用模块之间通过D-BUS总线和CommAPI核心库建立CommAPI信息通道,并且第一应用模块与第二应用模块均需要在D-BUS总线进行注册。建立好CommAPI信息通道之后,在第二应用模块中先编写好数据链FIDL文件,FIDL文件生成通用的C++头文件,第二应用模块利用CommAPI信息通道将C++头文件发送至第一应用模块,第一应用模块接收到C++头文件之后通过编译工具编译成第一应用模块可识别的接口文件,第一应用模块便与第二应用模块形成了socket通信协议。
在上述过程中,第二应用模块可以把C++头文件通过CommAPI信息通道传输给任意信息请求模块,实现多个模块之间同时进行批量信息交互,更加简单快速。
若车辆运行信息为第一种形式的目标车辆运行信息,那么第一应用模块通过CommAPI信息通道向第二应用模块发送信息获取请求,第二应用模块使用第一应用模块和第二应用模块约定好的通信协议,通过CommAPI信息通道向第一应用模块发送第一种形式的目标车辆运行信息,第一应用模块通过CommAPI信息通道接收到目标车辆运行信息之后,按照约定好的通信协议解析目标车辆运行信息。
若目标车辆运行信息为第二种形式的目标车辆运行信息,那么第二应用模块将第二种形式的目标车辆运行信息存储在独立存储单元中,第一应用模块可以直接从独立存储单元中获取目标车辆运行信息。
这里,第二应用模块引用了Andriod系统中常用的property属性文件进行存储,property属性文件是基于文件存储的。由于第二种形式的目标车辆运行信息在各个模块中都有可能会用到,因此第二种形式的目标车辆运行信息以文件的形式存储在独立存储单元,独立存储单元是独立于第一应用模块与第二应用模块的,任意信息请求模块需要用时直接打开独立存储单元中的文件即可,这样简化了第一应用模块向第二应用模块获取信息的步骤,实现了多模块之间简单快速地进行通信。
若目标车辆运行信息为第三种形式的目标车辆运行信息,那么第二应用模块将第三种形式的目标车辆运行信息打包成protocol buffer数据交换格式的数据包,通过传输线将已打包的目标车辆运行信息传输至第一应用模块。
这里,由于第二应用模块与第一应用模块内使用的编程语言是不同的,第二应用模块与第一应用模块之间不能直接进行通信,需要将不同编程语言的应用模块之间的信息转换成可在不同编程语言的应用模块之间进行通信的信息。protocol buffer可以简称为protobuf,是一款独立于语言、独立于平台、可扩展的序列化结构数据格式,可以用于数据存储以及实现不同编程语言的应用模块之间进行相互通信的数据转换格式,protocolbuffer可以实现C++、JAVA、Python、Ruby、Objective-C等编程语言之间的数据格式转换,因此第二应用模块可以利用protocol buffer将所要传送的目标车辆运行信息转换成第一应用模块可识别的数据格式,并将目标车辆运行信息进行打包通过传输线传输至第一应用模块。利用protocol buffer将所要传送的目标车辆运行信息的数据格式进行转换后,序列化的目标车辆运行信息的码流更小、传输速度更快、操作更加简单。
这里,目标车辆运行信息进行打包后,具体是通过传输线连接第一应用模块与第二应用模块串口或通过网络传输线的方式进行传输的。
在上述信息发送方法中,第一应用模块与第二应用模块之间可以通过异步监听方式或者同步获取方式实现通信。
基于相同的技术构思,本申请实施例还提供一种信息发送装置、车载人车交互终端、电子设备以及计算机存储介质等,具体可参见以下实施例。
如图3所示,为本申请实施例提供的一种信息发送装置300结构示意图,信息发送装置作用于车载人车交互终端,车载人车交互终端包括:第一应用模块和第二应用模块;信息发送装置设置在第一应用模块内;
信息发送装置300包括:确定模块301、发送模块302、接收模块303以及解析模块304;
确定模块301,用于确定目标车辆运行信息的形式;
发送模块302,用于若目标车辆运行信息为第一种形式的目标车辆运行信息,则第一应用模块通过CommAPI信息通道向第二应用模块发送信息获取请求;第一种形式的目标车辆运行信息为非常量形式的信息,且第一种形式的目标车辆运行信息使用的编程语言、第一应用模块内使用的编程语言和第二应用模块内使用的编程语言均相同;
接收模块303,用于通过CommAPI信息通道接收目标车辆运行信息;
解析模块304,用于按照约定好的通信协议解析目标车辆运行信息。
本申请实施例还提供了一种车载人车交互终端,应用于信息发送方法,包括:第一应用模块和第二应用模块;
第一应用模块,用于若车辆运行信息为第一种形式的目标车辆运行信息,则通过CommAPI信息通道向第二应用模块发送信息获取请求;第一种形式的目标车辆运行信息为非常量形式的信息,且第一种形式的目标车辆运行信息使用的编程语言、第一应用模块内使用的编程语言和第二应用模块内使用的编程语言均相同;
第二应用模块,用于使用与第一应用模块约定好的通信协议,通过CommAPI信息通道向第一应用模块发送目标车辆运行信息;
第一应用模块,还用于通过CommAPI信息通道接收目标车辆运行信息;
第一应用模块,还用于按照约定好的通信协议解析目标车辆运行信息。
进一步地,车载人车交互终端还包括:独立存储单元;
独立存储单元,用于若目标车辆运行信息为第二种形式的目标车辆运行信息,则存储目标车辆运行信息;第二种形式的目标车辆运行信息为常量形式的信息,且第二种形式的目标车辆运行信息使用的编程语言、第一应用模块内使用的编程语言和第二应用模块内使用的编程语言均相同。
进一步地,车载人车交互终端还包括传输线;
独立存储单元,用于若目标车辆运行信息为第三种形式的目标车辆运行信息,则将目标车辆运行信息打包成protocol buffer数据交换格式的数据包并传输至第二应用模块;第三种形式的目标车辆运行信息为非常量形式的信息,且第三种形式的目标车辆运行信息使用的编程语言与第一应用模块内使用的编程语言相同,且第一应用模块内使用的编程语言与第二应用模块内使用的编程语言不相同。
如图4所示,为本申请实施例所提供的一种电子设备400的结构示意图,该电子设备400包括:至少一个处理器401,至少一个网络接口404和至少一个用户接口403,存储器405,至少一个通信总线402。通信总线402用于实现这些组件之间的连接通信。用户接口403,包括显示器(例如,触摸屏)、键盘或者点击设备(例如,触感板或者触摸屏等)。
存储器405可以包括只读存储器和随机存取存储器,并向处理器401提供指令和数据。存储器405的一部分还可以包括非易失性随机存取存储器(NVRAM)。
在一些实施方式中,存储器405存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统4051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;
应用程序模块4052,包含各种应用程序,用于实现各种应用业务。
在本申请实施例中,通过调用存储器405存储的程序或指令,处理器401用于:
确定目标车辆运行信息的形式;
若目标车辆运行信息为第一种形式的目标车辆运行信息,则第一应用模块通过CommAPI信息通道向第二应用模块发送信息获取请求;以使第二应用模块使用第一应用模块和第二应用模块约定好的通信协议,通过CommAPI信息通道向第一应用模块发送目标车辆运行信息;第一种形式的目标车辆运行信息为非常量形式的信息,且第一种形式的目标车辆运行信息使用的编程语言、第一应用模块内使用的编程语言和第二应用模块内使用的编程语言均相同;
第一应用模块通过CommAPI信息通道接收目标车辆运行信息;
第一应用模块按照约定好的通信协议解析目标车辆运行信息。
进一步地,处理器401还用于:
若目标车辆运行信息为第二种形式的目标车辆运行信息,则第二应用模块将目标车辆运行信息存储在独立存储单元中,以使第一应用模块直接获取目标车辆运行信息:第二种形式的目标车辆运行信息为常量形式的信息,且第二种形式的目标车辆运行信息使用的编程语言、第一应用模块内使用的编程语言和第二应用模块内使用的编程语言均相同;
第一应用模块直接获取目标车辆运行信息。
进一步地,处理器401还用于:
若目标车辆运行信息为第三种形式的目标车辆运行信息,则第二应用模块将目标车辆运行信息打包成protocol buffer数据交换格式的数据包,通过传输线将已打包的目标车辆运行信息传输至第一应用模块;第三种形式的目标车辆运行信息为非常量形式的信息,且第三种形式的目标车辆运行信息使用的编程语言与第一应用模块内使用的编程语言相同,且第一应用模块内使用的编程语言与第二应用模块内使用的编程语言不相同;
第一应用模块通过传输线获取已打包的目标车辆运行信息。
本申请实施例所提供的进行信息发送方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。