车载信息系统及其控制方法_3

文档序号:9691489阅读:来源:国知局
22、车载SDK模块21。
[0130]移动终端10和车载设备20通过一根USB连接线建立硬件连接,而后再建立软件连接;第二数据传输模块和第一数据传输模块中包含USB驱动;当两者在硬件上通过USB连接线连接后,将自动建立连接;连接建立后,数据转发模块和车载SDK模块使用建立好的连接与移动终端进行数据通信。
[0131]第二数据传输模块用于加载车载设备USB驱动,并检测USB设备的插拔,当USB设备插入后,USB驱动检测到设备并与设备建立连接,而后第二数据传输模块创建命令通道、数据通道和文件传输通道,并通知数据转发模块连接状态,车载SDK模块定义并实现了上层应用所需要的关于通信相关的接口。
[0132]第一数据传输模块用于加载移动终端USB驱动,并检测USB设备的插拔,USB设备插入后,USB驱动检测到设备并与设备建立连接,然后创建与车载设备相对应的数据通道,移动SDK模块定义并实现了上层应用所需要的关于通信相关的接口。
[0133]请参阅图2,车载设备的第二数据传输模块23建立连接后,同时创建命令通道231、数据通道232和文件通道233。命令通道231用来专门传输控制指令,以及基础数据,如心跳、时间。数据通道232用来专门传输基本数据,一般是不大的数据,如协议数据。文件通道233用来专门传输文件,因为文件一般较大,传输过程较长,为了不影响其他数据的传输,开辟专门的通道传输大文件。
[0134]本发明中,指令执行采用了优先级动态调整方法,包括:
[0135]步骤A1、在命令通道中,命令队列里存储着准备发送的命令;
[0136]步骤A2、当命令队列中包含多个命令时,命令的执行将根据优先级的高低来执行;将队列根据优先级高低进行排序采用冒泡排序方法;
[0137]步骤A3、排序完成后,取出优先级最高的命令执行;
[0138]步骤A4、剩余的命令优先级都加1,如果再有命令添加到该队列中,那么原来的命令将优先执行;
[0139]步骤A5、判断命令队列是否为空,不为空,就进入步骤A2 ;为空就等待命令。
[0140]上述冒泡排序方法包括:重复地走访过要排序的数列,一次比较两个元素,如果两者顺序错误就将其交换过来;走访数列的工作是重复地进行直到没有再需要交换,即该数列已经排序完成。请参阅图7,冒泡排序方法具体包括:
[0141]-比较相邻的元素,如果第一个比第二个大,就将两者交换;
[0142]-对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对;在这一点,最后的元素应该会是最大的数;
[0143]-针对所有的元素重复以上的步骤,除了最后一个;
[0144]-持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
[0145]所述系统还包括搜索模块,用以搜索所有可搜集的移动设备信息和车载设备信息,并建立了设备之间的对应关系,以树的方式存储在程序中;当检测到移动设备后,将根据移动设备的信息,从树中搜索对应的配置数据。所述搜索模块沿着树的深度遍历树的节点,尽可能深的搜索树的分支;当节点V的所有边都己被探寻过,搜索将回溯到发现节点V的那条边的起始节点;这一过程一直进行到已发现从源节点可达的所有节点为止;如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
[0146]本发明还提供一种上述车载信息系统的控制方法,所述方法包括如下步骤:移动终端和车载设备通过一根USB连接线建立硬件连接,而后再建立软件连接。第二数据传输模块和第一数据传输模块中包含USB驱动;当两者在硬件上通过USB连接线连接后,将自动建立连接;连接建立后,数据转发模块和SDK模块使用建立好的连接与移动终端进行数据通信。第二数据传输模块加载USB驱动,并检测USB设备的插拔,当USB设备插入后,USB驱动检测到设备并与设备建立连接,而后第二数据传输模块创建命令通道、数据通道和文件传输通道,并通知数据转发模块连接状态,车载SDK模块定义并实现了上层应用所需要的关于通信相关的接口。第一数据传输模块加载移动终端USB驱动,并检测USB设备的插拔,USB设备插入后,USB驱动检测到设备并与设备建立连接,然后创建跟车载设备相对应的数据通道,移动SDK模块定义并实现了上层应用所需要的关于通信相关的接口。
[0147]所述第二数据传输模块建立连接后,同时创建命令通道、数据通道和文件通道;命令通道用来专门传输控制指令以及基础数据,包括心跳、时间;数据通道用来专门传输基本数据,包括协议数据;文件通道用来专门传输文件,为不影响其他数据的传输,开辟专门的通道传输大文件。
[0148]本发明方法中,指令执行采用优先级动态调整方法,包括:
[0149]步骤A1、在命令通道中,命令队列里存储着准备发送的命令;
[0150]步骤A2、当命令队列中包含多个命令时,命令的执行将根据优先级的高低来执行;将队列根据优先级高低进行排序采用冒泡排序方法;
[0151]步骤A3、排序完成后,取出优先级最高的命令执行;
[0152]步骤A4、剩余的命令优先级都加1,如果再有命令添加到该队列中,那么原来的命令将优先执行;
[0153]步骤A5、判断命令队列是否为空,不为空,就进入步骤A2 ;为空就等待命令。
[0154]上述冒泡排序方法包括:重复地走访过要排序的数列,一次比较两个元素,如果两者顺序错误就将其交换过来;走访数列的工作是重复地进行直到没有再需要交换,即该数列已经排序完成。请参阅图7,冒泡排序方法具体包括:
[0155]-比较相邻的元素,如果第一个比第二个大,就将两者交换;
[0156]-对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对;在这一点,最后的元素应该会是最大的数;
[0157]-针对所有的元素重复以上的步骤,除了最后一个;
[0158]-持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
[0159]请参阅图3,所述控制方法具体包括:
[0160]【步骤S1】启动车载设备上的车载信息系统;
[0161]【步骤S2】使用USB连接线将移动设备和车载设备连接起来,建立两者之间的物理连接;
[0162]【步骤S3】车载设备检测USB的插入和拔出;
[0163]【步骤S4】车载设备检测到USB设备,并尝试建立连接,如果是可以识别的设备,则进行连接;
[0164]【步骤S5】连接建立之后,车载设备的第二数据传输模块创建命令通道和数据通道;并通知数据转发模块,可以进行数据传输;
[0165]【步骤S6】当有文件传输的请求时,将建立文件通道,专门传输文件;
[0166]【步骤S7】当USB—直处于硬件连接时,车载信息系统将保持软件上的连接,保证各个数据通道的畅通,供上层程序调用;应用层能传输任何数据;数据的格式不限;
[0167]【步骤S8】断开USB线时,车载信息系统保持的连接将断开,直到检测到USB连接线将移动设备和车载设备连接起来,进入步骤S2。
[0168]所述控制方法还包括车载设备端启动步骤,请参阅图4,具体包括:
[0169]步骤Cl、手动启动车载设备的客户端软件,客户端软件启动后会自动判断是否已经启动,如果已经启动,那么后启动的客户端软件将自动退出;如果没有启动,则进行下一步USB的初始化流程;
[0170]步骤C2、USB设备初始化,首先检测USB设备,然后打开USB设备,打开成功后,然后将该USB设备注册到车载信息系统中;USB设备初始化完成后,进入本地连接建立过程;
[0171]步骤C3、本地连接建立过程中,首先创建一个单独的线程,查找连接的主机,并与具体的端口进行连接,连接成功后,将该连接作为一个数据通道,注册到车载信息系统的数据库中;
[0172]步骤C4、数据通道建立成功后,车载信息系统将监听连接端口,等待数据请求;
[0173]步骤C5、整个系统的数据处理都是事件驱动;根据不同的事件,进行不同的处理;
[0174]步骤C6、当接收到退出命令后,将退出车载设备端的程序。
[0175]所述控制方法还包括移动终端启动步骤,请参阅图5,具体包括:
[0176]步骤D1、移动终端的客户端软件启动后,判断程序是否已经启动,如果已经启动,就自动退出;没有启动将继续下一步,进行USB驱动的加载;
[0177]步骤D2、USB驱动加载成功后,将建立线程,等待车载设备端的连接请求;
[0178]步骤D3、与车载设备端建立连接后,将该连接作为数据传输通道,注册到车载信息系统的数据库中;
[0179]步骤D4、移动终端的客户端软件通过该数据通道进行数据传输;
[0180]步骤D5、当收到退出命令后,根据选择做相应的处理。
[0181]此外,为了解决车载设备和移动设备之间适配性的问题,该发明枚举了所有可以搜集的移动设备信息和车载设备信息,并建立了设备之间的对应关系,以树的方式存储在程序中。当检测到移动设备后,将根据移动设备的信息,从树中搜索对应的配置数据。该发明采用了深度优先搜索的算法来实现数据的查找。
[0182]算法介绍如下:深度优先搜索算法(Depth-First-Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点V的所有边都己被探寻过,搜索将回溯到发现节点V的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。
[0183]深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等坐寸。
[0184]DFS函数的调用堆栈的过程如图9至图11所示。
[0185]请参阅图9,此后堆栈调用返回到V0那一层,因为VI那一层也找不到跟VI的相邻未访问节点。
[0186]请参阅图10,此后堆栈调用返回到V3那一层。
[0187]请参阅图11,此后堆栈调用返回到主函数调用DFS(V0,0)的地方,因为已经找到解,无需再从别的节点去搜别的路径了。
[0188]该发明在设计实现过程中,采用了单例模式、工厂模式和观察者模式等。下面以观察者模式为例,简要阐述其设计原理。观察者设计结构图如图8所示。这里的主题Subject提供依赖于他的观察者Observer的注册
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1