CN105071839A - 蓝牙设备通信方法及装置 - Google Patents

蓝牙设备通信方法及装置 Download PDF

Info

Publication number
CN105071839A
CN105071839A CN201510504417.6A CN201510504417A CN105071839A CN 105071839 A CN105071839 A CN 105071839A CN 201510504417 A CN201510504417 A CN 201510504417A CN 105071839 A CN105071839 A CN 105071839A
Authority
CN
China
Prior art keywords
request
queue
communication request
bluetooth equipment
equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510504417.6A
Other languages
English (en)
Other versions
CN105071839B (zh
Inventor
杨勇
曹立俊
王洪珍
童德星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guiyang Longmaster Information and Technology Co ltd
Original Assignee
Guiyang Longmaster Information and Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guiyang Longmaster Information and Technology Co ltd filed Critical Guiyang Longmaster Information and Technology Co ltd
Priority to CN201510504417.6A priority Critical patent/CN105071839B/zh
Publication of CN105071839A publication Critical patent/CN105071839A/zh
Application granted granted Critical
Publication of CN105071839B publication Critical patent/CN105071839B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开一种蓝牙设备通信方法及装置,上述方法包括:当本端的蓝牙设备发起通信请求时,将通信请求与当前队列中的请求进行对比,确定队列中是否存在与通信请求相同的请求;如果队列中不存在与通信请求相同的请求,则将通信请求***队列中等待执行;判断当前是否存在未完成的请求,在不存在未完成的请求时,从队列的栈底将待执行请求取出并执行,启动线程开始与对端的蓝牙设备通信。根据本发明提供的技术方案,有效地解决了因发起重复请求造成的设备回调多次响应给调用者,造成调用者无法区分是哪一次请求结果的问题。还解决了一个请求还未完成就发起另一个请求导致设备测量失败问题。

Description

蓝牙设备通信方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及一种蓝牙设备通信方法及装置。
背景技术
安卓(Android)从版本4.3(API18)开始支持蓝牙低能耗(BLE)技术,并提供了用于应用程序查找设备、查询服务及和读/写特的接口,使用BLE显著减少了在设备间连接和传输数据的功耗,这使得Android应用程序与具有低功耗的要求BLE设备进行通信,如近距离传感器、心脏速率显示器、健身设备等等。
BLE设备间是基于GATT协议来进行通信的,通信中涉及到Service、Characteristic及Descriptor,每个BLE设备包含多个Service,每个Service包含多个Characteristic,每个Characteristic又包含多个Descriptor。当扫描到需要连接的BLE设备后,需要通过唯一标识符(UniversallyUniqueIdentifier,UUID)确认唯一的需要连接的Service,在通过UUID来获取读取、写入、通知的Characteristic,获取到所需的三个Characteristic后,需要从通知Characteristic中通过UUID获取通知的Descriptor,告诉设备在有数据变化后需要通知应用程序。
以上对BLE设备(下文中称为蓝牙设备)之间通信的描述中所有数据的传输全是通过广播完成的,Android的API中只记载了简单的使用过程,而对重复请求、一个请求没有处理完成就发起另一个请求、请求超时等都没有提供解决方案,所以按照Android提供的API来进行开发时,在一些由于代码问题或者其它异常情况时显得捉襟见肘。
发明内容
本发明的主要目的在于公开了一种蓝牙设备通信方法及装置,以至少解决相关技术中蓝牙设备之间通信,存在重复请求、一个请求没有处理完成就发起另一个请求的问题。
根据本发明的一个方面,提供了一种蓝牙设备通信方法。
根据本发明的蓝牙设备通信方法包括:当本端的蓝牙设备发起通信请求时,将上述通信请求与当前队列中的请求进行对比,确定上述队列中是否存在与上述通信请求相同的请求;如果上述队列中不存在与上述通信请求相同的请求,则将上述通信请求***上述队列中等待执行;判断当前是否存在未完成的请求,在不存在未完成的请求时,从上述队列的栈底将待执行请求取出并执行,启动线程开始与对端的蓝牙设备通信。
根据本发明的另一方面,提供了一种蓝牙设备通信装置。
根据本发明的蓝牙设备通信装置包括:对比模块,用于当本端的蓝牙设备发起通信请求时,将上述通信请求与当前队列中的请求进行对比,确定上述队列中是否存在与上述通信请求相同的请求;***模块,用于在上述队列中不存在与上述通信请求相同的请求时,将上述通信请求***上述队列中等待执行;第一处理模块,用于判断当前是否存在未完成的请求,在不存在未完成的请求时,从上述队列的栈底将待执行请求取出并执行,启动线程开始与对端的蓝牙设备通信。
通过本发明,采用本发明提供的技术方案,有效地解决了因发起重复请求造成的设备回调多次响应给调用者,造成调用者无法区分是哪一次请求结果的问题。此外,也解决了一个请求还未完成就发起另一个请求导致设备测量失败问题。
附图说明
图1是根据本发明实施例的蓝牙设备通信方法的流程图;
图2是根据本发明优选实施例的蓝牙设备通信方法的流程图;
图3是根据本发明实施例的蓝牙设备通信装置的结构框图;以及
图4是根据本发明优选实施例的蓝牙设备通信装置的结构框图。
具体实施方式
下面结合说明书附图对本发明的具体实现方式做一详细描述。
图1是根据本发明实施例的蓝牙设备通信方法的流程图。如图1所示,该蓝牙设备通信方法包括:
步骤S101:当本端的蓝牙设备发起通信请求时,将上述通信请求与当前队列中的请求进行对比,确定上述队列中是否存在与上述通信请求相同的请求;
步骤S103:如果上述队列中不存在与上述通信请求相同的请求,则将上述通信请求***上述队列中等待执行;
步骤S105:判断当前是否存在未完成的请求,在不存在未完成的请求时,从上述队列的栈底将待执行请求取出并执行,启动线程开始与对端的蓝牙设备通信。
采用图1所示的方法,有效地解决了因发起重复请求造成的设备回调多次响应给调用者,造成调用者无法区分是哪一次请求结果的问题。此外,也解决了一个请求还未完成就发起另一个请求导致设备测量失败问题。
其中,上述蓝牙设备可以为近距离传感器、心脏速率显示器、健身设备等。
优选地,在步骤S105中,启动线程开始与对端的蓝牙设备通信时,还包括以下处理:启动定时器;在上述定时器超时前,判断是否收到上述对端的蓝牙设备返回的数据;在接收到上述响应时,将上述待执行请求从上述队列中移除,重置上述定时器,回调上述对端的蓝牙设备返回的数据。
优选地,在启动上述定时器之后,还可以包括以下处理:通过检测确定上述定时器超时;将上述待执行请求从上述队列中移除,并回调请求超时。
优选地,上述蓝牙设备可以为以下至少之一:近距离传感器、心脏速率显示器、健身设备。
在优选实施过程中,当本端的蓝牙设备的应用程序扫描到蓝牙设备后开始发起通信请求,当接收到一个请求时管理器将它与现有请求队列中的请求进行对比,如果队列中存在同一个未完成的请求则不将请求放入队列中,否则将请求加入队列中等待执行。在管理器中接收到第一个请求时启动一个线程,用于执行该请求,在管理器中设置一个定时器(Timer)用于定时检查请求的执行情况,如果达到规定的超时前应用接收到设备回应则将请求从队列中移除并且重置Timer,然后将数据回调给调用者;如果达到设置的超时时间仍没有收到设备回应,则将请求从队列中移除并回调请求超时给调用者。
以下结合图2进一步描述上述优选实施方式。
图2是根据本发明优选实施例的蓝牙设备通信方法的流程图。如图2所示,该蓝牙设备通信方法包括:
步骤S201:管理器收到通信请求。
步骤S203:管理器将该通信请求与当前队列中的请求进行对比,确定上述队列中是否存在与上述通信请求相同的请求。如果是,执行步骤S207,否则,执行步骤S205。
步骤S205:管理器将该通信请求***上述队列中等待执行。
步骤S207:管理器将该通信请求丢弃。
步骤S209:管理器判断当前是否有未完成的请求。如果是,程序返回,如果否,则执行步骤S211。
步骤S211:管理器从队列中取出栈底的请求。
步骤S213:管理器启动线程执行通信请求。
步骤S215:启动定时器。
步骤S217:本端的蓝牙设备与对端的蓝牙设备进行通信。
步骤S219:接收对端的蓝牙设备返回的数据。
步骤S221:管理器从队列中移除该通信请求,并将数据回调给调用者。
步骤S223:每个预定时间检测定时器是否超时。
步骤S225:判断定时器计时是否达到最大限制时间。如果否,返回执行步骤S223,如果是,执行步骤S227。
步骤S227:管理器从队列中移除该通信请求。
步骤S229:管理器回调请求超时给调用者。
图3是根据本发明实施例的蓝牙设备通信装置的结构框图。如图3所示,该蓝牙设备通信装置包括:对比模块30,用于当本端的蓝牙设备发起通信请求时,将上述通信请求与当前队列中的请求进行对比,确定上述队列中是否存在与上述通信请求相同的请求;***模块32,用于在上述队列中不存在与上述通信请求相同的请求时,将上述通信请求***上述队列中等待执行;第一处理模块34,用于判断当前是否存在未完成的请求,在不存在未完成的请求时,从上述队列的栈底将待执行请求取出并执行,启动线程开始与对端的蓝牙设备通信。
采用上述蓝牙设备通信装置,有效地解决了因发起重复请求造成的设备回调多次响应给调用者,造成调用者无法区分是哪一次请求结果的问题。此外,也解决了一个请求还未完成就发起另一个请求导致设备测量失败问题。
其中,上述蓝牙设备可以为近距离传感器、心脏速率显示器、健身设备等。
优选地,如图4所示,上述装置还可以包括:启动模块36,用于启动定时器;判断模块38,用于在上述定时器超时前,判断是否收到上述对端的蓝牙设备返回的数据;第二处理模块40,用于在接收到上述响应时,将上述待执行请求从上述队列中移除,重置上述定时器,回调上述对端的蓝牙设备返回的数据。
优选地,如图4所示,上述装置还可以包括:检测模块42,与所述启动模块36相连接,用于通过检测确定上述定时器是否超时;第三处理模块44,用于在上述定时器超时时,将上述待执行请求从上述队列中移除,并回调请求超时。
综上所述,借助本发明提供的上述实施例,有效地解决了因发起重复请求造成的设备回调多次响应给调用者,造成调用者无法区分是哪一次请求结果的问题。解决了一个请求还未完成就发起另一个请求导致设备测量失败问题。同时能够有效地控制每个请求的超时处理,并及时告诉用户设备请求超时。因此在蓝牙连接管理过程中,通过多线程和队列的协同工作来保证请求的唯一性、有序性及超时反馈。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (8)

1.一种蓝牙设备通信方法,其特征在于,包括:
当本端的蓝牙设备发起通信请求时,将所述通信请求与当前队列中的请求进行对比,确定所述队列中是否存在与所述通信请求相同的请求;
如果所述队列中不存在与所述通信请求相同的请求,则将所述通信请求***所述队列中等待执行;
判断当前是否存在未完成的请求,在不存在未完成的请求时,从所述队列的栈底将待执行请求取出并执行,启动线程开始与对端的蓝牙设备通信。
2.根据权利要求1所述的方法,其特征在于,在启动线程开始与对端的蓝牙设备通信时,还包括:
启动定时器;
在所述定时器超时前,判断是否收到所述对端的蓝牙设备返回的数据;
在接收到所述响应时,将所述待执行请求从所述队列中移除,重置所述定时器,回调所述对端的蓝牙设备返回的数据。
3.根据权利要求2所述的方法,其特征在于,在启动所述定时器之后,还包括:
通过检测确定所述定时器超时;
将所述待执行请求从所述队列中移除,并回调请求超时。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述蓝牙设备为以下至少之一:近距离传感器、心脏速率显示器、健身设备。
5.一种蓝牙设备通信装置,其特征在于,包括:
对比模块,用于当本端的蓝牙设备发起通信请求时,将所述通信请求与当前队列中的请求进行对比,确定所述队列中是否存在与所述通信请求相同的请求;
***模块,用于在所述队列中不存在与所述通信请求相同的请求时,将所述通信请求***所述队列中等待执行;
第一处理模块,用于判断当前是否存在未完成的请求,在不存在未完成的请求时,从所述队列的栈底将待执行请求取出并执行,启动线程开始与对端的蓝牙设备通信。
6.根据权利要求5所述的装置,其特征在于,还包括:
启动模块,用于启动定时器;
判断模块,用于在所述定时器超时前,判断是否收到所述对端的蓝牙设备返回的数据;
第二处理模块,用于在接收到所述响应时,将所述待执行请求从所述队列中移除,重置所述定时器,回调所述对端的蓝牙设备返回的数据。
7.根据权利要求6所述的装置,其特征在于,还包括:
检测模块,用于通过检测确定所述定时器是否超时;
第三处理模块,用于在所述定时器超时时,将所述待执行请求从所述队列中移除,并回调请求超时。
8.根据权利要求5至7中任一项所述的装置,其特征在于,所述蓝牙设备为以下至少之一:近距离传感器、心脏速率显示器、健身设备。
CN201510504417.6A 2015-08-17 2015-08-17 蓝牙设备通信方法及装置 Active CN105071839B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510504417.6A CN105071839B (zh) 2015-08-17 2015-08-17 蓝牙设备通信方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510504417.6A CN105071839B (zh) 2015-08-17 2015-08-17 蓝牙设备通信方法及装置

Publications (2)

Publication Number Publication Date
CN105071839A true CN105071839A (zh) 2015-11-18
CN105071839B CN105071839B (zh) 2018-02-23

Family

ID=54501139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510504417.6A Active CN105071839B (zh) 2015-08-17 2015-08-17 蓝牙设备通信方法及装置

Country Status (1)

Country Link
CN (1) CN105071839B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108811185A (zh) * 2018-06-08 2018-11-13 东华大学 一种基于ble的多客户端与单一外设节点会话保持方法
CN111131076A (zh) * 2019-12-09 2020-05-08 深圳震有科技股份有限公司 基于消息队列的多用途数据接收方法及***、计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571278B1 (en) * 1998-10-22 2003-05-27 International Business Machines Corporation Computer data sharing system and method for maintaining replica consistency
CN101249308A (zh) * 2006-11-09 2008-08-27 索尼电脑娱乐公司 信息通信***、信息处理装置及信息通信方法
CN104184832A (zh) * 2014-09-10 2014-12-03 北京国双科技有限公司 网络应用中的数据提交方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571278B1 (en) * 1998-10-22 2003-05-27 International Business Machines Corporation Computer data sharing system and method for maintaining replica consistency
CN101249308A (zh) * 2006-11-09 2008-08-27 索尼电脑娱乐公司 信息通信***、信息处理装置及信息通信方法
CN104184832A (zh) * 2014-09-10 2014-12-03 北京国双科技有限公司 网络应用中的数据提交方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108811185A (zh) * 2018-06-08 2018-11-13 东华大学 一种基于ble的多客户端与单一外设节点会话保持方法
CN108811185B (zh) * 2018-06-08 2021-10-26 东华大学 一种基于ble的多客户端与单一外设节点会话保持方法
CN111131076A (zh) * 2019-12-09 2020-05-08 深圳震有科技股份有限公司 基于消息队列的多用途数据接收方法及***、计算机设备
CN111131076B (zh) * 2019-12-09 2023-02-03 深圳震有科技股份有限公司 基于消息队列的多用途数据接收方法及***、计算机设备

Also Published As

Publication number Publication date
CN105071839B (zh) 2018-02-23

Similar Documents

Publication Publication Date Title
US9900919B1 (en) Adaptive beacon rate system
US20180173484A1 (en) Method and system for displaying wearable device display information
US8407530B2 (en) Server reachability detection
TWI540922B (zh) 管理行動裝置之電力消耗
US9603086B2 (en) Smart management of background network connections based on historical data
CN108093451B (zh) 随机接入的控制方法、装置及存储介质和移动终端
EP3531676A1 (en) Task processing apparatus, intelligent device, task processing method, and baseband processor
CN105071839A (zh) 蓝牙设备通信方法及装置
CN106488539A (zh) 终端中WiFi资源的处理方法和***
US20130145030A1 (en) Control device, terminal apparatus, and communication system
WO2018000570A1 (zh) 一种蓝牙配对的方法、装置及***
CN107547468B (zh) 网络协议切换装置、方法及终端
EP3174244B1 (en) Video communication ending method and apparatus, computer program and recording medium
JP2017508391A (ja) 異なる通信技術を用いるネットワークで送受信されるデータ及びイベントギャップの整合方法
CN104572105B (zh) 数据更新方法及装置
WO2017076045A1 (zh) 相机模组故障检测方法及装置
CN105100125B (zh) 一种虚拟桌面的休眠控制方法、装置及***
CN104184730A (zh) 访问处理方法和装置、电子设备
US9455952B2 (en) Method for setting functional module name of mobile terminal, and mobile terminal
KR20160131070A (ko) HotKnot에 기반하는 근접 감지 방법, 장치 및 터치스크린 단말기
EP2524275B1 (en) System and method of tuning a dynamic clock and voltage switching algorithm based on workload requests
CN105824622A (zh) 数据处理方法及电子设备
CN108347521A (zh) 一种数据备份方法及装置
US9774753B2 (en) Image forming apparatus, control method therefor, and storage medium
BR112016028222B1 (pt) Dispositivo de comunicação móvel e método para comutar um modo de protocolo de transmissão de um cartão de circuito integrado universal

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant