本帖最后由 SwiftRobot 于 2016-9-27 02:24 编辑


不妨想一下,我们在与人交流的时候需要做些什么,当然,我们先实现设备作为central时的数据接收和处理。

  • 辨明对方的身份,如果他是你想听他说话的人,那就听他说吧(废话)。
  • 接收别人说的话,大脑对这些信息进行处理。
  • 注意保持听取,不要就听一会儿,态度端正一点。



在程序中我们做的方式可以类比过去(用CBCentralManager实现):

  • 搜索相应Peripheral并连接。
  • 连接后进行数据接收,对里面的characteristic进行读写。
  • 保持数据的更新回调。



贴一下代码来解释一下:

iOS CoreBluetooth的Swift实现(2)设备作为central的数据处理 1

iOS CoreBluetooth的Swift实现(2)设备作为central的数据处理 - 敏捷大拇指 - iOS CoreBluetooth的Swift实现(2)设备作为central的数据处理 1

central

当然现在还没有太多内容,取决于你的需求

[Swift] 纯文本查看 复制代码
COCenManager.scanForPeripheralsWithServices([CBUUID]?, options: [String:AnyObject]?)


这个方法里要传入设备service的UUID数组,设备就会搜索具有这些UUID的service的设备,这个就需要知道UUID的一些东西了,他其实是作为一个标签一样的存在,可以自己查一下相关的知识,这里不再详细讲解。UUID是nil,那就会搜索所有设备。

经过这几步(参数确定,不要像我这样。)我们就建立了设备与peripheral的连接,注意,如果连接失败需要在didFailToConnectPeripheral里做出响应。

iOS CoreBluetooth的Swift实现(2)设备作为central的数据处理 2

iOS CoreBluetooth的Swift实现(2)设备作为central的数据处理 - 敏捷大拇指 - iOS CoreBluetooth的Swift实现(2)设备作为central的数据处理 2

discoverService

discoverService传入一个CBUUID数组,如果填入nil则是默认搜索了所有的service,当然不推荐这么做,这样会耗费没必要的电量和时间。当调用这个函数成功之后,设备会回调

[Swift] 纯文本查看 复制代码
func peripheral(peripheral:CBPeripheral, didDiscoverServices error:NSError?)


在这个函数里面我们可以对所需要的service进行提取处理。首先我们最想做的就是提取出他所提供的的内容——characteristic。

[Swift] 纯文本查看 复制代码
discoverCharacteristics([CBUUID]?, forService:CBService)


就是这个了!用peripheral获得相应service的Characteristics的UUID数组,就可以读取啦。




相关内容

iOS CoreBluetooth的Swift实现(1)蓝牙硬件产品开发的基本姿势

iOS CoreBluetooth的Swift实现(2)设备作为central的数据处理

iOS CoreBluetooth的Swift实现(3)读取characteristic数据




作者:COOPERC