В настоящее время я работаю над устройством BLE с CoreBluetooth. Я могу найти свое устройство через CBCentralManagerDelegate
и подключиться к своему устройству.Как читать значение характеристик?
Когда я хочу узнать характеристики службы, я могу получить правильный uuid, однако значение характеристики nil
. Есть идеи?
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
if error != nil {
print("ERROR DISCOVERING CHARACTERISTICS: \(error?.localizedDescription)")
return
}
if let characteristics = service.characteristics {
for characteristic in characteristics {
print("--------------------------------------------")
print("Characteristic UUID: \(characteristic.uuid)")
print("Characteristic isNotifying: \(characteristic.isNotifying)")
print("Characteristic properties: \(characteristic.properties)")
print("Characteristic descriptors: \(characteristic.descriptors)")
print("Characteristic value: \(characteristic.value)")
}
}
}
-------------------------------------------------------------------
Characteristic UUID: FA01
Characteristic isNotifying: false
Characteristic properties: CBCharacteristicProperties(rawValue: 26)
Characteristic descriptors: nil
Characteristic value: nil
Другой вопрос о свойствах, в соответствии с Bluetooth SIG
Почему nRFConnect проявляется read
, write
, notify
. Но он действительно получает правильное значение характеристики.
значение будет ноль, пока не выдавать запрос на чтение и получить обратный вызов к 'метода didUpdateValue' CBPeripheralDelegate. – Paulw11
Вызов 'func readValue (для характеристики: CBCharacteristic)', когда вы его обнаружили. Или setNotify (если доступно для char). – Larme
Это работает. как насчет свойств? – WeiJay