簡體   English   中英

ios ble“典型的用戶描述”

[英]ios ble “Characteristic User Description”

通過使用以下函數嘗試從特征中檢索可讀信息:

peripheral.discoverDescriptors(for: characteristic)

后來的委托方法:

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

被稱為,但如何獲得字符串描述? 當我從描述符中讀取值時,它始終為nil

let descriptors = characteristic.descriptors! as [CBDescriptor]
for descriptor in descriptors {
    print("\(#function): descriptor = \(descriptor) UUID = \(descriptor.uuid) value = \(descriptor.value)")
}

但是,如果我正在瀏覽並連接BLE掃描儀,它可以讀取人類可讀的特征描述符。

讀取描述符是一個兩步過程,非常類似於發現然后讀取特征。

嘗試:

public func peripheral(_ peripheral: CBPeripheral, didDiscoverDescriptorsFor characteristic: CBCharacteristic, error: Error?) {
    guard let descriptors = characteristic.descriptors else { return }

    for descr in descriptors {
        peripheral.readValue(for: descr)
    }
}

然后填寫以下內容:

public func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor descriptor: CBDescriptor, error: Error?) {
    switch descriptor.uuid.uuidString {
    case CBUUIDCharacteristicExtendedPropertiesString:
        guard let properties = descriptor.value as? NSNumber else {
            break
        }
        print("  Extended properties: \(properties)")
    case CBUUIDCharacteristicUserDescriptionString:
        guard let description = descriptor.value as? NSString else {
            break
        }
        print("  User description: \(description)")
    case CBUUIDClientCharacteristicConfigurationString:
        guard let clientConfig = descriptor.value as? NSNumber else {
            break
        }
        print("  Client configuration: \(clientConfig)")
    case CBUUIDServerCharacteristicConfigurationString:
        guard let serverConfig = descriptor.value as? NSNumber else {
            break
        }
        print("  Server configuration: \(serverConfig)")
    case CBUUIDCharacteristicFormatString:
        guard let format = descriptor.value as? NSData else {
            break
        }
        print("  Format: \(format)")
    case CBUUIDCharacteristicAggregateFormatString:
        print("  Aggregate Format: (is not documented)")
    default:
        break
    }
}

字符串常量和關聯的數據類型來自此處的概覽表。

以我的(有限的)經驗,描述符沒有揭示出任何特別有趣的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM