iOS从BLE设备读取描述符值时

时间:2018-11-12 07:18:21

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

我们使用corebluetooth框架从BLE设备获取数据。我们扫描BLE设备并建立连接。我们获得BLE设备的服务并获得特定服务的特征。

在设置指示值读取描述符的描述符值之后,使用setNotifyValue方法设置特征的指示值。

我们以didUpdateValueFor()方法成功地从蓝牙获取了数据。但是我们从中丢失了一些数据。

我们的蓝牙一次发送244字节,但在iOS中,一次只能发送182字节。因此从中下载数据时会丢失一些价值。

我们在上面的代码中使用了下面的代码。请给我们一个解决方案。如何从蓝牙设备或iOS corebluetooth框架中获取完整数据以提供任何特定数量的字节?

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?){
    for Characteristics in service.characteristics!{
        if aCharacteristics.uuid.isEqual(CBUUID(string: “XXXXX-XXXXX-XX-XXXX”)) {
                peripheral.setNotifyValue(true, for: aCharacteristics)
            }
        }
    }

func peripheral(_ peripheral: CBPeripheral, didDiscoverDescriptorsFor characteristic: CBCharacteristic, error: Error?) {

        for disc in characteristic.descriptors!{
            if disc.uuid.isEqual(CBUUID(string: “XXXXX-XXX-XXXXXX”)){
                peripheral.readValue(for: disc)
            }

        }       
    }


func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?){
       let nsdataStr = NSData.init(data: characteristic.value!)
}

0 个答案:

没有答案