小编raj*_*raj的帖子

从Swift上的kCBAdvDataManufacturerData中提取数据

我有一个TI传感器Tag作为外设,以kCBAdvDataManufacturerData的形式广播BLE数据.我想从iOS中的这些数据中提取不同的值.

我在Swift中执行以下操作:

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber){     
     for (index, foundPeripheral) in peripherals.enumerated(){
         if foundPeripheral.peripheral?.identifier == peripheral.identifier{
             peripherals[index].lastRSSI = RSSI
             print("AdvertisementData:\(advertisementData)")
             return

         }
     }  

     let isConnectable = advertisementData["kCBAdvDataIsConnectable"] as! Bool
     let displayPeripheral = DisplayPeripheral(peripheral: peripheral, lastRSSI: RSSI, isConnectable: isConnectable)
     peripherals.append(displayPeripheral)
     tableView.reloadData()
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我在控制台中看到的:

AdvertisementData:["kCBAdvDataIsConnectable":0,"kCBAdvDataManufacturerData":<0d00fe05 0c6f32>,"kCBAdvDataLocalName":CLIMBC]

我有兴趣解码的数据是kCBAdvDataManufacturerData:<0d00fe05 0c6f32>并在屏幕上显示每个字段.具体来说,这就是数字代表我的情况:

  1. 0d00 - TI制造商ID
  2. fe - 我给出的节点ID
  3. 05 - 节点的状态(保持不变的状态)
  4. c6f - 是传感器标签电池电压
  5. 32-是BLE包计数器.

在Android中,我可以解码如下:

private static String getNodeIdFromRawPacket(byte[] manufSpecField) {
    if(manufSpecField != null && …
Run Code Online (Sandbox Code Playgroud)

iphone ios core-bluetooth bluetooth-lowenergy swift3

3
推荐指数
2
解决办法
5057
查看次数