CN105071839A - 蓝牙设备通信方法及装置 - Google Patents
蓝牙设备通信方法及装置 Download PDFInfo
- 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
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中任一项所述的装置,其特征在于,所述蓝牙设备为以下至少之一:近距离传感器、心脏速率显示器、健身设备。
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)
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)
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 | 北京国双科技有限公司 | 网络应用中的数据提交方法及装置 |
-
2015
- 2015-08-17 CN CN201510504417.6A patent/CN105071839B/zh active Active
Patent Citations (3)
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)
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 |