快速蓝牙文件,编写消息并等待响应

时间:2018-07-04 09:08:54

标签: swift asynchronous bluetooth closures core-bluetooth

应用程序当前可以编写消息,

// 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,但是由于快速蓝牙是异步的,所以我不确定如何执行此操作。

0 个答案:

没有答案