CN106686535B - 一种在iOS***上实现低功耗蓝牙通信的方法及装置 - Google Patents

一种在iOS***上实现低功耗蓝牙通信的方法及装置 Download PDF

Info

Publication number
CN106686535B
CN106686535B CN201710049763.9A CN201710049763A CN106686535B CN 106686535 B CN106686535 B CN 106686535B CN 201710049763 A CN201710049763 A CN 201710049763A CN 106686535 B CN106686535 B CN 106686535B
Authority
CN
China
Prior art keywords
bluetooth
module
driver
device object
unique identifier
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.)
Active
Application number
CN201710049763.9A
Other languages
English (en)
Other versions
CN106686535A (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.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies 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 Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201710049763.9A priority Critical patent/CN106686535B/zh
Publication of CN106686535A publication Critical patent/CN106686535A/zh
Application granted granted Critical
Publication of CN106686535B publication Critical patent/CN106686535B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup
    • H04W76/14Direct-mode setup
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)

Abstract

本发明公开了一种在iOS***上实现低功耗蓝牙通信的方法及装置,属于通信领域。所述方法包括:驱动程序扫描周边设备,获取周边设备对象列表并根据目标蓝牙设备的预设唯一标识符,从周边设备对象列表中获取与目标蓝牙设备对应的BLE设备对象;驱动程序将移动终端与BLE设备对象对应的目标蓝牙设备进行匹配,若匹配失败报错,否则从iOS***中获取蓝牙3.0设备对象列表,并根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象,如果获取失败报错,否则驱动程序初始化蓝牙3.0设备对象的通信通道,进行数据通信。采用本发明的技术方案,将低功耗蓝牙和蓝牙3.0的优点结合在一起,既保证BLE低功耗维持设备待机时间,又保证通信速度。

Description

一种在iOS***上实现低功耗蓝牙通信的方法及装置
技术领域
本发明涉及通信领域,尤其涉及一种在iOS***上实现低功耗蓝牙通信的方法及装置。
背景技术
目前全球有超过一亿种的设备支持蓝牙技术,蓝牙无线传输技术建立了优化、易于设定以及广泛兼容的标准。其中,低功耗蓝牙(BLE)拥有极低的运行和待机功耗,且安全性、可靠性极高,但是传输速率较低,支持1Mbps数据传输率下的超短数据包;蓝牙3.0传输率高,数据传输率大约为24Mbps,可以轻松用于录像机至高清电视、PC至PMP、UMPC至打印机之间的资料传输,但高速传送大量数据会消耗更多能量。
在现有技术中,没有一款蓝牙既能拥有极低的运行和待机功耗,又有极高的数据传输率,且在实际运用中,既无法使用单一的蓝牙3.0打开通信通道完成数据通信,也无法使用单一的BLE广播打开特征通道实现数据通信。
发明内容
本发明的目的是为了解决现有技术中存在的问题,提供了一种在iOS***上实现低功耗蓝牙通信的方法及装置。
一方面,本发明提供了一种在iOS***上实现低功耗蓝牙通信的方法,包括:
步骤S1:驱动程序扫描周边设备,获取周边设备对象列表;
步骤S2:驱动程序根据目标蓝牙设备的预设唯一标识符,从周边设备对象列表中获取与目标蓝牙设备对应的BLE设备对象;
步骤S3:驱动程序将移动终端与BLE设备对象对应的目标蓝牙设备进行匹配,如果匹配成功,则执行步骤S4,否则报错;
步骤S4:驱动程序从iOS***中获取蓝牙3.0设备对象列表,并根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象,如果获取成功,则执行步骤S5,否则报错;
步骤S5:驱动程序初始化蓝牙3.0设备对象的通信通道,进行数据通信。
可选地,在步骤S1之前还包括驱动程序初始化中心设备对象,具体为:当驱动程序通过第一驱动接口获取到来自应用程序的初始化请求后,驱动程序初始化中心设备对象。
在本实施例中,驱动程序初始化中心设备对象之前还包括:驱动程序创建中心设备对象,并且设置中心设备对象的委派对象及串口队列。
具体地,步骤S1中驱动程序扫描周边设备具体为:驱动程序通过中心设备对象扫描周边设备。
可选地,步骤S1还包括:保存周边设备对象列表,并向应用程序返回周边设备对象列表里的周边设备对象的唯一标识符。
具体地,步骤S1还包括:驱动程序获取周边设备广播信息;步骤S1具体为:当驱动程序通过第二驱动接口获取到来自应用程序的获取周边设备对象列表和获取周边设备广播信息的请求后,驱动程序通过中心设备对象调用iOS***的扫描周边设备的方法,通过第二委派接口获得周边设备广播信息和周边设备对象列表后,保存周边设备对象列表,并向应用程序返回周边设备对象的唯一标识符;
可选地,步骤S1之前还包括:驱动程序通过第一委派接口获取中心设备对象的蓝牙状态;
当驱动程序获取中心设备对象的蓝牙状态之后:若驱动程序获得中心设备对象的蓝牙正常工作的状态,则扫描周边设备;若驱动程序获得中心设备对象的蓝牙未打开的状态,则向应用程序返回错误信息;若驱动程序获得中心设备对象的异常状态或不支持连接的状态,则向应用程序返回蓝牙异常的信息。
具体地,步骤S2具体为:当驱动程序获取到来自应用程序的包括目标蓝牙设备的预设唯一标识符的连接设备请求后,驱动程序根据目标蓝牙设备的预设唯一标识符,从扫描到的周边设备列表中获取与目标蓝牙设备对应的BLE设备对象。
更具体地,步骤S2具体为:当驱动程序通过第三驱动接口获取到来自应用程序的目标蓝牙设备的预设唯一标识符后,驱动程序根据目标蓝牙设备的预设唯一标识符在周边设备对象列表中查找是否存在与目标蓝牙设备的预设唯一标识符对应的周边设备对象,如果查找到,则将与目标蓝牙设备的预设唯一标识符对应的周边设备对象作为BLE设备对象,执行步骤S3;否则,通过第三驱动接口向应用程序返回错误信息。
可选地,在步骤S4之前,还包括:驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象,具体包括:驱动程序向iOS***中注册蓝牙3.0设备的本地通知,驱动程序在iOS***中注册第一通知,驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象的读写通信线程。
具体地,注册第一通知,具体为:驱动程序通过调用iOS***注册方法向iOS***注册接收蓝牙3.0设备的拔插通知。
具体地,步骤S4中驱动程序从移动终端中获取蓝牙3.0设备对象列表,具体为:驱动程序从移动终端的iOS***中获取蓝牙3.0设备对象列表。
更具体地,步骤S4中驱动程序从iOS***中获取蓝牙3.0设备对象列表后,还包括:
步骤a1:驱动程序判断蓝牙3.0设备对象列表是否为空,如果为空,则报错,否则执行步骤a2;
步骤a2:驱动程序从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象的协议信息;
步骤a3:驱动程序根据预设的目标蓝牙设备的协议信息和蓝牙3.0设备对象的协议信息进行匹配,若匹配成功,则驱动程序根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象,蓝牙3.0设备对象与BLE设备对象匹配,否则驱动程序通过第三驱动接口向应用程序返回错误信息。
进一步地,驱动程序初始化蓝牙3.0设备对象的通信通道,具体包括:驱动程序通过iOS***提供的初始化通道接口对蓝牙3.0设备对象与iOS***之间的通信通道进行初始化,获取通信通道对象,并保存相应的通信通道对象。
具体地,步骤S5中驱动程序初始化蓝牙3.0设备对象的通信通道之后,还包括:驱动程序判断目标蓝牙设备的功耗状态,如果是无功耗状态,返回步骤S1;如果是低功耗状态,返回步骤S1;如果是高功耗状态,则进行数据通信。
进一步地,进行数据通信,具体包括:驱动程序按照预设协议对应用程序传来的数据进行组包后,将组包后的数据发送给蓝牙3.0设备对象,蓝牙3.0设备对象根据数据做出相应的回应并将回应数据返回给驱动程序,驱动程序接收回应数据后进行解包,并将数据返回至应用程序。
更进一步地,将组包后的数据发送给蓝牙3.0设备对象,具体为:驱动程序通过调用iOS***的write接口发送给蓝牙3.0设备对象;驱动程序接收回应数据,具体为:驱动程序通过调用iOS***的read接口接收回应数据。
另一方面,本发明提供了一种在iOS***上实现低功耗蓝牙通信的装置,包括:
扫描模块,用于扫描周边设备;
第一获取模块,用于获取周边设备对象列表;
第二获取模块,用于从周边设备对象列表中获取与目标蓝牙设备对应的BLE设备对象;
第一匹配模块,用于将移动终端与BLE设备对象对应的目标蓝牙设备进行匹配;
第三获取模块,用于当第一匹配模块匹配成功时,从iOS***中获取蓝牙3.0设备对象列表;
第四获取模块,用于根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象;
第一初始化模块,用于当第四获取模块获取成功时,初始化蓝牙3.0设备对象的通信通道;
通信模块,用于当第一初始化模块初始化蓝牙3.0设备对象的通信通道后,进行数据通信。
可选地,装置还包括:第五获取模块和第二初始化模块;
第五获取模块,用于通过第一驱动接口获取到来自应用程序的初始化请求;
第二初始化模块,用于第五获取模块获取到来自应用程序的初始化请求后,初始化中心设备对象。
可选地,装置还包括:创建模块和设置模块;
创建模块,用于创建中心设备对象;
设置模块,用于设置中心设备对象的委派对象及串口队列。
具体地,扫描模块具体用于:通过中心设备对象扫描周边设备。
可选地,装置还包括:保存模块和第一返回模块;
保存模块,用于保存周边设备对象列表;
第一返回模块,用于向应用程序返回周边设备对象列表里的周边设备对象的唯一标识符。
可选地,装置还包括:第六获取模块、第七获取模块、调用模块、第八获取模块和发送模块;
第六获取模块,用于获取周边设备广播信息;
第七获取模块,用于通过第二驱动接口获取来自应用程序的获取周边设备对象列表和获取周边设备广播信息的请求;
调用模块,用于当第七获取模块接收到请求后,通过中心设备对象调用iOS***的扫描周边设备的方法;
第八获取模块,用于当调用模块调用iOS***的扫描周边设备的方法后,通过第二委派接口获得周边设备广播信息和周边设备对象列表;
发送模块,用于向应用程序返回周边设备对象的唯一标识符。
可选地,装置还包括:第九获取模块;
第九获取模块,用于通过第一委派接口获取中心设备对象的蓝牙状态。
相应地,第九获取模块获取中心设备对象的蓝牙状态之后,还包括:第二返回模块和第三返回模块;
具体地,扫描模块,还用于当第九获取模块获得中心设备对象的蓝牙正常工作的状态时,扫描周边设备;
第二返回模块,用于当第九获取模块获得中心设备对象的蓝牙未打开的状态时,向应用程序返回错误信息;
第三返回模块,用于当第九获取模块获得中心设备对象的异常状态或不支持连接的状态时,向应用程序返回蓝牙异常的信息。
可选地,装置还包括:第十获取模块和第十一获取模块;
第十获取模块,用于获取来自应用程序的包括目标蓝牙设备的预设唯一标识符的连接设备请求;
第十一获取模块,用于根据目标蓝牙设备的预设唯一标识符从扫描到的周边设备列表中获取与目标蓝牙设备对应的BLE设备对象。
可选地,装置还包括:第十二获取模块、第一查找模块、作为模块和返回错误模块;
第十二获取模块,用于通过第三驱动接口获取到来自应用程序的目标蓝牙设备的预设唯一标识符;
第一查找模块,用于在第十二获取模块通过第三驱动接口获取到来自应用程序的目标蓝牙设备的预设唯一标识符后,根据目标蓝牙设备的预设唯一标识符在周边设备对象列表中查找是否存在与目标蓝牙设备的预设唯一标识符对应的周边设备对象;
作为模块,用于当第一查找模块查找到与目标蓝牙设备的预设唯一标识符对应的周边设备对象时,将与目标蓝牙设备的预设唯一标识符对应的周边设备对象作为BLE设备对象;
第一匹配模块,还用于当作为模块将与目标蓝牙设备的预设唯一标识符对应的周边设备对象作为BLE设备对象时,将移动终端与BLE设备对象对应的目标蓝牙设备进行匹配;
返回错误模块,用于当第一查找模块没有查找到与目标蓝牙设备的预设唯一标识符对应的周边设备对象时,通过第三驱动接口向应用程序返回错误信息。
可选地,装置还包括:第三初始化模块;
第三初始化模块,用于初始化目标蓝牙设备的蓝牙3.0设备对象。
具体地,第三初始化模块还包括:第一注册子模块、第二注册子模块、初始化子模块;
第一注册子模块,用于向iOS***中注册蓝牙3.0设备的本地通知;
第二注册子模块,用于在iOS***中注册第一通知;
初始化子模块,用于初始化目标蓝牙设备的蓝牙3.0设备对象的读写通信线程。
具体地,第一注册子模块还包括:注册单元;
注册单元,用于调用iOS***注册方法向iOS***注册接收蓝牙3.0设备的拔插通知。
具体地,第三获取模块具体用于:从移动终端的iOS***中获取蓝牙3.0设备对象列表。
可选地,装置还包括:第一判断模块、第十三获取模块、报错模块、第二匹配模块、第十四获取模块和第五返回模块;
第一判断模块,用于第三获取模块获取到蓝牙3.0设备对象列表后,判断蓝牙3.0设备对象列表是否为空;
第十三获取模块,用于当第一判断模块判断不为空时从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象的协议信息;
报错模块,当第一判断模块判断为空时,用于报错;
第二匹配模块,用于根据预设的目标蓝牙设备的协议信息和蓝牙3.0设备对象的协议信息进行匹配;
第十四获取模块,用于当第一匹配模块匹配成功时,根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象;
具体地,第一匹配模块,具体用于当第十四获取模块根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象时,用于蓝牙3.0设备对象与BLE设备对象匹配;
第五返回模块,用于当匹配模块匹配失败时,通过第三驱动接口向应用程序返回错误信息。
具体地,第一初始化模块包括:初始化子模块、获取子模块和保存子模块;
初始化子模块,用于通过iOS***提供的初始化通道接口对蓝牙3.0设备对象与iOS***之间的通信通道进行初始化;
获取子模块,用于获取通信通道对象;
保存子模块,用于保存相应的通信通道对象。
可选地,装置还包括:第二判断模块;
第二判断模块,用于判断目标蓝牙设备的功耗状态;
扫描模块,还用于当第二判断模块判断目标蓝牙设备的功耗状态是无功耗状态时,扫描周边设备;
扫描模块,还用于当第二判断模块判断目标蓝牙设备的功耗状态是低功耗状态时,扫描周边设备;
通信模块,还用于当第二判断模块判断目标蓝牙设备的功耗状态是高功耗状态时,进行数据通信。
具体地,在本实施例中,通信模块具体包括:组包单元、发送单元、接收单元、解包单元和返回单元;
组包单元,用于按照预设协议对应用程序传来的数据进行组包;
发送单元,用于将组包单元组包的数据发送给蓝牙3.0设备对象;
接收单元,用于接收回应数据;
解包单元,用于接收回应数据后进行解包;
返回单元,用于将解包单元解包的数据返回至应用程序。
具体地,发送单元,具体用于通过调用iOS***的write接口发送给蓝牙3.0设备对象;接收单元,具体用于通过调用iOS***的read接口接收回应数据。
本发明取得的有益效果是:
采用本发明的技术方案,将低功耗蓝牙和蓝牙3.0的优点结合在一起,既保证BLE低功耗维持设备待机时间,又保证通信速度。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一中提供的一种在iOS***上实现低功耗蓝牙通信的方法的流程图;
图2为本发明实施例二中提供的一种在iOS***上实现低功耗蓝牙通信的方法的流程图;
图3为本发明实施例三中提供的一种在iOS***上实现低功耗蓝牙通信的装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供了一种在iOS***上实现低功耗蓝牙通信的方法,可以由安装在具有iOS***的移动终端中的驱动程序或者由安装在具有iOS***的移动终端上的包括驱动程序和应用程序的可执行文件来实现与蓝牙设备通信。其中,具有iOS***的移动终端可以为iPhone、iPod、iTouch或iPad等设备,蓝牙设备具体为既支持BLE又支持蓝牙3.0的蓝牙设备,例如可以为:既支持蓝牙BLE又支持蓝牙3.0的蓝牙读卡器或者蓝牙KEY等。
如图1所示,具体包括:
步骤101:驱动程序初始化中心设备对象,并扫描周边设备;
驱动程序初始化中心设备对象,具体为:当驱动程序通过第一驱动接口获取到来自应用程序的初始化请求后,驱动程序初始化中心设备对象。其中,初始化中心设备对象具体为:创建中心设备对象,并且设置中心设备对象的委派对象及串口队列;
扫描周边设备,具体为:当驱动程序通过第二驱动接口获取到来自应用程序的获取周边预设唯一标识符列表和获取周边设备广播信息的请求后,驱动程序通过中心设备对象调用iOS***的扫描周边设备的方法,通过第二委派接口获得周边设备对象列表。
当驱动程序通过第二委派接口获取到周边设备广播信息和周边设备对象列表后,从广播信息中获取周边设备对象中的预设唯一标识符,将周边设备对象中的预设唯一标识符和周边设备对象一一对应的存储到周边设备对象列表中,并向应用程序返回周边设备对象列表中的预设唯一标识符;
其中,预设唯一标识符是蓝牙设备的唯一识别信息,本实施例中,可以为蓝牙设备的设备名称,也可以为蓝牙设备的序列号。
具体地,创建中心设备对象为:驱动程序调用iOS***中CBCentralManager对象的init接口;设置中心设备对象的委派对象及串口队列为:驱动程序调用iOS***中CBCentralManager对象的initWithDelegate:queue:接口;中心设备对象扫描周边设备的方法为:调用iOS***中CBCentralManager对象的scanForPeripheralsWithServices:options:接口。
需要说明的是,在驱动程序通过中心设备对象扫描周边设备之前,驱动程序通过第一委派接口获取中心设备对象的蓝牙状态,具体为:驱动程序获得中心设备对象的蓝牙正常工作的状态,则执行步骤202;驱动程序获得中心设备对象的蓝牙未打开的状态,则应用程序返回错误信息;驱动程序获得中心设备对象的异常状态或不支持连接的状态,则向应用程序返回蓝牙异常的信息。其中,蓝牙异常状态包括:中心设备关闭状态、中心设备不支持BLE状态、中心设备异常状态、连接超时报错等。
具体地,驱动程序通过调用iOS***中CBCentralManager对象的entralManagerDidUpdateState:接口获取中心设备对象的蓝牙状态。
还需说明的是,步骤101之后还可以包括:驱动程序设置中心设备对象扫描周边设备的扫描时间。
步骤102:驱动程序根据目标蓝牙预设唯一标识符,从扫描到的周边设备中获取与目标蓝牙设备对应的BLE设备对象;
具体地,当驱动程序通过第三驱动接口获取到来自应用程序的目标预设唯一标识符后,驱动程序根据目标预设唯一标识符在周边设备对象列表中查找是否存在与目标预设唯一标识符对应的周边设备对象,如果查找到,则将与目标预设唯一标识符对应的周边设备对象作为BLE设备对象,执行步骤103;否则,通过第三驱动接口向应用程序返回错误信息。
步骤103:驱动程序将移动终端与BLE设备对象对应的目标蓝牙设备进行匹配,并初始化蓝牙目标设备的蓝牙3.0设备对象;
具体地,驱动程序使用中心设备对象调用iOS***的连接周边设备方法,并设置周边设备对象的委派对象。其中,当驱动程序通过第三委派接口获取到连接周边设备成功的委派通知时,表示中心设备对象完成与BLE设备对象对应的目标蓝牙设备匹配,同时激活蓝牙目标设备的蓝牙3.0设备对象;否则通过第三驱动接口向应用程序返回错误信息。
其中,驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象,具体包括:驱动程序向iOS***中注册蓝牙3.0设备的本地通知,驱动程序在iOS***中注册第一通知,驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象的读写通信线程。在本实施例中,第一通知为:实时监控蓝牙3.0设备***通知和实时监控蓝牙3.0设备拔出通知。
步骤104:驱动程序获取蓝牙3.0设备对象,并与BLE设备对象匹配;
具体步骤如下:
步骤104-1:驱动程序获取到来自iOS***的蓝牙3.0设备对象列表,如果驱动程序获得的蓝牙3.0设备对象列表为空,则向应用程序返回错误信息,否则执行步骤104-2;
具体地,驱动程序获取iOS***中的蓝牙3.0设备对象列表方法为:
驱动程序通过EAAccessoryManager对象的connectedAccessories成员接口获得。
步骤104-2:驱动程序从蓝牙3.0对象设备列表中获取目标蓝牙设备的协议信息;
例如,目标蓝牙设备的协议信息为:com.ftsafe.rakuten。
步骤104-3:驱动程序根据预设的目标蓝牙设备的协议信息和蓝牙3.0设备对象列表中的蓝牙3.0设备对象协议信息进行匹配,匹配成功,执行步骤104-4,否则驱动程序通过第三驱动接口向应用程序返回错误信息;
具体地,根据目标蓝牙设备的协议信息从蓝牙3.0设备列表中筛选出和目标蓝牙设备的协议信息相同的蓝牙3.0设备对象列表。
步骤104-4:驱动程序将匹配成功的蓝牙3.0设备对象与BLE设备对象进行匹配。
具体地,驱动程序判断匹配成功的蓝牙3.0设备对象中的预设唯一标识符与驱动程序通过第三驱动接口获得的目标预设唯一标识符是否匹配,若匹配成功则执行步骤105,否则向应用程序返回错误信息。
需要说明的是,本实施例中,预设唯一标识符可以是蓝牙3.0设备的mac地址,也可以是蓝牙3.0设备的序列号。
以mac地址为例,蓝牙3.0设备对象中的mac地址为:3481f40A05D6,目标蓝牙预设唯一标识符为:34567890120A05D6,通过匹配,两者后三个字节相同且均为0A05D6,则两者匹配成功。
步骤105:驱动程序初始化目标蓝牙设备的通信通道,并判断目标蓝牙设备的功耗状态,如果是无功耗状态,返回步骤101;如果是低功耗状态,返回步骤101;如果是高功耗状态,进行数据通信。
具体地,驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象的通信通道后,驱动程序按照预设协议进行协议数据组包,进行数据通信。
驱动程序初始化目标蓝牙设备的通信通道,具体为:驱动程序通过iOS***提供的初始化通道接口对蓝牙设备与iOS***之间的通信通道进行初始化,获取通信通道对象,并保存相应的通信通道对象。
驱动程序进行数据通信,主要包括:对数据进行读写操作,具体为:驱动程序通过调用iOS***中EASession对象的write接口进行写操作,通过调用read接口进行读操作。
在本实施例中,驱动程序判断目标蓝牙设备的功耗状态,具体包括:如果是无功耗状态,即目标蓝牙设备断电,则返回步骤101;如果是低功耗状态,即目标蓝牙设备休眠或是只有蓝牙3.0设备对象工作,返回步骤101;如果是高功耗状态,即BLE设备对象和蓝牙3.0设备对象同时工作,则进行数据通信。
具体地,在本实施例中,蓝牙设备休眠的具体情况是:蓝牙3.0设备对象不工作,只有BLE设备对象进行供电,没有数据通信。需要说明的是,驱动程序是通过蓝牙3.0设备对象的断开连接通知判断蓝牙设备是否休眠和断电的。其中,只有蓝牙3.0设备对象工作包括:驱动程序的Disconnect接口主动被调用和***即将将应用程序退出两种情况。
在本实施例中,驱动程序进行数据通信,主要包括:驱动程序按照预设协议对应用程序传来的数据进行组包后,将组包后的数据发送给目标蓝牙设备,目标蓝牙设备根据数据做出相应的回应并将回应数据返回给驱动程序,驱动程序接收回应数据后进行解包,并将数据返回至应用程序。
具体地,驱动程序通过调用iOS***中EASession对象的write接口,将组包后的数据发送给目标蓝牙设备,通过调用iOS***中EASession对象的read接口驱动程序接收回应数据。
还需要说明的是,在本实施例中,第一驱动接口、第二驱动接口和第三驱动接口之间没有时间或者逻辑上的先后顺序。
本发明提供了一种在iOS***上实现低功耗蓝牙通信的方法,首先初始化中心设备对象,根据中心设备对象获取BLE设备对象后,与对应的目标蓝牙设备进行匹配,获取蓝牙3.0设备对象,并与BLE设备对象进行匹配,匹配成功后即可通信。采用本发明的技术方案,既能维持设备待机时间,又保证通信速度。
实施例二
本实施例提供了一种在iOS***上实现低功耗蓝牙通信的方法,可以由安装在具有iOS***的移动终端中的驱动程序或者由安装在具有iOS***的移动终端上的包括驱动程序和应用程序的可执行文件来实现与蓝牙设备通信。其中,具有iOS***的移动终端可以为iPhone、iPod、iTouch或iPad等设备,蓝牙设备具体为既支持BLE又支持蓝牙3.0的蓝牙设备,例如可以为:既支持蓝牙BLE又支持蓝牙3.0的蓝牙读卡器或者蓝牙KEY等。
方法,如图2所示,具体包括:
步骤201:驱动程序初始化中心设备对象,并获取中心设备对象的蓝牙状态;
具体地,当驱动程序通过第一驱动接口获取到来自应用程序的初始化请求后,驱动程序初始化中心设备对象。其中,驱动程序初始化中心设备对象具体为:驱动程序创建中心设备对象,并且设置中心设备对象的委派对象及串口队列。
具体地,创建中心设备对象为:驱动程序调用iOS***中CBCentralManager对象的init接口;设置中心设备对象的委派对象及串口队列为:驱动程序调用iOS***中CBCentralManager对象的initWithDelegate:queue:接口。
驱动程序获取中心设备对象的蓝牙状态,具体为:驱动程序通过第一委派接口获取中心设备对象的蓝牙状态。具体地,驱动程序获得中心设备对象的蓝牙正常工作的状态,则执行步骤202;驱动程序获得中心设备对象的蓝牙未打开的状态,则应用程序返回错误信息;驱动程序获得中心设备对象的异常状态或不支持连接的状态,则向应用程序返回蓝牙异常的信息。其中,蓝牙异常状态包括:中心设备关闭状态、中心设备不支持BLE状态、中心设备异常状态、连接超时报错等。
具体地,驱动程序通过调用iOS***中CBCentralManager对象的entralManagerDidUpdateState:接口获取中心设备对象的蓝牙状态:当CBCentralManager类中的state接收到来自iOS***中CBCentralManagerStatePoweredOn的指令,表示中心设备蓝牙打开;当state接收到CBCentralManagerStatePoweredOff的指令,表示中心设备蓝牙关闭;当state接收到CBCentralManagerStateUnknown的指令,表示中心设备状态异常;当state接收到CBCentralManagerStateUnsupported的指令,表示当前中心设备不支持连接。
需要说明的是,如果应用程序未退出,整个过程驱动程序只需要初始化中心设备对象一次即可,如果应用程序退出,则需要驱动程序重新进行初始化中心设备对象。
步骤202:驱动程序通过中心设备对象扫描周边设备,获取周边设备广播信息和周边设备对象列表,保存周边设备对象列表,并向应用程序返回周边设备对象中的预设唯一标识符;
在本实施例中,驱动程序获取周边设备广播信息和周边设备对象列表,具体地:当驱动程序通过第二驱动接口获取到来自应用程序的获取周边设备广播信息和周边预设唯一标识符列表的请求后,驱动程序通过中心设备对象调用iOS***的扫描周边设备的方法,通过第二委派接口获得周边设备广播信息和周边设备对象列表。
具体地,中心设备对象扫描周边设备为:驱动程序调用iOS***中CBCentralManager对象的scanForPeripheralsWithServices:options:接口,其中,scanForPeripheralsWithServices:options:接口中的预设服务标识数组可以为空;获取周边设备广播信息和周边设备对象列表为:驱动程序通过iOS***中CBCentralManager对象的didDiscoverPeripheral:advertisementData:RSSI:第二委派接口获得。
在本实施例中,当驱动程序通过第二委派接口获取到周边设备广播信息和周边设备对象列表后,从广播信息中获取周边设备对象中的预设唯一标识符,将周边设备对象中的预设唯一标识符和周边设备对象一一对应的存储到周边设备对象列表中,并向应用程序返回周边设备对象列表中的预设唯一标识符;
其中,预设唯一标识符是蓝牙设备的唯一识别信息,本实施例中,可以为蓝牙设备的设备名称,也可以为蓝牙设备的序列号。
还需说明的是,步骤202之后还可以包括:驱动程序设置中心设备对象扫描周边设备的扫描时间。其中扫描时间,可以是应用程序制定扫描的时间,也可以是驱动程序设定的一个固定的扫描时间。在设定的时间内,驱动程序会持续扫描周边设备,直至设定的扫描时间结束。
步骤203:当驱动程序获取到来自应用程序的包括目标蓝牙预设唯一标识符的连接设备请求后,驱动程序根据目标蓝牙预设唯一标识符获取BLE设备对象;
具体地,当驱动程序通过第三驱动接口获取到来自应用程序的目标预设唯一标识符后,驱动程序根据目标预设唯一标识符在周边设备对象列表中查找是否存在与目标预设唯一标识符对应的周边设备对象,如果查找到,则将与目标预设唯一标识符对应的周边设备对象作为BLE设备对象,执行步骤204;否则,通过第三驱动接口向应用程序返回错误信息。
需要说明的是,当应用程序获取到来自用户在显示界面上选择的目标蓝牙预设唯一标识符后,将包括目标蓝牙预设唯一标识符的连接设备请求发送给驱动程序;当应用程序获取到来自驱动程序的错误信息后,输出错误信息。
步骤204:驱动程序将移动终端与BLE设备对象对应的目标蓝牙设备进行匹配;
具体地,驱动程序使用中心设备对象调用iOS***的连接周边设备方法,并设置周边设备对象的委派对象。其中,当驱动程序通过第三委派接口获取到连接周边设备成功的委派通知时,表示中心设备对象完成与BLE设备对象对应的目标蓝牙设备匹配,执行步骤205;否则通过第三驱动接口向应用程序返回错误信息。
具体地,中心设备对象连接周边设备的方法为:驱动程序通过调用iOS***中CBCentralManager对象的connectPeripheral:options:接口。
步骤205:驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象;
具体地,驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象,具体包括:驱动程序向iOS***中注册蓝牙3.0设备的本地通知,驱动程序在iOS***中注册第一通知,驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象的读写通信线程。
本实施例中,第一通知为:实时监控蓝牙3.0设备***通知和实时监控蓝牙3.0设备拔出通知;
具体地,实时监控蓝牙设备***通知为:EAAccessoryDidConnectNotification,实时监控蓝牙设备拔出通知为:EAAccessoryDidDisconnectNotification;
具体地,驱动程序向iOS***中注册蓝牙3.0设备的本地通知的方法为:驱动程序通过调用iOS***中的EAAccessoryManager对象的registerForLocalNotifications接口;驱动程序向iOS***中心注册第一通知的方法为:驱动程序通过调用iOS***中NSNotificationCenter对象的addObserver:selector:name:object:接口。
需要说明的是,在本实施例中,步骤203之后还可以包括:驱动程序设置中心设备对象连接周边设备的时间。在执行过步骤205的激活目标蓝牙设备的蓝牙3.0设备对象后,需判断中心设备对象连接周边设备是否超时,如果超时,需返回步骤203,如果未超时,则驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象。
步骤206:驱动程序获取来自iOS***中的蓝牙3.0设备对象,并与BLE设备对象匹配;
具体步骤如下:
步骤2061:驱动程序获取到来自iOS***的蓝牙3.0设备对象列表,如果驱动程序获得的蓝牙3.0设备对象列表为空,则向应用程序返回错误信息,否则执行步骤2062;
具体地,驱动程序获取iOS***中的蓝牙3.0设备对象列表方法为:驱动程序通过EAAccessoryManager对象的connectedAccessories成员接口获得。
步骤2062:驱动程序从蓝牙3.0对象设备列表中获取蓝牙3.0设备对象的协议信息;
步骤2063:驱动程序根据预设的目标蓝牙设备的协议信息和蓝牙3.0设备对象的协议信息进行匹配,匹配成功,执行步骤2064,否则驱动程序通过第三驱动接口向应用程序返回错误信息;
具体的,根据目标蓝牙设备的协议信息从蓝牙3.0设备列表中筛选出和目标蓝牙设备的协议信息相同的蓝牙3.0设备对象列表。
例如,目标蓝牙设备的协议信息为:com.ftsafe.rakuten。
步骤2064:驱动程序将匹配成功的蓝牙3.0设备对象与BLE设备对象进行匹配。
具体地,驱动程序判断匹配成功的蓝牙3.0设备对象中的预设唯一标识符与驱动程序通过第三驱动接口获得的目标预设唯一标识符是否匹配,若匹配成功则执行步骤207,否则向应用程序返回错误信息。
需要说明的是,本实施例中,唯一标示符可以是蓝牙设备的mac地址,也可以是蓝牙设备序列号。
以mac地址为例,蓝牙3.0设备对象中的mac地址为:3481f40A05D6,目标蓝牙预设唯一标识符为:34567890120A05D6,通过匹配,两者后三个字节相同且均为0A05D6,则两者匹配成功。
步骤207:驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象的通信通道;
具体地,驱动程序通过iOS***提供的初始化通道接口对蓝牙设备与iOS***之间的通信通道进行初始化,获取通信通道对象,并保存相应的通信通道对象;
具体地,驱动程序通过iOS***中EASession对象的initWithAcessory:forProtocol:接口,对蓝牙设备与iOS***之间的通信通道进行初始化,获得已经初始化的通道EASession对象,利用已经初始化的EASession对象获得NSInputStream和NSOutputStream对象后,将EASession对象、NSOutputStream对象、NSInputStream对象保存,并通过open接口打开,用于后续的数据通信。
步骤208:驱动程序判断目标蓝牙设备的功耗状态,如果是无功耗状态,返回步骤201;如果是低功耗状态,返回步骤201;如果是高功耗状态,进行数据通信。
在本实施例中,驱动程序判断目标蓝牙设备的功耗状态,具体包括:如果是无功耗状态,即目标蓝牙设备断电,则返回步骤201;如果是低功耗状态,即目标蓝牙设备休眠或是只有蓝牙3.0设备对象工作,返回步骤201;如果是高功耗状态,即BLE设备对象和蓝牙3.0设备对象同时工作,则进行数据通信。
具体地,在本实施例中,蓝牙设备休眠的具体情况是:蓝牙3.0设备对象不工作,只有BLE设备对象进行供电,没有数据通信。需要说明的是,驱动程序是通过蓝牙3.0设备对象的断开连接通知判断蓝牙设备是否休眠和断电的。其中,只有蓝牙3.0设备对象工作包括:驱动程序的Disconnect接口主动被调用和***即将将应用程序退出两种情况。
在本实施例中,驱动程序进行数据通信,主要包括:驱动程序按照预设协议对应用程序传来的数据进行组包后,将组包后的数据发送给目标蓝牙设备,目标蓝牙设备根据数据做出相应的回应并将回应数据返回给驱动程序,驱动程序接收回应数据后进行解包,并将数据返回至应用程序。
在本实施例中,驱动程序按照预设协议进行协议数据组包,例如,驱动程序获得应用程序传入的数据为:0x 00 84 00 00 08,如果驱动程序按照私有协议组包,则为:0xA500 09 00 00 03 03 00 84 00 00 08,如果驱动程序按照CCID协议组包,则为:0x6f 05 0000 00 00 04 00 00 00 00 84 00 00 08。
具体地,驱动程序通过调用iOS***中EASession对象的write接口,将组包后的数据发送给目标蓝牙设备,通过调用iOS***中EASession对象的read接口驱动程序接收回应数据。
需要说明的是,在本实施例中,第一驱动接口、第二驱动接口和第三驱动接口之间没有时间或者逻辑上的先后顺序。
实施例三
本实施例提供了一种在iOS***上实现低功耗蓝牙通信的装置,如图3所示,装置包括:
扫描模块101,用于扫描周边设备;
第一获取模块102,用于获取周边设备对象列表;
第二获取模块103,用于从周边设备对象列表中获取与目标蓝牙设备对应的BLE设备对象;
第一匹配模块104,用于将移动终端与BLE设备对象对应的目标蓝牙设备进行匹配;
第三获取模块105,用于当第一匹配模块匹配成功时,从iOS***中获取蓝牙3.0设备对象列表;
第四获取模块106,用于根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象;
第一初始化模块107,用于当第四获取模块获取成功时,初始化蓝牙3.0设备对象的通信通道;
通信模块108,用于当所述第一初始化模块初始化所述蓝牙3.0设备对象的通信通道后,进行数据通信。
可选地,在本实施例中,装置还包括:第五获取模块和第二初始化模块;
第五获取模块,用于通过第一驱动接口获取到来自应用程序的初始化请求;
第二初始化模块,用于第五获取模块获取到来自应用程序的初始化请求后,初始化中心设备对象。
可选地,在本实施例中,装置还包括:创建模块和设置模块;
创建模块,用于创建中心设备对象;
设置模块,用于设置中心设备对象的委派对象及串口队列。
具体地,在本实施例中,扫描模块101具体用于:通过中心设备对象扫描周边设备。
可选地,在本实施例中,装置还包括:保存模块和第一返回模块;
保存模块,用于保存周边设备对象列表;
第一返回模块,用于向应用程序返回周边设备对象列表里的周边设备对象的唯一标识符。
可选地,在本实施例中,装置还包括:第六获取模块、第七获取模块、调用模块、第八获取模块和发送模块;
第六获取模块,用于获取周边设备广播信息;
第七获取模块,用于通过第二驱动接口获取来自应用程序的获取周边设备对象列表和获取周边设备广播信息的请求;
调用模块,用于当第七获取模块接收到请求后,通过中心设备对象调用iOS***的扫描周边设备的方法;
第八获取模块,用于当调用模块调用iOS***的扫描周边设备的方法后,通过第二委派接口获得周边设备广播信息和周边设备对象列表;
发送模块,用于向应用程序返回周边设备对象的唯一标识符。
可选地,在本实施例中,装置还包括:第九获取模块;
第九获取模块,用于获取中心设备对象的蓝牙状态。
相应地,在本实施例中,第九获取模块获取中心设备对象的蓝牙状态之后,还包括:第二返回模块和第三返回模块;
在本实施例中,扫描模块101还用于:当第九获取模块获得中心设备对象的蓝牙正常工作的状态时,扫描周边设备;
第二返回模块,用于当第九获取模块获得中心设备对象的蓝牙未打开的状态时,向应用程序返回错误信息;
第三返回模块,用于当第九获取模块获得中心设备对象的异常状态或不支持连接的状态时,向应用程序返回蓝牙异常的信息。
可选地,在本实施例中,装置还包括:第十获取模块和第十一获取模块;
第十获取模块,用于获取来自应用程序的包括目标蓝牙设备的预设唯一标识符的连接设备请求;
第十一获取模块,用于根据目标蓝牙设备的预设唯一标识符从扫描到的周边设备列表中获取与目标蓝牙设备对应的BLE设备对象。
可选地,在本实施例中,装置还包括:第十二获取模块、第一查找模块、作为模块和返回错误模块;
第十二获取模块,用于通过第三驱动接口获取到来自应用程序的目标蓝牙设备的预设唯一标识符;
第一查找模块,用于在所述第十二获取模块通过第三驱动接口获取到来自应用程序的目标蓝牙设备的预设唯一标识符后,根据目标蓝牙设备的预设唯一标识符在所述周边设备对象列表中查找是否存在与所述目标蓝牙设备的预设唯一标识符对应的周边设备对象;
第一匹配模块,还用于当作为模块将与目标蓝牙设备的预设唯一标识符对应的周边设备对象作为BLE设备对象时,将移动终端与BLE设备对象对应的所述目标蓝牙设备进行匹配;
返回错误模块,用于当第一查找模块没有查找到与目标蓝牙设备的预设唯一标识符对应的周边设备对象时,通过第三驱动接口向应用程序返回错误信息。
可选地,在本实施例中,装置还包括:第三初始化模块;
第三初始化模块,用于初始化目标蓝牙设备的蓝牙3.0设备对象。
具体地,在本实施例中,第三初始化模块还包括:第一注册子模块、第二注册子模块和初始化子模块;
第一注册子模块,用于向iOS***中注册蓝牙3.0设备的本地通知;
第二注册子模块,用于在iOS***中注册第一通知;
初始化子模块,用于初始化目标蓝牙设备的蓝牙3.0设备对象的读写通信线程。
具体地,在本实施例中,第一注册子模块还包括:注册单元;
注册单元,用于调用iOS***注册方法向iOS***注册接收蓝牙3.0设备的拔插通知。
具体地,在本实施例中,第三获取模块105具体用于:从移动终端的iOS***中获取蓝牙3.0设备对象列表。
可选地,在本实施例中,装置还包括:第一判断模块、第十三获取模块、报错模块、第二匹配模块、第十四获取模块和第五返回模块;
第一判断模块,用于所述第三获取模块获取到蓝牙3.0设备对象列表后,判断蓝牙3.0设备对象列表是否为空;
第十四获取模块,用于当第一判断模块判断不为空时,从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象的协议信息;
报错模块,用于当第一判断模块判断为空时报错;
第二匹配模块,用于根据预设的目标蓝牙设备的协议信息和蓝牙3.0设备对象的协议信息进行匹配;
第十四获取模块,用于当匹配模块匹配成功时,根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象;
具体地,在本实施例中,第一匹配模块104,具体用于:当第十四获取模块根据预设唯一标识符从蓝牙3.0设备对象列表中获取蓝牙3.0设备对象时,用于蓝牙3.0设备对象与BLE设备对象匹配;
第五返回模块,用于当匹配模块匹配失败时,通过第三驱动接口向应用程序返回错误信息。
具体地,在本实施例中,第一初始化模块107包括:初始化子模块、获取子模块和保存子模块;
初始化子模块,用于通过iOS***提供的初始化通道接口对蓝牙3.0设备对象与iOS***之间的通信通道进行初始化;
获取子模块,用于获取通信通道对象;
保存子模块,用于保存相应的通信通道对象。
可选地,在本实施例中,装置还包括:第二判断模块;
第二判断模块,用于判断目标蓝牙设备的功耗状态。
扫描模块101,还用于当第二判断模块判断所述目标蓝牙设备的功耗状态是无功耗状态时,扫描周边设备;
扫描模块101,还用于当第二判断模块判断所述目标蓝牙设备的功耗状态是低功耗状态时,扫描周边设备;
通信模块108,还用于当第二判断模块判断所述目标蓝牙设备的功耗状态是高功耗状态时,进行数据通信。
具体地,在本实施例中,通信模块108具体包括:组包单元、发送单元、接收单元、解包单元和返回单元;
组包单元,用于按照预设协议对应用程序传来的数据进行组包;
发送单元,用于将组包单元组包的数据发送给蓝牙3.0设备对象;
接收单元,用于接收所述蓝牙3.0设备对象返回的回应数据;
解包单元,用于接收回应数据后进行解包;
返回单元,用于将解包单元解包的数据返回至应用程序。
具体地,在本实施例中,发送单元具体用于:通过调用iOS***的write接口发送给蓝牙3.0设备对象;接收单元具体用于:通过调用iOS***的read接口接收回应数据。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (38)

1.一种在iOS***上实现低功耗蓝牙通信的方法,其特征在于,包括:
步骤S1:驱动程序扫描周边设备,获取周边设备对象列表;
步骤S2:所述驱动程序根据目标蓝牙设备的预设唯一标识符,从所述周边设备对象列表中获取与所述目标蓝牙设备对应的BLE设备对象;
步骤S3:所述驱动程序将移动终端与所述BLE设备对象对应的所述目标蓝牙设备进行匹配,如果匹配成功,则执行步骤S4,否则报错;
步骤S4:所述驱动程序从iOS***中获取蓝牙3.0设备对象列表,并根据所述预设唯一标识符从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象,如果获取成功,则执行步骤S5,否则报错;
步骤S5:所述驱动程序初始化所述蓝牙3.0设备对象的通信通道,进行数据通信;
所述步骤S4中,所述驱动程序从iOS***中获取蓝牙3.0设备对象列表之后,还包括:所述驱动程序从蓝牙3.0对象设备列表中获取蓝牙3.0设备对象的协议信息;根据预设的目标蓝牙设备的协议信息和蓝牙3.0设备对象的协议信息进行匹配;当匹配成功时,根据所述预设唯一标识符从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象;
所述方法中,还包括:所述根据所述预设唯一标识符从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象,具体为:所述驱动程序判断与预设的目标蓝牙设备的协议信息匹配成功的蓝牙3.0设备对象中的预设唯一标识符与目标预设唯一标识符是否匹配,是则执行步骤S5,否则报错。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1之前还包括所述驱动程序初始化中心设备对象,所述驱动程序初始化中心设备对象具体为:当所述驱动程序通过第一驱动接口获取到来自应用程序的初始化请求后,所述驱动程序初始化所述中心设备对象。
3.根据权利要求2所述的方法,其特征在于,所述驱动程序初始化中心设备对象之前还包括:所述驱动程序创建所述中心设备对象,并且设置所述中心设备对象的委派对象及串口队列。
4.根据权利要求2所述的方法,其特征在于,所述步骤S1中所述驱动程序扫描周边设备具体为:所述驱动程序通过所述中心设备对象扫描所述周边设备。
5.根据权利要求1所述的方法,其特征在于,所述步骤S1中,所述获取周边设备对象列表之后还包括:保存周边设备对象列表,并向应用程序返回周边设备对象列表里的周边设备对象的唯一标识符。
6.根据权利要求5所述的方法,其特征在于,所述步骤S1中,所述驱动程序扫描周边设备后,还包括:所述驱动程序获取周边设备广播信息;
所述步骤S1具体为:当所述驱动程序通过第二驱动接口获取到来自应用程序的获取周边设备对象列表和获取周边设备广播信息的请求后,所述驱动程序通过中心设备对象调用iOS***的扫描周边设备的方法,通过第二委派接口获得周边设备广播信息和周边设备对象列表后,保存周边设备对象列表,并向应用程序返回周边设备对象的唯一标识符。
7.根据权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:所述驱动程序通过第一委派接口获取中心设备对象的蓝牙状态。
8.根据权利要求7所述的方法,其特征在于,所述驱动程序通过第一委派接口获取中心设备对象的蓝牙状态之后:若所述驱动程序获得所述中心设备对象的蓝牙正常工作的状态,则扫描周边设备;若所述驱动程序获得所述中心设备对象的蓝牙未打开的状态,则向应用程序返回错误信息;若所述驱动程序获得所述中心设备对象的异常状态或不支持连接的状态,则向应用程序返回蓝牙异常的信息。
9.根据权利要求1所述的方法,其特征在于,所述步骤S2具体为:当所述驱动程序获取到来自应用程序的包括所述目标蓝牙设备的预设唯一标识符的连接设备请求后,所述驱动程序根据所述目标蓝牙设备的预设唯一标识符,从扫描到的周边设备列表中获取与所述目标蓝牙设备对应的BLE设备对象。
10.根据权利要求1所述的方法,其特征在于,所述步骤S2具体为:当所述驱动程序通过第三驱动接口获取到来自应用程序的目标蓝牙设备的预设唯一标识符后,所述驱动程序根据目标蓝牙设备的预设唯一标识符在所述周边设备对象列表中查找是否存在与所述目标蓝牙设备的预设唯一标识符对应的周边设备对象,如果查找到,则将与目标蓝牙设备的预设唯一标识符对应的周边设备对象作为BLE设备对象,执行步骤S3;否则,通过所述第三驱动接口向应用程序返回错误信息。
11.根据权利要求1所述的方法,其特征在于,所述步骤S4之前,还包括:所述驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象。
12.根据权利要求11所述的方法,其特征在于,所述驱动程序初始化目标蓝牙设备的蓝牙3.0设备对象,具体包括:所述驱动程序向所述iOS***中注册蓝牙3.0设备的本地通知,所述驱动程序在所述iOS***中注册第一通知,所述驱动程序初始化所述目标蓝牙设备的蓝牙3.0设备对象的读写通信线程。
13.根据权利要求12所述的方法,其特征在于,所述注册第一通知,具体为:驱动程序通过调用iOS***注册方法向iOS***注册接收蓝牙3.0设备的拔插通知。
14.根据权利要求1所述的方法,其特征在于,所述步骤S4中所述驱动程序从iOS***中获取蓝牙3.0设备对象列表,具体为:所述驱动程序从移动终端的iOS***中获取蓝牙3.0设备对象列表。
15.根据权利要求1所述的方法,其特征在于,所述驱动程序从蓝牙3.0对象设备列表中获取蓝牙3.0设备对象的协议信息;根据预设的目标蓝牙设备的协议信息和蓝牙3.0设备对象的协议信息进行匹配,当匹配成功时,根据所述预设唯一标识符从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象,具体为
步骤a1:所述驱动程序判断蓝牙3.0设备对象列表是否为空,如果为空,则报错,否则执行步骤a2;
步骤a2:所述驱动程序从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象的协议信息;
步骤a3:所述驱动程序根据预设的目标蓝牙设备的协议信息和所述蓝牙3.0设备对象的协议信息进行匹配,若匹配成功,则所述驱动程序根据所述预设唯一标识符从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象,所述蓝牙3.0设备对象与所述BLE设备对象匹配,否则驱动程序通过第三驱动接口向应用程序返回错误信息。
16.根据权利要求1所述的方法,其特征在于,所述步骤S5中,所述驱动程序初始化所述蓝牙3.0设备对象的通信通道,具体包括:所述驱动程序通过iOS***提供的初始化通道接口对所述蓝牙3.0设备对象与iOS***之间的通信通道进行初始化,获取通信通道对象,并保存相应的通信通道对象。
17.根据权利要求1所述的方法,其特征在于,所述步骤S5中,所述驱动程序初始化所述蓝牙3.0设备对象的通信通道之后,还包括:所述驱动程序判断所述目标蓝牙设备的功耗状态,如果是无功耗状态,返回步骤S1;如果是低功耗状态,返回步骤S1;如果是高功耗状态,则进行数据通信。
18.根据权利要求1所述的方法,其特征在于,所述进行数据通信,具体包括:所述驱动程序按照预设协议对应用程序传来的数据进行组包后,将组包后的数据发送给所述蓝牙3.0设备对象,所述蓝牙3.0设备对象根据所述组包后的数据做出相应的回应并将回应数据返回给所述驱动程序,所述驱动程序接收所述回应数据后进行解包,并将所述回应数据返回至应用程序。
19.根据权利要求18所述的方法,其特征在于,所述将组包后的数据发送给所述蓝牙3.0设备对象,具体为:所述驱动程序通过调用iOS***的write接口发送给所述蓝牙3.0设备对象;所述驱动程序接收回应数据,具体为:所述驱动程序通过调用iOS***的read接口接收回应数据。
20.一种在iOS***上实现低功耗蓝牙通信的装置,其特征在于,包括:
扫描模块,用于扫描周边设备;
第一获取模块,用于获取周边设备对象列表;
第二获取模块,用于根据目标蓝牙设备的预设唯一标识符,从所述周边设备对象列表中获取与所述目标蓝牙设备对应的BLE设备对象;
第一匹配模块,用于将移动终端与所述BLE设备对象对应的所述目标蓝牙设备进行匹配;
第三获取模块,用于当所述第一匹配模块匹配成功时,从iOS***中获取蓝牙3.0设备对象列表;
第四获取模块,用于根据所述预设唯一标识符从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象;
第一初始化模块,用于当所述第四获取模块获取成功时,初始化所述蓝牙3.0设备对象的通信通道;
通信模块,用于当所述第一初始化模块初始化所述蓝牙3.0设备对象的通信通道后,进行数据通信;
第三获取模块,还用于从蓝牙3.0对象设备列表中获取蓝牙3.0设备对象的协议信息;根据预设的目标蓝牙设备的协议信息和蓝牙3.0设备对象的协议信息进行匹配;当匹配成功时,触发所述第四获取模块;
所述第四获取模块,具体用于判断与预设的目标蓝牙设备的协议信息匹配成功的蓝牙3.0设备对象中的预设唯一标识符与目标预设唯一标识符是否匹配。
21.根据权利要求20所述的装置,其特征在于,还包括:第五获取模块和第二初始化模块;
所述第五获取模块,用于通过第一驱动接口获取到来自应用程序的初始化请求;
所述第二初始化模块,用于所述第五获取模块获取到来自应用程序的初始化请求后,初始化中心设备对象。
22.根据权利要求21所述的装置,其特征在于,还包括:创建模块和设置模块;
所述创建模块,用于创建所述中心设备对象;
所述设置模块,用于设置所述中心设备对象的委派对象及串口队列。
23.根据权利要求21所述的装置,其特征在于,所述扫描模块,具体用于通过所述中心设备对象扫描周边设备。
24.根据权利要求20所述的装置,其特征在于,还包括:保存模块和第一返回模块;
所述保存模块,用于保存周边设备对象列表;
所述第一返回模块,用于向应用程序返回周边设备对象列表里的周边设备对象的唯一标识符。
25.根据权利要求24所述的装置,其特征在于,还包括:第六获取模块、第七获取模块、调用模块、第八获取模块和发送模块;
所述第六获取模块,用于获取周边设备广播信息;
所述第七获取模块,用于通过第二驱动接口获取来自应用程序的获取周边设备对象列表和获取周边设备广播信息的请求;
所述调用模块,用于当所述第七获取模块接收到请求后,通过中心设备对象调用iOS***的扫描周边设备的方法;
所述第八获取模块,用于当所述调用模块调用iOS***的扫描周边设备的方法后,通过第二委派接口获得周边设备广播信息和周边设备对象列表;
所述发送模块,用于向应用程序返回周边设备对象的唯一标识符。
26.根据权利要求20所述的装置,其特征在于,还包括:第九获取模块;
所述第九获取模块,用于通过第一委派接口获取中心设备对象的蓝牙状态。
27.根据权利要求26所述的装置,其特征在于,还包括:第二返回模块和第三返回模块;
所述扫描模块,还用于当所述第九获取模块获得所述中心设备对象的蓝牙正常工作的状态时,扫描周边设备;
所述第二返回模块,用于当所述第九获取模块获得所述中心设备对象的蓝牙未打开的状态时,向应用程序返回错误信息;
所述第三返回模块,用于当所述第九获取模块获得所述中心设备对象的异常状态或不支持连接的状态时,向应用程序返回蓝牙异常的信息。
28.根据权利要求20所述的装置,其特征在于,还包括:第十获取模块和第十一获取模块;
所述第十获取模块,用于获取来自应用程序的包括所述目标蓝牙设备的预设唯一标识符的连接设备请求;
所述第十一获取模块,用于根据所述目标蓝牙设备的预设唯一标识符从扫描到的周边设备列表中获取与所述目标蓝牙设备对应的BLE设备对象。
29.根据权利要求20所述的装置,其特征在于,还包括:第十二获取模块、第一查找模块、作为模块和返回错误模块;
所述第十二获取模块,用于通过第三驱动接口获取到来自应用程序的目标蓝牙设备的预设唯一标识符;
所述第一查找模块,用于在所述第十二获取模块通过第三驱动接口获取到来自应用程序的目标蓝牙设备的预设唯一标识符后,根据目标蓝牙设备的预设唯一标识符在所述周边设备对象列表中查找是否存在与所述目标蓝牙设备的预设唯一标识符对应的周边设备对象;
所述作为模块,用于当所述第一查找模块查找到与所述目标蓝牙设备的预设唯一标识符对应的周边设备对象时,将与目标蓝牙设备的预设唯一标识符对应的周边设备对象作为BLE设备对象;
所述第一匹配模块,还用于当所述作为模块将与目标蓝牙设备的预设唯一标识符对应的周边设备对象作为BLE设备对象时,将移动终端与所述BLE设备对象对应的所述目标蓝牙设备进行匹配;
返回错误模块,用于当所述第一查找模块没有查找到与所述目标蓝牙设备的预设唯一标识符对应的周边设备对象时,通过所述第三驱动接口向应用程序返回错误信息。
30.根据权利要求20所述的装置,其特征在于,还包括:第三初始化模块;
所述第三初始化模块,用于初始化目标蓝牙设备的蓝牙3.0设备对象。
31.根据权利要求30所述的装置,其特征在于,所述第三初始化模块包括:第一注册子模块、第二注册子模块和初始化子模块;
所述第一注册子模块,用于向所述iOS***中注册蓝牙3.0设备的本地通知;
所述第二注册子模块,用于在所述iOS***中注册第一通知;
所述初始化子模块,用于初始化所述目标蓝牙设备的蓝牙3.0设备对象的读写通信线程。
32.根据权利要求31所述的装置,其特征在于,所述第一注册子模块包括:注册单元;
所述注册单元,用于调用iOS***注册方法向iOS***注册接收蓝牙3.0设备的拔插通知。
33.根据权利要求20所述的装置,其特征在于,所述第三获取模块,具体用于从移动终端的iOS***中获取蓝牙3.0设备对象列表。
34.根据权利要求20所述的装置,其特征在于,当所述第三获取模块用于从蓝牙3.0对象设备列表中获取蓝牙3.0设备对象的协议信息时,所述第三获取模块包括:第一判断模块、第十三获取模块、报错模块、第二匹配模块、第十四获取模块和第五返回模块;
所述第一判断模块,用于所述第三获取模块获取到蓝牙3.0设备对象列表后,判断蓝牙3.0设备对象列表是否为空;
所述第十三获取模块,用于当所述第一判断模块判断不为空时从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象的协议信息;
所述报错模块,用于当所述第一判断模块判断为空时报错;
所述第二匹配模块,用于根据预设的目标蓝牙设备的协议信息和所述蓝牙3.0设备对象的协议信息进行匹配;
所述第十四获取模块,用于当所述匹配模块匹配成功时,根据所述预设唯一标识符从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象;
所述第一匹配模块,具体用于当所述第十四获取模块根据所述预设唯一标识符从所述蓝牙3.0设备对象列表中获取蓝牙3.0设备对象时,用于所述蓝牙3.0设备对象与所述BLE设备对象匹配;
所述第五返回模块,用于当所述匹配模块匹配失败时,通过第三驱动接口向应用程序返回错误信息。
35.根据权利要求20所述的装置,其特征在于,所述第一初始化模块包括:初始化子模块、获取子模块和保存子模块;
所述初始化子模块,用于通过iOS***提供的初始化通道接口对所述蓝牙3.0设备对象与iOS***之间的通信通道进行初始化;
所述获取子模块,用于获取通信通道对象;
所述保存子模块,用于保存相应的通信通道对象。
36.根据权利要求20所述的装置,其特征在于,还包括:第二判断模块;
所述第二判断模块,用于判断所述目标蓝牙设备的功耗状态;
所述扫描模块,还用于当所述第二判断模块判断所述目标蓝牙设备的功耗状态是无功耗状态时,扫描周边设备;
所述扫描模块,还用于当所述第二判断模块判断所述目标蓝牙设备的功耗状态是低功耗状态时,扫描周边设备;
所述通信模块,还用于当所述第二判断模块判断所述目标蓝牙设备的功耗状态是高功耗状态时,进行数据通信。
37.根据权利要求20所述的装置,其特征在于,所述通信模块具体包括:组包单元、发送单元、接收单元、解包单元和返回单元;
所述组包单元,用于按照预设协议对应用程序传来的数据进行组包;
所述发送单元,用于将所述组包单元组包的数据发送给所述蓝牙3.0设备对象;
所述接收单元,用于接收所述蓝牙3.0设备对象返回的回应数据;
所述解包单元,用于接收回应数据后进行解包;
所述返回单元,用于将所述解包单元解包的数据返回至应用程序。
38.根据权利要求37所述的装置,其特征在于,所述发送单元,具体用于通过调用iOS***的write接口发送给所述蓝牙3.0设备对象;
所述接收单元,具体用于通过调用iOS***的read接口接收回应数据。
CN201710049763.9A 2017-01-23 2017-01-23 一种在iOS***上实现低功耗蓝牙通信的方法及装置 Active CN106686535B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710049763.9A CN106686535B (zh) 2017-01-23 2017-01-23 一种在iOS***上实现低功耗蓝牙通信的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710049763.9A CN106686535B (zh) 2017-01-23 2017-01-23 一种在iOS***上实现低功耗蓝牙通信的方法及装置

Publications (2)

Publication Number Publication Date
CN106686535A CN106686535A (zh) 2017-05-17
CN106686535B true CN106686535B (zh) 2020-02-11

Family

ID=58859956

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710049763.9A Active CN106686535B (zh) 2017-01-23 2017-01-23 一种在iOS***上实现低功耗蓝牙通信的方法及装置

Country Status (1)

Country Link
CN (1) CN106686535B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107889089B (zh) * 2017-11-09 2020-06-02 飞天诚信科技股份有限公司 一种移动终端及其处理蓝牙数据的方法
CN107994928B (zh) * 2018-01-10 2021-04-27 飞天诚信科技股份有限公司 一种实现蓝牙数据同步收发的方法及通信装置
CN110336592B (zh) 2019-06-28 2021-03-16 飞天诚信科技股份有限公司 适用蓝牙读卡器的数据传输方法、电子设备及存储介质
CN115334486B (zh) * 2022-10-18 2023-03-03 成都锐成芯微科技股份有限公司 蓝牙通信方法及蓝牙***
CN116828435B (zh) * 2023-08-30 2023-11-14 北京柚果星空科技有限公司 一种软蓝牙网关的设备转发方法及***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105188023A (zh) * 2015-10-15 2015-12-23 飞天诚信科技股份有限公司 一种蓝牙通讯方法和通讯装置
CN105472038A (zh) * 2016-01-07 2016-04-06 腾讯科技(深圳)有限公司 文件传输的控制方法、装置以及***
CN106131810A (zh) * 2016-06-20 2016-11-16 飞天诚信科技股份有限公司 一种连接蓝牙双模设备的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105188023A (zh) * 2015-10-15 2015-12-23 飞天诚信科技股份有限公司 一种蓝牙通讯方法和通讯装置
CN105472038A (zh) * 2016-01-07 2016-04-06 腾讯科技(深圳)有限公司 文件传输的控制方法、装置以及***
CN106131810A (zh) * 2016-06-20 2016-11-16 飞天诚信科技股份有限公司 一种连接蓝牙双模设备的方法及装置

Also Published As

Publication number Publication date
CN106686535A (zh) 2017-05-17

Similar Documents

Publication Publication Date Title
CN106686535B (zh) 一种在iOS***上实现低功耗蓝牙通信的方法及装置
US10970951B2 (en) Data management method, apparatus, device, system and storage medium for smart lock
US8665730B2 (en) Test device and test method for mobile communication terminal
US20200339139A1 (en) Automobile diagnostic method, apparatus, device and system, and diagnostic connection device
US20170202035A1 (en) Wireless communication terminal, wireless communication system, and storage medium storing wireless communication program
CN104023052B (zh) 智能家居无线控制***及方法
CN103199901A (zh) 促进无线通信的***与方法
US10609633B2 (en) Method for triggering registrar protocol interaction, access point, and station
EP3582549A1 (en) Network connection method and apparatus
CN107423099B (zh) 键码烧写方法、服务器、终端、键码烧写***及存储介质
US9491166B2 (en) Apparatus and method for authenticating smart card
US20180234535A1 (en) Method and apparatus for communication
CN104702678B (zh) 文件传输方法及装置
EP2326128A1 (en) Network-agnostic encoded information reading terminal
CN102833782A (zh) 一种错误码信息获取方法、装置及***
EP4145349A1 (en) Data transmission method, multifunction card and electronic device
CN105335238A (zh) 进程间通信方法及装置
CN107592607B (zh) 一种蓝牙复合设备及其通信方法
CN108270764A (zh) 一种应用登陆方法、服务器及移动端
CN101384057A (zh) 一种移动终端软件的诊断方法、装置及***
CN103024202A (zh) 手机状态栏运营商图标显示方法及装置
CN112165715B (zh) 设备的检测方法和装置、存储介质、电子装置
CN115665713A (zh) 多设备的通信方法、装置、设备及存储介质
CN111614715B (zh) 一种租赁电池调拨的方法、***及存储介质
CN107087057B (zh) 数据传输***及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
OL01 Intention to license declared
OL01 Intention to license declared