我有一个关于蓝牙低能耗的问题。我使用的是iPhone (iOS 6.1)和使用nRF51822芯片的北欧板。我目前正在开发一个系统,其中iPhone和nRF51822使用某些服务进行连接,然后断开连接并重新连接。但是,在第二个连接上,nRF51822使用与第一个连接不同的服务。
问题是,在第二个连接上,iPhone发现第一个连接的前一个服务。我使用TI CC2540开发板进行了测试,它可以很好地发现新服务。我找到的唯一解决方案是将中央管理器置为零,然后重新分配它以使其正常工作。然而,这似乎是一种肮脏的解决方案,有没有标准的(干净的)方法来处理这种情况?
发布于 2013-11-12 22:20:19
如果你不做任何绑定,只做配对,那么你就不会有这个问题。
如果您确实需要绑定,那么解决此问题的最好方法是使用SDK中的绑定管理器。如果您没有使用bond manager,您可以尝试使用Service Changed函数,并将开始句柄设置为0x000C,将结束句柄设置为0xFFFF。这很可能会触发从iOS重新发现,从而找到您的新服务和特征。iOS将始终查找改变的服务,并在外围设备中启用这一功能。
如果你有任何北欧相关的问题,你可以在https://devzone.nordicsemi.com/的问答论坛上发表。
BR Pl
发布于 2013-10-24 02:00:47
当您发起与ble设备的配对请求并发现服务/特征时,服务和特征将被缓存到iOS端。如果您担心这一点,请不要执行配对请求。然后,只需传入您实际想要发现的服务数组(而不是nil)。
(旁注:让ble设备控制对iOS设备可见的服务的整个事情似乎真的应该由muddled..you在iOS端控制。)
https://stackoverflow.com/questions/19539215
复制相似问题