Я подключился к устройству BLE, которое имеет службу термометра работоспособности ( 0x1809 ).Я пытаюсь декодировать характеристику измерения температуры ( 0x2A1C ) из байтов в температуру в градусах Цельсия.
По это старое сообщение Swift 2 Я считаю, что основная проблемас моим кодом из-за типа Float Swift и другого типа Bluetooth Float.
Буду признателен за любую помощь!
private func temperatureMeasurement(from characteristic: CBCharacteristic) -> Float {
guard let characteristicData = characteristic.value else { return -1 }
var byteArray = [UInt8](characteristicData)
let flags = byteArray[0]
let temperatureIsInFahrenheit = (flags & 0x01) != 0
let hasTimestamp = (flags & 0x02) != 0
let hasTemperatureType = (flags & 0x04) != 0
let mantissa1 = Float(byteArray[1])
let mantissa2 = Float(byteArray[2]) * 256
let mantissa3 = Float(byteArray[3]) * 256 * 256
let mantissa = mantissa1 + mantissa2 + mantissa3
let exponent = Float(byteArray[4])
let temperatureMeasurement = mantissa * pow(10, exponent)
return temperatureMeasurement
}