0
私はBLEデバイスを使用しています。デバイスは特定のUUIDで値を送信しています。
データをIntまたはStringに変換して表示するコードです。
swift3のInt/Stringへのデータ
...
else if characteristic.uuid == CBUUID(string: UUID_CHANGEIN_BATTERY_LEVEL) {
// let battery = UInt32(bigEndian: ((characteristic.value?.withUnsafeBytes { $0.pointee }) ?? 0))
let array : [UInt8] = [0, 0, 0]
var data = Data(bytes: array)
if characteristic.value != nil {
data.append(characteristic.value!)
}
let battery = UInt32(bigEndian: ((data.withUnsafeBytes { $0.pointee }) ?? 0))
print("battery level changed\nNew level is \(getInt(fromData: characteristic.value!, start: 0))!")
// lblBattery.text = (String(data: characteristic.value!, encoding: String.Encoding.utf8) ?? "0") + "%"
lblBattery.text = "\(getInt(fromData: characteristic.value!, start: 0))%"
}
...
func getInt(fromData data: Data, start: Int) -> Int32 {
let intBits = data.withUnsafeBytes({(bytePointer: UnsafePointer<UInt8>) -> Int32 in
bytePointer.advanced(by: start).withMemoryRebound(to: Int32.self, capacity: 4) { pointer in
return pointer.pointee
}
})
return Int32(bigEndian: intBits)
// return Int32(littleEndian: intBits)
}
私は値として0x2b01
を表示し、それはまた、バッテリー%として43を表示さBLEスキャナiOSアプリでチェックしました。
私は上記のように3-4種類のコードを書いています。 しかし、それらのどれもが価値として私に43を与えていません。
私が何か間違ったやり方を見つけたり、私の要件を満たすために紛失している場所を見つけるのを助けてください。
確認し、CBCharateristic値は0x2b01とバッテリー= 43%であり、Uがありますか? –
はい、私は他のアプリ、すなわちBLEScannerをチェックしており、デバイス統合マニュアルでもデータが16進数形式で提供されています –