2

在我的应用程序中,我需要将数据写入外围设备的可写特征中。我可以通过扫描外围设备、检测和连接外围设备、发现服务、发现特征然后最终写入目标特征的过程来做到这一点。

完成这一切后,我保留了我感兴趣的 CBPheripheral 和 CBCharacteristic 的引用。现在,我下次尝试直接写入保存的外设和特性。但我低于蓝牙警告。如果我们还没有与它断开连接,我们不能直接写入外围特征吗?

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

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

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

4

1 回答 1

1

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

于 2013-08-09T15:00:36.437 回答