要从正在发送阵列数据的Core Bluetooth外设读取数据吗?

时间:2018-11-20 18:07:24

标签: swift bluetooth-lowenergy core-bluetooth cbcentralmanager ios-bluetooth

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

外围设备正在发送数据,例如:Array [1至15]数字。(出于全面的目的,此整数值的范围在1000到2000之间)。但是现在我正在尝试使其使用1到15个Integer值。 我能够以编码格式的字符串格式获取结果。我的问题是如何快速从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代码控制台中,打印结果为:

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

1 个答案:

答案 0 :(得分:0)

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

不要忘记为数据请求重设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)")
          }
    }