Я пытаюсь получить данные о глюкозе крови через CoreBluetooth из глюкометра Accucheck Instant, и вот мой метод, который вызывается из моего характеристического метода didUpdateValueFor:
private func glucoseValue(from characteristic: CBCharacteristic) -> Int {
guard let characteristicData = characteristic.value else { return -1 }
let byteArray = [UInt8](characteristicData)
let firstBitValue = byteArray[0] & 0x01
if firstBitValue == 0 {
// Glucose Value Format is in the 2nd byte
return Int(byteArray[1])
} else {
// Glucose Value Format is in the 2nd and 3rd bytes
return (Int(byteArray[1]) << 8) + Int(byteArray[2])
}
}
Однако я не получаю правильные данные, и я получаю неправильное значение. Не могли бы вы помочь мне с тем, что я делаю неправильно и как мне правильно отформатировать данные, чтобы получить ожидаемый результат?
Вот что печатается в моей консоли для разных UUID:
характеристика ==== ‹CBCharacteristic: 0x280034ea0, UUID = 2A18, свойства = 0x10, значение = (ноль), уведомление = НЕТ›
характеристика ==== ‹CBCharacteristic: 0x280034f00, UUID = 2A51, свойства = 0x2, значение = {длина = 2, байты = 0x2002}, уведомление = НЕТ›
характеристика ==== ‹CBCharacteristic: 0x280034f60, UUID = 2A52, свойства = 0x28, значение = {длина = 4, байты = 0x06000106}, уведомление = НЕТ›
характеристика ==== ‹CBCharacteristic: 0x280034fc0, UUID = 2A08, свойства = 0x2, значение = {длина = 7, байты = 0xe507031e0f3700}, уведомление = НЕТ›
Заранее спасибо!