问题描述
我有一个连接到蓝牙外围设备的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 (将#修改为@)