基于蓝牙设备的蓝牙组网方法及其系统与流程

文档序号:20885154发布日期:2020-05-26 17:27阅读:1156来源:国知局
基于蓝牙设备的蓝牙组网方法及其系统与流程

本发明涉及蓝牙设备领域,具体涉及基于蓝牙设备的蓝牙组网方法及其系统。



背景技术:

现阶段,移动设备在无网络情况下,一般都是靠wifi来连接的,然而在没有wifi的情况下,则可采用蓝牙组网的方式来实现网内的数据传输。经过调研发现,目前蓝牙组网的情况下,ios能支持8台手机进行连接,而android则只能支持5台手机连接。如果要超过以上设备连接数限制的话,按照现有的设备是无法达到的。

那么,为何会产生这种情况呢?这是因为在蓝牙4.0技术领域情况下,通过一台设备开启gattserver服务,让其它设备将数据写入至该设备,也可以使得其它设备从该设备读取数据。而这单台设备的连接个数是有上限的。按照使用场景来讲,gatt协议是针对蓝牙低功耗设备开发的协议,如手表、空调等。而这个场景下,需要一台设备作为中央服务器,将数据共享给其它设备或让其它设备上传数据。该中央服务器仅是对外提供数据源。而这种方案是中心化方案。

根据上述可知,如果要应用在聊天、图片、语音同步聊天发送的场景下,由于单台设备连接数的上限,使得多台现有的蓝牙4.0设备之间无法真正的实现网内数据传输。因而,有必要提供一种基于蓝牙设备的蓝牙组网方法及其系统,以实现不受设备数量限制的基于蓝牙创建自组网,并基于自组网进行数据传输。



技术实现要素:

本发明所要解决的技术问题是:提供基于蓝牙设备的蓝牙组网方法及其系统,能够不受设备数量限制的基于蓝牙自组网,并在网内进行数据互传。

为了解决上述技术问题,本发明采用的技术方案为:

基于蓝牙设备的蓝牙组网方法,包括:

终端分别创建gattclient线程、gattserver线程、消息队列线程和一路由表;

终端将与其gattclient线程连接的其他终端的设备对象写入路由表中,所述设备对象包括gattserver线程的服务地址;

终端将所述其他终端发送过来的数据依序放入消息队列线程;

终端依序从所述消息队列线程中读取出数据,并依据路由表中各设备对象的gattserver线程的服务地址,将所述数据分别写入所述各设备对象对应的终端。

本发明提供的另一个技术方案为:

一种基于蓝牙设备的蓝牙组网系统,包括至少两个的终端;

所述终端包括:

创建模块,用于终端分别创建gattclient线程、gattserver线程、消息队列线程和一路由表;

路由表创建模块,用于将与其gattclient线程连接的其他终端的设备对象写入路由表中,所述设备对象包括gattserver线程的服务地址;

数据接收模块,用于将所述其他终端发送过来的数据依序放入消息队列线程;

数据写入模块,用于依序从所述消息队列线程中读取出数据,并依据路由表中各设备对象的gattserver线程的服务地址,将所述数据分别写入所述各设备对象对应的终端。

本发明的有益效果在于:提供一种去中心化的数据交互思路。将每个终端从逻辑上定义为转发器,每个终端都具备客户端和服务端,同时创建一张路由表。基于转发器的路由原理,利用每个终端自身的消息路由将数据分发至其他终端。在无网的情况下,能通过自组网,在网内实现不受终端数量限制的进行终端之间的数据互通。特别适用于实现多终端之间在无网络情况下进行数据、音频、视频的高效同步。

附图说明

图1为本发明基于蓝牙设备的蓝牙组网方法的流程示意图;

图2为本发明实施例一的流程示意图;

图3为本发明基于蓝牙设备的蓝牙组网系统的功能模块组成示意图。

标号说明:

1、创建模块;2、路由表创建模块;3、数据接收模块;4、数据写入模块;

5、生成模块;6、目录创建模块;7、获取模块;

21、扫描单元;22、第一写入单元;23、第一连接单元;24、第二写入单元。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:基于转发器的路由原理,利用每个终端自身的消息路由将数据分发至其他终端,实现不受终端数量限制的进行终端之间的数据互通。

本发明涉及的技术术语解释:

请参照图1,本发明提供基于蓝牙设备的蓝牙组网方法,包括:

终端分别创建gattclient线程、gattserver线程、消息队列线程和一路由表;

终端将与其gattclient线程连接的其他终端的设备对象写入路由表中,所述设备对象包括gattserver线程的服务地址;

终端将所述其他终端发送过来的数据依序放入消息队列线程;

终端依序从所述消息队列线程中读取出数据,并依据路由表中各设备对象的gattserver线程的服务地址,将所述数据分别写入所述各设备对象对应的终端。

从上述描述可知,本发明的有益效果在于:充分利用了转发器原理进行组网,使得用户在无网络的情况下也能不受终端数量限制的进行自由的组网并进行数据互通。特别适用于实现多终端之间在无网络情况下进行数据、音频、视频的高效同步。

进一步的,所述终端将与其gattclient线程连接的其他终端的设备对象写入路由表中,具体为:

终端依据预设uuid扫描获取至少一个其他终端;

将所述其他终端的蓝牙设备ip地址写入到对等网络节点的列表中;

终端的gattclient线程遍历所述列表,依据列表中的蓝牙设备ip地址建立与所述其他终端的蓝牙通讯连接;

终端将所述其他终端的设备对象写入路由表中,所述设备对象包括蓝牙广播id、蓝牙设备ip地址和gattserver线程的服务地址。

由上述描述可知,在一具体实施方式中,能够依据预设的uuid快速且准确地扫描获取指定的终端;依据终端的ip地址创建路由表,以实现基于路由表将数据分发至指定的终端,即保证终端之间可以找到指定的终端。

进一步的,所述终端将所述其他终端的设备对象写入路由表中,具体为:

若所述蓝牙通讯连接建立成功,则将对应的蓝牙设备ip从列表中移除,并将对应的终端的设备对象写入路由表中;

若所述蓝牙通讯连接建立失败,则获取所述列表中的下一个蓝牙设备ip地址。

由上述描述可知,通过创建用于存放待连接终端的列表,一旦成功连接即将终端移出列表,写入路由表,实现高效性、有条理性地控制终端之间的蓝牙通信连接关系和路由关系。

进一步的,所述终端将与其gattclient线程连接的其他终端的设备对象写入路由表中,之后,还包括为:

通讯连接的终端依据其蓝牙设备ip地址和终端序列号生成对应的哈希键值对,并将其发送至与其连接的其他终端。

由上述描述可知,以具备唯一标识作用的终端ip地址和序列号生成同样具备唯一标识作用的哈希键值对作为终端之间数据传输的身份标识和数据存储标识,能确保终端之间数据传输的准确性和高效性,;同时又能方便便捷性、准确性地提取对应终端的同步数据。

进一步的,所述通讯连接的终端依据其蓝牙设备ip地址和终端序列号生成对应哈希键值对,并将其发送至与其连接的其他终端,具体为:

第一终端依据自身ip地址和终端序列号生成哈希键值对x1;

第一终端发送哈希键值对x1至第二终端;

第二终端存储第一终端发送过来的哈希键值对x1至本地;

第二终端依据自身ip地址和终端序列号生成哈希键值对x2;

第二终端发送哈希键值对x2至第一终端;

第一终端存储第二终端发送过来的哈希键值对x2至本地;

第二终端发送哈希键值对x2至第三终端;

第三终端存储第二终端发送过来的哈希键值对x2至本地;

第三终端依据自身ip地址和终端序列号生成哈希键值对x3;

第三终端发送哈希键值对x3至第二终端;

第二终端存储第三终端发送过来的哈希键值对x3至本地。

由上述描述可知,在一具体实施方式中,三个终端通过上述过程实现各自身份标识的备案,以便后续数据交互过程的数据传输。

进一步的,还包括:

终端依据接收到的哈希键值对分别创建对应的文件目录;

终端通过回调gattserver线程的服务地址获取其他终端写入的数据,并依据写入的终端将所述数据存入对应的文件目录。

由上述描述可知,通过将从其他终端同步过来的数据统一存储在指定位置,方便在有需求时能快速且准确的调取,提高响应速度。

本发明提供的另一个技术方案为:

请参阅图3,一种基于蓝牙设备的蓝牙组网系统,包括至少两个的终端;

所述终端包括:

创建模块,用于终端分别创建gattclient线程、gattserver线程、消息队列线程和一路由表;

路由表创建模块,用于将与其gattclient线程连接的其他终端的设备对象写入路由表中,所述设备对象包括gattserver线程的服务地址;

数据接收模块,用于将所述其他终端发送过来的数据依序放入消息队列线程;

数据写入模块,用于依序从所述消息队列线程中读取出数据,并依据路由表中各设备对象的gattserver线程的服务地址,将所述数据分别写入所述各设备对象对应的终端。

从上述描述可知,本发明的有益效果在于:充分利用了转发器原理进行组网,在不用对终端的硬件结构做任何改进的情况下,以软件形式低成本、轻松地做到在无网络的情况下也能不受终端数量限制的进行自由的组网并进行数据互通。特别适用于实现多终端之间在无网络情况下进行数据、音频、视频的高效同步。因而,本发明的系统具有较高的实用性。

进一步的,所述路由表创建模块包括:

扫描单元,用于终端依据预设uuid扫描获取至少一个其他终端;

第一写入单元,用于将所述其他终端的蓝牙设备ip地址写入到对等网络节点的列表中;

第一连接单元,用于终端的gattclient线程遍历所述列表,依据列表中的蓝牙设备ip地址建立与所述其他终端的蓝牙通讯连接;

第二写入单元,用于终端将所述其他终端的设备对象写入路由表中,所述设备对象包括蓝牙广播id、蓝牙设备ip地址和gattserver线程的服务地址。

进一步的,所述终端还包括:

生成模块,用于通讯连接的终端依据其蓝牙设备ip地址和终端序列号生成对应的哈希键值对,并将其发送至与其连接的其他终端。

进一步的,所述终端还包括:

目录创建模块,用于依据接收到的哈希键值对分别创建对应的文件目录;

获取模块,用于通过回调gattserver线程的服务地址获取其他终端写入的数据,并依据写入的终端将所述数据存入对应的文件目录。

实施例一

针对背景技术中提出的现有的蓝牙组网为中心化思想,因而受限于单台终端能够支持的蓝牙连接数,从而存在无法实现多台终端(ios系统8台以上,安卓系统5台以上)之间基于蓝牙自组网进行数据传输同步的问题。

本实施例提供一种基于蓝牙设备的蓝牙组网方法,所涉及的终端为配备有4.0以上蓝牙设备的任意一种终端设备,如手机、录音机、mp3、mp4、平板、电脑等其他智能终端。

其技术构思为:

如果有台终端具备了数据转发的能力,那么该终端就能把接收到的数据传递给其它终端了。根据以上的设想,本实施例将所有均为蓝牙4.0为基础的终端从逻辑上都定义为转发器。每个转发器都具备了客户端和服务端,即蓝牙4.0技术领域下的gattclient服务和gattserver服务。通过转发器实现多台设备的数据传递与存储。

首先,通过实验来验证转发器的结论。在这里我们使用两台终端(假设为手机)进行试验,对应转发器a和转发器b。首先通过a的gattclient连接到b的gattserver;紧接着通过b的gattclient连接到a的gattserver。连接成功后,点击发送。实验结果是手机a发送数据到手机b,手机b又将数据发回给手机a,实现整条数据链的数据循环。

为确保转发器能支持多台以上终端的数据转发功能,我们通过了6台手机进行测试,实验结果也是能够实现整条数据链的数据循环。

经过以上实验验证,利用转发器的原理,可以解决ios设备和android设备以及其它设备的蓝牙连接数量受限的问题。

本实施例提供的方案和以往其它方案(即现有技术)不同的是,本方案基于转发器的原理,利用每台设备自身的消息路由分发消息来解决在蓝牙组网中的设备上限的问题,从而规避了设备中心化所带来的问题。

下面,请参阅图2,将详细具体的说明本实施例提供的基于蓝牙设备的蓝牙组网方法所包含的步骤:

s1:终端分别创建gattclient线程、gattserver线程、消息队列线程和一路由表。

具体而言,每个终端均通过各自的系统执行以下步骤:

1、利用自身的gatt端,即gattclient服务创建对应的gattclient线程;

2、利用自身的gattserver端,即gattserver服务创建对应的gattserver线程;

3、创建消息队列线程,并且不间断的执行中;用于消息的写入和取出;

4、创建一个路由表,用于实现路由管理。

上述步骤1-4的执行不分先后。

s2:终端将与其gattclient线程连接的其他终端的设备对象写入路由表中,所述设备对象包括gattserver线程的服务地址。

在一具体实施方式中,该步骤可以包括以下子步骤:

s21:终端依据预设uuid扫描获取至少一个其他终端;

具体的,在该步骤之前,还包括预设指定的uuid的步骤。可选的,该步骤包括:依据预设的uuid发布gap,即开启蓝牙扫描功能,进行蓝牙广播;扫描获取uuid一致的终端。优选的,蓝牙广播的数据包括uuid和address(蓝牙设备的服务地址)。当蓝牙设备开启gap广播后,在设备扫描过程中能优先找到发射gap广播的蓝牙设备,以实现快速、准确地获取指定的终端,从而提高指定终端之间蓝牙连接的效率。

s22:将所述其他终端的蓝牙设备ip地址写入到对等网络节点的列表中;

具体的,将终端每扫描到的一台符合系统预设的uuid的终端时,便会将其蓝牙设备ip地址添加到对等网络节点(简称peer)中,以高效获取待蓝牙连接的终端列表。

s23:终端的gattclient线程遍历所述列表,依据列表中的蓝牙设备ip地址建立与所述其他终端的蓝牙通讯连接;若所述蓝牙通讯连接建立成功,则执行s24。

具体的,当扫描到一台指定的终端,便会执行所述s23步骤,与遍历到的终端进行蓝牙连接,并在连接成功后及时将已连接的终端移出列表,避免对应同一终端重复进行连接,降低组网效率。而对于连接失败的终端,仍保留在列表中,在扫描到下一指定终端后将再次被遍历到,再次尝试连接,以尽可能高效地建立当前终端与其他所有指定终端之间的蓝牙连接关系。

s24:将连接成功的终端对应的蓝牙设备ip从列表中移除,并将其设备对象写入路由表中;所述设备对象包括蓝牙广播id、蓝牙设备ip地址和gattserver线程的服务地址。

对应本具体实施方式的一运用实例中,若所述蓝牙通讯连接建立失败,可执行s25:与当前遍历到的终端连接失败后,继续遍历列表,获取所述列表中的下一个蓝牙设备ip地址,进行蓝牙连接。

可选的,上述的具体实施方式还可以包括:

s26:通讯连接的终端依据其蓝牙设备ip地址和终端序列号生成对应的哈希键值对,并将其发送至与其连接的其他终端进行存储。

假设有需求基于蓝牙建立三台终端的自组网络,则该步骤可以通过以下子步骤实现:

第一终端依据自身ip地址和终端序列号生成哈希键值对x1;

第一终端发送哈希键值对x1至第二终端;

第二终端存储第一终端发送过来的哈希键值对x1至本地;

第二终端依据自身ip地址和终端序列号生成哈希键值对x2;

第二终端发送哈希键值对x2至第一终端;

第一终端存储第二终端发送过来的哈希键值对x2至本地;

第二终端发送哈希键值对x2至第三终端;

第三终端存储第二终端发送过来的哈希键值对x2至本地;

第三终端依据自身ip地址和终端序列号生成哈希键值对x3;

第三终端发送哈希键值对x3至第二终端;

第二终端存储第三终端发送过来的哈希键值对x3至本地。

若有需求加入其它终端,比如对应ios系统的8台以上终端之间的蓝牙自组网,对应安卓系统的5台以上终端的蓝牙自组网。则以此类推,其它终端均按照上述步骤组网。

通过上述步骤完成不限终端数量的蓝牙自组网后,将已经能实现自组网内终端之间的数据同步。下面,将以自组网内其中一台终端的数据同步操作为例展开进行详细的说明:

s3:终端将所述其他终端发送过来的数据依序放入消息队列线程。

具体的,假设其中一台终端的系统接收到用户输入的文本数据后(也可直接从终端系统中预存的数据进行同步),将文本数据以消息的形式放入自身的消息队列线程中。

s4:终端依序从所述消息队列线程中读取出数据,并依据路由表中各设备对象的gattserver线程的服务地址,将所述数据分别写入所述各设备对象对应的终端。

具体的,由于消息队列线程在不间断执行中,因此终端的路由器将不断地执行从消息队列中顺序读取消息数据;如果队列中存在消息数据,则立即遍历路由表中记录的终端,依据遍历到的终端对应的设备对象将消息数据写入该终端的系统中,从而实现基于路由表的数据分发。具体的写入操作是依据设备对象中记载的其终端的gattserver线程的服务地址(可供写入数据的服务地址),通过调用该服务地址,将消息数据写入。

对应上述步骤s2的子步骤s26,提供一具体实施方式:

上述数据同步操作中的s3之前,对应自组网内待接收上述终端发出的同步数据的其他终端,将包括:

其他的各个终端均依据各自接收到的哈希键值对分别创建对应的文件目录,用于存储对应终端同步过来的数据。以及

终端通过调用自身gattserver线程的服务地址,获取被写入的数据,并对应该数据的写入终端,将该数据写入到对应该写入终端的文件目录中存储,实现同步数据的合理归整,便于后续能快速获取所需数据。

实施例二

请参照图3,本实施例对应实施例一,提供一种基于蓝牙设备的蓝牙组网系统,包括至少两个的终端;

所述终端包括:

创建模块1,用于终端分别创建gattclient线程、gattserver线程、消息队列线程和一路由表;

路由表创建模块2,用于将与其gattclient线程连接的其他终端的设备对象写入路由表中,所述设备对象包括gattserver线程的服务地址;

数据接收模块3,用于将所述其他终端发送过来的数据依序放入消息队列线程;

数据写入模块4,用于依序从所述消息队列线程中读取出数据,并依据路由表中各设备对象的gattserver线程的服务地址,将所述数据分别写入所述各设备对象对应的终端。

在一具体实施方式中,所述路由表创建模块2包括:

扫描单元21,用于终端依据预设uuid扫描获取至少一个其他终端;

第一写入单元22,用于将所述其他终端的蓝牙设备ip地址写入到对等网络节点的列表中;

第一连接单元23,用于终端的gattclient线程遍历所述列表,依据列表中的蓝牙设备ip地址建立与所述其他终端的蓝牙通讯连接;

第二写入单元24,用于终端将所述其他终端的设备对象写入路由表中,所述设备对象包括蓝牙广播id、蓝牙设备ip地址和gattserver线程的服务地址。

具体的,所述第一连接单元,具体用于若所述蓝牙通讯连接建立成功,则将对应的蓝牙设备ip从列表中移除,并将对应的终端的设备对象写入路由表中;以及用于若所述蓝牙通讯连接建立失败,则获取所述列表中的下一个蓝牙设备ip地址。

进一步的,所述终端还包括:

生成模块5,用于通讯连接的终端依据其蓝牙设备ip地址和终端序列号生成对应的哈希键值对,并将其发送至与其连接的其他终端。

在一具体运用实例中,以三个终端之间交互哈希键值对的过程为例,详细说明终端的生成模块的具体功能:

第一终端的生成模块,具体用于依据自身ip地址和终端序列号生成哈希键值对x1;发送哈希键值对x1至第二终端;存储第二终端发送过来的哈希键值对x2至本地;

第二终端的生成模块,具体用于存储第一终端发送过来的哈希键值对x1至本地;以及依据自身ip地址和终端序列号生成哈希键值对x2;发送哈希键值对x2至第一终端;发送哈希键值对x2至第三终端;存储第三终端发送过来的哈希键值对x3至本地;

第三终端的生成模块,具体用于存储第二终端发送过来的哈希键值对x2至本地;依据自身ip地址和终端序列号生成哈希键值对x3;发送哈希键值对x3至第二终端。

进一步的,所述终端还包括:

目录创建模块6,用于依据接收到的哈希键值对分别创建对应的文件目录;

获取模块7,用于通过回调gattserver线程的服务地址获取其他终端写入的数据,并依据写入的终端将所述数据存入对应的文件目录。

综上所述,本发明提供的基于蓝牙设备的蓝牙组网方法及其系统,不仅能实现在无网络情况下,能通过自组网,在网内实现不受终端数量限制的进行终端之间的数据互通;并且能确保终端之间数据传输的高效性和准确性;进一步的,无需对终端关于硬件方面做任何改进,大大降低了实现成本,具备较高实用性。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1