应用程序当前可以编写消息,
// Write call
peripheral.writeValue(messageToData, for: charac, type: .withResponse)
// Which calls
public func peripheral(_ peripheral: CBPeripheral, didWriteValueFor
characteristic: CBCharacteristic, error: Error?) {
if error != nil {
print("messagesent")
}
}
此外,在为外围设备设置特征后,我将通知设置为true
peripheral.setNotifyValue(true, for: characteristic)
当我发送一条写消息时,我收到了来自蓝牙设备的“ OK”或“ ERR”响应,该响应是通过didUpdateValueFor外设委托方法触发的。
因此该应用可以从我的设备写入和读取响应。但是,我希望能够创建一个函数来编写消息并等待或检查响应是否为“ OK”或“ ERR”。如果需要,所有CORE蓝牙功能都可以使用我自己的协议委托。
我一直在看类似的东西:
func writeAndCheckResponse(message: String){
// Write to device
bluetooth.writeToPeripheral(message: "Test", peripheral: bluetooth.connectedDevice!, writeCharacteristic: bluetooth.characteristic!)
// need to add a way to check whether a notification has been recevied and that the message has been written
}
我已经考虑过使用回调闭包或DispatchGroup,但是由于快速蓝牙是异步的,所以我不确定如何执行此操作。