本发明涉及蓝牙通信领域,尤其涉及一种基于uuid信息通道的蓝牙传输系统和蓝牙传输方法。
背景技术:
蓝牙是移动设备短距离近程通信的常用技术,但是通常蓝牙应用中存在以下几个问题:
1、需要配对才能进行通信:配对时间较长,而且一般需要手动配合配对(如输入密码或校验码等),如果双方蓝牙芯片支持的服务不匹配的话,还有一定的概率产生配对失败的情况,因此在蓝牙通信前还要等待配对结果是不仅较慢而且麻烦,甚至可能配对失败的事情。
2、只能进行一对一通信,不能进行一对多通信。
在一些应用场景中,用户之间的身份是相对可信的,例如在车内,车辆中控系统与司机或乘客手机实现快速的一对多通信,以传递导航、行车或其它社交、娱乐信息。或者在教室中,学生pad与教学电脑之间实现快速一对多通信,传递抢答、互动等教学信息。在这类该场景下有跳过蓝牙配对过程,实现快速一对多通信的需求。
在蓝牙通信中,每一个蓝牙设备能提供的服务用"全球唯一标识符"(uuid)来表示。例如,蓝牙串口服务的uuid为00001101-0000-1000-8000-00805f9b34fb;蓝牙拨号网络服务的uuid为00001103-0000-1000-8000-00805f9b34fb。uuid一般为“8-4-4-4-12”字符的形式,每个字符为十六进制表示,范围从0~f,占4比特位,因此一个uuid理论上最多能承载16字节信息。
蓝牙通信时,蓝牙设备通过蓝牙搜索协议bsdp(bluetoothservicediscoveryprotocol)搜索周边存在的蓝牙节点(用蓝牙mac地址标识)和每个节点能提供的服务(即uuid列表)。因此蓝牙节点的蓝牙mac地址和uuid信息,可由蓝牙的通用的bsdp协议得到。
蓝牙uuid除了提供公用服务外,也允许设置私有的uuid,以提供定制化的服务。
因此,本领域技术人员致力于开发一种蓝牙传输系统和蓝牙传输方法,利用uuid通道在通信双方身份相对可信的场合下,实现免配对的一对多通信,快速传递数据量不大的数据。
技术实现要素:
本发明的目的是提供一种基于uuid信息通道的蓝牙传输系统和蓝牙传输方法,利用uuid消息通道在通信双方身份相对可信的场合下,实现免配对的一对多通信,快速传递数据量不大的数据。
为实现上述目的,本发明提供了以下技术方案:
一种基于uuid信息通道的蓝牙传输系统,应用于一蓝牙主机和至少一个蓝牙从机的免配对通信,所述蓝牙主机用于:
生成状态uuid,用于标识提供免配对一对多通信服务;
生成消息uuid,所述消息uuid封装有待传送的数据;
消除消息uuid,所述消息uuid经周期t后自动消除;
扫描蓝牙从机的消息uuid,接收蓝牙从机向蓝牙主机发送的数据;
所述蓝牙从机用于:
扫描蓝牙主机的状态uuid,用于识别并接受免配对一对多通信服务;
扫描蓝牙主机的消息uuid,接收蓝牙主机向蓝牙从机发送的数据;
生成消息uuid,所述消息uuid封装有待传送的数据;
消除消息uuid,所述消息uuid经周期t后自动消除。
进一步的,所述状态uuid包括:
静态区,用于标识免配对一对多通信服务;
和动态区,包括所述蓝牙主机的单播标志和广播标志,用于唯一性的标识所述蓝牙主机及信息uuid的类别;
所述消息uuid包括:
标志位,用于设置蓝牙主机的单播标志或广播标志;
流水号,用于标志消息uuid的顺序;
和数据区,用于存在待发送的数据;待发送的数据依流水号顺序分割到多个消息uuid中。
进一步的,所述状态uuid为“8-4-4-4-12”十六进制字符形式,所述动态区为所述状态uuid的第2字符段和第3字符段,所述静态区为所述状态uuid的其他字符段。
进一步的,所述广播标志和单播标志是根据主机的唯一性长信息,通过hash算法生成。
进一步的,所述唯一性长信息包括mac地址、imei中的至少一个。
进一步的,所述消息uuid包括:
广播消息uuid,所述广播消息uuid的标志位设置广播标志;
和单播消息uuid,所述单播消息uuid的标志位设置单播标志,在所述流水号区和数据区之间还设有mac地址区,用于标志数据传送目标的mac地址。
进一步的,所述mac地址区为12个十六进制字符。
本发明还提供了以下技术方案:
一种基于uuid信息通道的蓝牙传输方法,包括
(1)一对多通信服务确认:主机生成状态uuid,提供唯一性的广播标志和单播标志用于标识提供一对多通信服务,从机读取状态uuid,获取主机的广播标志和单播标志,接受一对多通信服务;
(2)主机的广播通信服务:主机生成广播消息uuid,广播消息uuid的帧头包括广播标志,从机读取广播消息uuid,识别广播标志,读取广播消息uuid中的数据;
(3)主机的单播服务:主机生成单播消息uuid,单播消息uuid的帧头包括单播标志和目标从机的mac地址,从机读取单播消息uuid,并识别单播标志和mac地址,读取mac地址与本机的mac地址相同的单播消息uuid中的数据;
(4)从机的单播服务:从机生成单播消息uuid,单播消息uuid的帧头包括目标主机的单播标志和目标主机的mac地址,主机读取单播消息uuid,并识别单播标志和mac地址,读取单播标志与本机的单播标志相同且mac地址与本机的mac地址相同的单播消息uuid中的数据;
(5)在工作状态,保持状态uuid不变;
(6)消息uuid的生成和消除:消息uuid包括广播消息uuid和单播消息uuid,消息uuid在生成时通过流水号标志其发送顺序,消息uuid在生成后经过t时间后自动消除。
本发明的基于uuid信息通道的蓝牙传输系统和蓝牙传输方法,利用蓝牙uuid信息以公告方式来进行数据传递,实现免配对快速的蓝牙一对多通信服务,适合在通信双方身份相对可信的场合下,免配对地快速传递数据量不大的数据,本发明对蓝牙的应用具有突破性的创新,具有实质性特点和显著进步。
附图说明
图1是本发明的状态uuid分区图;
图2是本发明的广播消息uuid分区图;
图3是本发明的单播消息uuid分区图;
图4是本发明的服务流程图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
现结合附图和具体实施方式对本发明进一步说明。
本发明公开了一种基于uuid信息通道的蓝牙传输系统和蓝牙传输方法,在得到蓝牙节点的mac地址和uuid信息的基础上,不进行配对,而是用mac地址标识通信身份,组合特殊的uuid信息来直接传递数据,以实现免配对的快速“一主”对“多从”的一对多通信。
具体的,如图1、图2和图3所示,定义了两种类别的私有uuid,一种是状态uuid,一种是消息uuid。
状态uuid,用于标识该蓝牙主机(以下简称主机)目前提供蓝牙免配对一对多通信服务,并提供用于识别该主机的唯一码,该唯一码包括两部分:广播标志和单播标志,用于标志提供的信息uuid的类别。
如图1所示,状态uuid分为静态区和动态区。可采用一定的约定规则划分静态区和动态区,例如,取“8-4-4-4-12”十六进制字符形式的第2和第3个字符段为动态区,即8个十六进制字符,其它为静态区。
静态区用于表明当前主机提供的是免配对快速一对多传输服务,提供的静态标识要求能够保证与现有协议的所有uuid均不同。不支持免配对一对多通信服务的传统蓝牙节点,由于无法识别这个uuid,因此也无法与本主机连接,这样本服务不会受其它普通蓝牙节点的干扰。对于支持免配对一对多通信服务的蓝牙从机(以下简称从机),当识别到主机的状态uuid后,即可得知可与该主机进行免配对通信。
动态区对于主机用于标识与当前主机一对多通信的广播标志和单播标志。动态区分为两部分,在本示例性说明中,取“8-4-4-4-12”十六进制字符形式的第2字符段用于设置广播标志,第3字符段用于设置单播标志,即广播标志和单播标志各占用4个字节,在本发明中,为表述方便定义每个字节为四位,为一个十六进制字符。每一个主机的广播标志、单播标志与其它主机不同,防止同一区域出现两个主机时,消息混乱。保证不同主机的标志位不同的手段有很多公知方法,例如将主机的mac地址、imei号、sim卡号等唯一性长标识取hash计算得到唯一性的短标识,作为标志位等,在本示例中,假定生成的广播标志为7e7d,单播标志为7c7b。
消息uuid根据发送类别,可分为广播消息uuid和单播消息uuid,广播消息uuid分为标志区、流水号区和数据区,单播消息uuid分为标志区、流水号区、mac地址区和数据区。可按既定约定划分这几个区,如图2和图3所示,给出了一具体实施例,约定标志区为4个字节、流水号区为4个十六进制字符、mac地址区为12个十六进制字符。
根据消息uuid的发送类别,广播消息uuid的标志区复制状态uuid的广播标志表示该uuid用于传输广播数据,单播消息uuid的标志区复制状态uuid的单播标志表示该uuid用于传输单播数据,如在本示例中,标志区为7e7d表示该消息uuid用于传输广播数据,标志区为7c7b表示该uuid用于传输单播数据,流水号区用于表示同一消息uuid序列中的消息uuid的顺序号,其中0001表示信息uuid序列中的第一帧信息uuid,数据区用于传输信息数据。当标志为单播数据时,mac地址区用于存放单播通信目标的mac地址。
如图4所示,本发明的基于uuid信息通道的蓝牙传输方法,其过程包括:“免配对快速一对多传输服务”确认和信息传递。
步骤s1,“免配对快速一对多传输服务”确认:
当主机要提供“免配对快速一对多传输服务”时,主机生成状态uuid,用于向周边的蓝牙节点表示当前主机提供的是“非配对一对多通信服务”。根据主机的mac地址、imei等唯一性长信息,通过hash算法生成4字节的广播标志(假设为7e7d)和4字节单播标志(假设为7c7b)。假设,主机生成的状态uuid为aaaaaaaa-7e7d-7c7b-cccc-dddddddddddd。状态uuid在通信过程中,始终存在,并且在运行过程中不会改变。
从机用bsdp协议扫描周边蓝牙节点,当读取到主机状态uuid后,提取出uuid中的动态区数据,得到广播标志7e7d,和单播标志7c7b,接受免配对快速一对多传输服务。
经过上述步骤,主机和从机实现了“免配对快速一对多传输服务”的确认。
“免配对快速一对多传输服务”采用一种白板告知的方式进行通信,主机和从机所要传送的数据,通过uuid通道显示在自身的uuid列表中,并定时更新,对方设备通过读取目标设备的uuid信息,以获得目标是被所传送的数据。
经过服务确认后,主机和从机可以进行信息传递,主机和从机可采取以下方式进行信息传递。
步骤s2,主机向从机传递消息:
(1)主机广播传递消息:
主机生成由广播标志开头的广播消息uuid,消息uuid序列包括至少一个消息uuid,假设,主机生成的消息uuid为7e7d0001-aaaa-bbbb-cccc-dddddddddddd,表示该消息uuid用于传输广播数据,流水号为0001表示为该消息uuid序列中的第一个消息uuid,假设蓝牙节点最多可运行n个uuid,则可在状态uuid后最多可挂n-1个消息uuid。
从机用7e7d识别广播消息uuid,并提取数据区和流水号,依据流水号拼接所有数据区,得到主机传递的消息。
(2)主机针对某一从机单独传递消息:
主机生成由单播标志开头的单播消息uuid,该消息uuid设置单播标志7c7b和目标从机的mac地址。
从机读取主机的消息uuid,用7c7b识别单播消息uuid,并读取数据区的数据、流水号和mac地址,取mac地址为自身mac地址的消息,依据流水号拼接所有数据区,得到传递的数据,从而实现单播传递消息。
步骤s3,从机对主机单独传递消息:
从机生成单播消息uuid,此时,该消息uuid序列的标志位为7c7b,表示该uuid用于传输单播数据,mac地址为主机mac地址,表示数据的传输方向是从机向主机传输。
为实现不断的信息传递,已发出的消息uuid需要进行消除。
步骤s4,消息uuid的消除:
设定一个消息uuid出现的时间周期为x秒,则在x秒后,认为消息已被从机接收,因此在x秒后,消除该消息uuid,以空出uuid空间用于新的消息uuid生成,从而实现不断的信息传递。
本发明的基于uuid信息通道的蓝牙传输系统和蓝牙传输方法,利用蓝牙uuid信息以公告方式来进行数据传递,实现免配对快速的蓝牙一对多通信,适合在通信双方身份相对可信的场合下,免配对地快速传递数据量不大的数据,本发明对蓝牙的应用具有突破性的创新,具有实质性特点和显著进步。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。