Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift 4中获得蓝牙低能耗电池寿命?_Ios_Swift_Bluetooth - Fatal编程技术网

Ios 如何在Swift 4中获得蓝牙低能耗电池寿命?

Ios 如何在Swift 4中获得蓝牙低能耗电池寿命?,ios,swift,bluetooth,Ios,Swift,Bluetooth,通过以下问题的帮助,我能够获得BLE电池寿命值: 但我不确定它是否返回正确的值?它返回18,我也不确定根据百分比确定电池寿命的最大数字。是指18小时吗 func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { print("-CBService is: \(service.uuid.description)")

通过以下问题的帮助,我能够获得BLE电池寿命值:

但我不确定它是否返回正确的值?它返回18,我也不确定根据百分比确定电池寿命的最大数字。是指18小时吗

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {

    print("-CBService is: \(service.uuid.description)")

    if compare(service.uuid, uuid2: CBUUID(string:BluetoothConstants.TI_KEYFOB_BATT_SERVICE_UUID)) {
        print("Battyer Life determination")

        for characteristic: CBCharacteristic in service.characteristics! {
            if characteristic.uuid == CBUUID(string: BluetoothConstants.TI_KEYFOB_LEVEL_SERVICE_UUID) {
                print(characteristic.properties.rawValue)
            }
        }
    }
}
以下行是字符的打印:

CBCharacteristic: 0x1c00be8a0, UUID = Battery Level, properties =
0x12, value = (null), notifying = NO>

我尝试了这里的大多数答案,但它们不适用于Swift 4

我不太清楚Swift 4,但下面是我如何使用Swift 5解决的。characteristic.properties中的值不是电池电量。您需要请求从设备读取电池电量特性(0x2A19):

然后,您还需要将didUpdateValueFor添加为CBPeripheralDelegate的一部分:

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
   print("Battery level: \(characteristic.value![0])")
}

我用一个2.76V的旧3V进行了测试(这几乎被认为是死的),它给了我3的值。然后我换了一个新电池,电池的电量值为100。

我不确定Swift 4,但下面是我如何使用Swift 5计算出来的。characteristic.properties中的值不是电池电量。您需要请求从设备读取电池电量特性(0x2A19):

然后,您还需要将didUpdateValueFor添加为CBPeripheralDelegate的一部分:

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
   print("Battery level: \(characteristic.value![0])")
}

我用一个2.76V的旧3V进行了测试(这几乎被认为是死的),它给了我3的值。然后我放入一个新电池,它给了我一个100的值。

这里描述了标准电池电量特性:-它是一个百分比,所以0x12表示18%battery@Paulw11谢谢这意味着我没有得到正确的值,因为我最近更换了电池,我应该得到90%以上的值。我确实找到了一些涉及
TI_KEYFOB_LEVEL_SERVICE_UUID
的代码,该代码被定义为0xFFF1,但我在TI sensortag文档中找不到任何提及这一点的内容。我会尝试使用0x180F的标准电池服务和0x2A19的标准电池特性,看看你能做些什么get@Paulw11我打印了它的值
print(characteristic.value!)
,它返回
1字节的数据。我试图使用
var batlevel=0 characteristic.value.getBytes(batlevel,length:TI_KEYFOB_LEVEL_SERVICE_READ_LEN)battylevel=Float(batlevel)
,但它似乎不适用于Swift 4。“电池服务在V.BTTN中暴露币形电池的电池电量。电池电量以百分比报告,例如5C为92%。”此处描述了标准电池电量特性:-它是一个百分比,因此0x12表示18%battery@Paulw11谢谢这意味着我没有得到正确的值,因为我最近更换了电池,我应该得到90%以上的值。我确实找到了一些涉及
TI_KEYFOB_LEVEL_SERVICE_UUID
的代码,该代码被定义为0xFFF1,但我在TI sensortag文档中找不到任何提及这一点的内容。我会尝试使用0x180F的标准电池服务和0x2A19的标准电池特性,看看你能做些什么get@Paulw11我打印了它的值
print(characteristic.value!)
,它返回
1字节的数据。我试图使用
var batlevel=0 characteristic.value.getBytes(batlevel,length:TI_KEYFOB_LEVEL_SERVICE_READ_LEN)battylevel=Float(batlevel)
,但它似乎不适用于Swift 4。“电池服务在V.BTTN中暴露币形电池的电池电量。电池电量以百分比报告,例如5C为92%。”