直接写入已连接的CBPeripheral而无需重新发现它

时间:2013-08-09 00:21:22

标签: ios cocoa-touch core-bluetooth cbperipheral cbcentralmanager

在我的应用中,我需要将数据写入外设的可写特性。我可以通过扫描外设,检测和连接外设,发现服务,发现特征然后最终写入目标特征来完成此任务。

完成所有这些后,我保留了我感兴趣的CBPheripheral和CBC特性的参考。现在,下次,我试图直接写入保存的外设和特性。但我得到了蓝牙警告。如果我们尚未与它断开连接,我们不能直接写入外设特性吗?

BTBeaconTest [1421:60b] CoreBluetooth [警告]不是有效的外围设备

[iPeripheral writeValue:dataToWrite forCharacteristic:iCharacterstic type:CBCharacteristicWriteWithResponse]; 

PS:我没有断开与外围设备的连接。

1 个答案:

答案 0 :(得分:1)

很可能蓝牙堆栈已被重置或由于某些其他原因导致外围设备无效。您需要监控状态更新,如果您收到OFFRESETTING,则会使所有句柄与外围设备和特征无效。通常,最好只保留对外设的引用,并在需要时查找特性。 CoreBluetooth将为您缓存它们,因此查找速度非常快。这个答案告诉你如何做到这一点:https://stackoverflow.com/a/18091617/768935