iOS CoreBluetooth中的特征通知之间是否有最短时间限制?

问题描述

我有一个连接到蓝牙外围设备的iOS应用程序。扫描,连接,服务/特征发现,读取,写入,通知均应正常工作。

假设我已如下实现了外围委托函数didUpdateValueFor characteristic

import Foundation
import CoreBluetooth

class myPeripheral : NSObject,CBPeripheralDelegate {
    func getTimeStamp() -> String {
        let date = Date()
        let calendar = Calendar.current
        let dateFormatter = DateFormatter()
        dateFormatter.calendar = calendar
        dateFormatter.dateFormat = "HH:mm:ss:SSS"
        return dateFormatter.string(from: date)
    }

    public func peripheral(_ peripheral: CBPeripheral,didUpdateValueFor characteristic: CBCharacteristic,error: Error?) {
        let value = characteristic.value.hexEncodedString()
        let timeStamp = getTimeStamp()
        if error == nil {
            print("\(timeStamp) - New value: \(value)")
        }
        else {
            print("Failure")
        }
    }
}

订阅特征后,这通常可以按预期工作。但是,有时外围设备会快速连续(〜1-3 ms)发送不同的新值。由于某种原因,在上面的实现中,只有最后一个值被打印两次。

外围更新的特征如下:

01
05

我的应用程序的输出

13:10:56:201 - New value: 05
13:10:56:203 - New value: 05

我知道外围设备正确更新了特性,因为我们有一个运行中的android应用程序。我需要在应用程序中正确获取两个更新值,有人有想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)