正在从发送阵列数据的核心蓝牙外围设备读取数据



我正在尝试读取外设发送的数组数据,并将其解析为Swift数组形式。

外围设备正在发送数据,例如:数组[1到15]数字。(对于全刻度,此整数值的范围在1000到2000之间(。但现在我正在尝试让它与1到15个整数值一起工作。我能够得到字符串格式的编码格式的结果。我的问题是如何在swift中从didUpdateValueFor方法的Characteristic.value中获取数组1到15。

以下是供参考的代码片段。

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
if characteristic == rxCharacteristic {
count += 1
let data = characteristic.value
print("Count: (count), data: (data! as NSData)")

}
}

在X-Code控制台中,打印结果为:

计数:2,数据:<00000100 02>
计数:3,数据:<00030004 00050006 00070008 0009000a 000b000c>
计数:4,数据:<000d00>
计数:5,数据:<0e00f00>

使用以下代码以array的形式检索Int值。

不要忘记为数据请求重置count = 0values.removeAll()

我假设你的characteristics.valueInt

var values:[Int] = []
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
if characteristic == rxCharacteristic {
count += 1
if let data = characteristic.value {
var num = 0
//Convert Data to Int
data.getBytes(&num, length: MemoryLayout<Int>.size)
values.append(num)
}
print("Count: (count), data: (data! as NSData)")
}
}

最新更新