数据写入写入后返回的BLE特性

时间:2018-06-01 16:32:36

标签: swift bluetooth-lowenergy characteristics

我有一个工作的BLE应用程序,它从扫描仪读取数据并在开始阅读之前将配置发送到扫描仪。我使用以下代码将字符串发送到扫描仪。

let configItem = "BD1"

let data = configItem?.data(using: String.Encoding.ascii)

peripheral.writeValue(data!, for: characteristic, type: .withResponse)

我在回叫中打印特征名称和值

func peripheral(_:didWriteValueFor:CBCharacteristic:Error?)
{
    let value = String(data: characteristic.value!, encoding: .ascii)!

    print("Wrote characteristic value: " + value + "; for characterisitc: " + characteristic.uuid.description)
}

打印值不是我写的配置数据,而是一些旧的扫描仪读取数据。令人惊讶的是,应用程序关闭后,即使存在相同的旧读取数据。

回调中发送的特性是否有效,是否包含已写入的数据?

1 个答案:

答案 0 :(得分:0)

这是一个特定于设备的“功能”。扫描程序不会返回对特征写入的响应,但我仍然会收到回调,因此数据只是陈旧的。测试显示配置字符串永远不会到达扫描仪。这种情况的解决方案是发送数据“.withoutResponse”。