一种连接蓝牙设备的方法及装置的制造方法_3

文档序号:9755551阅读:来源:国知局
0148] 优选的,第S返回值为CBCentralManagerSl:ateUnsu卵orted。
[0149] 步骤204:判断终端是否开启蓝牙功能,是则执行步骤206,否则执行步骤205;
[0150] 具体地,检测监听函数的返回值的类型,如监听函数的返回值为第四返回值,则终 端已开启蓝牙功能,如监听函数的返回值为第五返回值时,则终端未开启蓝牙功能;
[0151 ] 优选的,第四返回值为CBCentralManagerStatePoweredOn,第五返回值为 CBCentralManagerStatePoweredOff。
[0152] 步骤205:判断等待开启蓝牙功能的时长是否超过第一预设时长,是则结束,否则 提示开启蓝牙功能,返回步骤204;
[0153] 步骤206:判断终端是否已连接与目标蓝牙设备名称相同的蓝牙设备,是则提示连 接成功,否则执行步骤207;
[0154] 在本实施例中,要连接的BLE蓝牙设备为目标蓝牙设备;
[0155] 步骤206之前还包括:判断终端是否已连接蓝牙设备,是则执行步骤206,否则执行 步骤207;在步骤206中判断为否时执行步骤207之前还包括:断开已连接蓝牙设备。
[0156] 步骤207:在终端的系统中设置预设服务标识;
[0157] 在本实施例中,蓝牙设备的服务对应的标识,简称为服务标识;蓝牙设备的服务下 的每个特征对应一个标识,统称为特征标识;蓝牙设备的服务下的接收数据特征对应接收 数据标识;蓝牙设备的服务下的发送数据特征对应发送数据标识;
[0158] 具体地,在终端的系统中设置预设服务标识,例如,设置预设服务标识= 46540001-0001-00c3-0000-46545:M14645,默认的,接收数据标识= 46540001-0002-00c3- 0000-46545:3414645,发送数据标识= 46540001-0003-00c3-0000-465453414645;
[0159] 进一步地,在终端的系统中设置预设服务标识之后,终端获取蓝牙广播数据,根据 预设服务标识扫描获取到的蓝牙广播数据;
[0160] 在本实施例中,蓝牙广播数据中包含的信息有蓝牙设备名称、蓝牙设备当前连接 状态、蓝牙设备当前的服务及服务标识;
[0161] 在本实施中,根据预设服务标识扫描获取到的蓝牙广播数据具体为:根据预设服 务标识扫描获取到的蓝牙广播数据中蓝牙设备当前的服务标识。
[0162] 步骤208:判断终端是否扫描到与预设服务标识对应的蓝牙广播数据,是则执行步 骤210,否则执行步骤209;
[0163] 具体地,检测是否接收到终端系统回调的第一函数接口的通知,是则终端扫描到 与预设服务标识对应的蓝牙广播数据,否则终端未扫描到与预设服务标识对应的蓝牙广播 数据。
[0164] 步骤209:判断扫描时间是否超过第二预设时长,是则提示扫描超时,结束,否则返 回步骤208;
[0165] 步骤210:从与预设服务标识对应的蓝牙广播数据中提取蓝牙设备名称;
[0166] 在本实施例中,蓝牙广播数据中包含的信息有蓝牙设备名称、蓝牙设备当前连接 状态、蓝牙设备当前的服务及服务标识,提取蓝牙广播数据中的蓝牙设备名称。
[0167] 步骤211:判断提取到的蓝牙设备名称与目标蓝牙设备名称是否相同,是则执行步 骤212,否则返回步骤209;
[0168] 步骤212:根据提取到的蓝牙设备名称,连接对应的蓝牙设备;
[0169] 具体地,当提取的蓝牙设备名称与目标蓝牙设备名称相同时,调用第二函数接口, 连接与提取的蓝牙设备名称对应的蓝牙设备,第二函数接口为:
[0170] -(void)connectPeripher曰 1: (CBPeripher曰 Wperiphersl options : (null曰ble NSDictionary<NSString*,id〉*)options。
[0171] 步骤213:判断与提取到的蓝牙设备名称对应的蓝牙设备是否连接成功,是则执行 步骤214,否则提示连接失败,结束;
[0172] 步骤213具体为:检测终端系统回调的函数接口类型,如终端系统回调的函数接口 类型为第S函数接口,则与提取到的蓝牙设备名称对应的蓝牙设备连接成功,如终端系统 回调的函数接口类型为第四函数接口,则与提取到的蓝牙设备名称对应的蓝牙设备连接失 败;
[0173] 具体地,在本实施例中,第S函数接口为:
[0174] -(void)centralManager: (CBCentralManager*)central didConnectPeripher曰I:(CBPeripher曰l*)peripher曰I;
[0175] 第四函数接口为:
[0176] -(void)centralManager: (CBCentralManager*)central didFaiIToConnectPeripheral:(CBPeripheral*)aPeripheral error:(NSError*)error。
[0177] 步骤214:连接当前连接的蓝牙设备的服务;
[0178] 在本实施例中,连接当前连接的蓝牙设备的服务前还包括:接收终端系统回调的 第五函数接口通知,第五函数接口为:
[0179] -(void)peripher曰1: (CBPeripher曰l*)peripher曰1 di(!DiscoverServices : (null曰ble NSError*)error;
[0180] 步骤214具体为:接收到终端设系统检测到当前连接的蓝牙设备的服务的通知后, 连接当前连接的蓝牙设备的服务。
[0181] 步骤215:判断连接服务是否成功,是则执行步骤217,否则执行步骤216;
[0182] 具体地,连接服务成功后,将自动去扫描当前连接的蓝牙设备的服务下的特征,即 执行步骤217。
[0183] 步骤216:判断连接时间是否超过第=预设时长,是则提示连接超时,结束,否则返 回步骤208;
[0184] 步骤217:扫描当前连接的蓝牙设备的服务下的特征;
[0185] 在本实施例中,蓝牙设备的服务下的特征包括蓝牙设备名称、蓝牙设备连接状态、 蓝牙设备地址、接收数据、发送数据等;
[0186] 在本实施例中,扫描当前连接的蓝牙设备的服务下的特征之前还包括:接收终端 系统回调的第六函数接口通知,第六函数接口为:
[0187] -(void)peripheral : (CBPeripheral*)aPeripheral didDiscoverCharacteriSticsForServiCe:(CBServiCe*)service error:(NSError*) error;
[0188] 步骤217具体为:接收到终端检测到当前连接的蓝牙设备的服务下的特征的通知 后,扫描当前连接的蓝牙设备的服务下的特征;
[0189] 在本实施例中,扫描蓝牙设备的服务下的特征具体为:遍历服务下的特征数组。
[0190] 步骤218:判断是否扫描完当前连接的蓝牙设备的服务下的所有特征,是则执行步 骤220,否则执行步骤219;
[0191] 在本实施例中,步骤218具体为:判断是否遍历完服务下的特征数组,是则扫描完 当前连接的蓝牙设备的服务下的所有特征,否则未扫描完当前连接的蓝牙设备的服务下的 所有特征。
[0192] 步骤219:判断扫描时间是否超过第四预设时长,是则提示扫描超时,结束,否则返 回步骤217;
[0193] 步骤220:提取所有特征的标识,并将第一个特征作为当前特征;
[0194] 具体地,特征数组记录着每一个特征及每一个特征的标识,相应地,当扫描到特征 数组中的特征时,提取扫描到的特征的标识。
[01M]步骤221:判断当前特征的标识是否为预设接收数据标识,是则执行步骤222,否则 执行步骤223;
[0196] 具体地,本实施例中的目标蓝牙设备的服务标识预先设定,例如将目标蓝牙设备 的接收数据标识设定为46540001-0002-00C3-0000-465453414645,步骤221具体为:判断当 前特征的标识是否为46540001-0002-00C3-0000-465453414645,是则执行步骤222,否则执 行步骤223。
[0197] 步骤222:记录当前特征为接收数据,将当前特征标记为写特征,执行步骤225;
[0198] 在本实施例中,接收数据是指蓝牙设备接收数据,即终端向蓝牙设备发送数据,记 录当前特征为接收数据,并将其标记为写特征,后续将通过该特征来发送数据给蓝牙设备, 将当前特征标记为写特征具体地可W通过下述代码来实现:
[0199] if([aChar.UUID isEqual:[C脚UIDUUIDWithString:UUIDSTR_C3_TRANS_RX]]){
[0200] [myPeripher曰1 setTr曰nsp曰rentD曰t曰WriteCh曰r:曰Ch曰r]〇
[0201] 步骤223:判断当前特征的标识是否为预设发送数据标识,是则执行步骤224,否则 将下一个特征作为当前特征,返回步骤221;
[0202] 具体地,本实施例中的目标蓝牙设备的服务标识预先设定,例如将目标蓝牙设备 的发送数据标识设定为46540001-0003-00C3-0000-465453414645,步骤223具体为:判断提 取的特征的标识是否为46540001-0003-00c3-0000-465453414645,是则执行步骤224,否则 将下一个特征作为当前特征,返回步骤221。
[0203] 步骤224:记录当前特征为发送数据,将当前特征标记为读特征,执行步骤225;
[0204] 在本实施例中,发送数据指终端接收数据,即蓝牙设备向终端发送数据,记录当前 特征为发送数据,并将其标记为读特征,后续终端将通过该特征来接收数据,将当前特征标 记为读特征具体地可W通过下述代码来实现:
[0205] if ( [aChar.UUID is FAjual: [CBUUID UUIDW 姐如 i 打按加 IDST 及-C3 jrHANS JTX]]) {
[inyPcrinhcraJ SCtTransparcntDam民cadCl-ianaChar];
[aPcriphcrai scrNotih VrJuc: I'RL. I', forCharaacristiciaChaiJ c
[0206] 步骤225:判断接收数据特征和发送数据特征是否均已记录,是则提示连接成功, 结束,否则执行步骤226;
[0207] 在本实施例中,判断接收数据特征及发送数据特征是否均已记录具体为:判断是 否标记了写特征和读特征。
[0208] 步骤226:判断当前特征是否为最后一个特征,是则提示连接不成功,结束,否则将 下一个特征作为当前特征,返回步骤221。
[0209] 需要说明的是,在本发明的另一种实现方式中,上述步骤207至步骤216可W替换 为:
[0210] 步骤Al:接收终端获取到的蓝牙广播数
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1