我正在研究蓝牙低能耗概念项目.我得到的RSSI值介于1和100之间.当我移动标签时,RSSI值会随着外围设备离开iPhone而增加,并随着接近而减小.
任何人都可以帮我根据RSSI值获得iPhone和蓝牙标签之间的确切距离吗?有没有可用的配方?
我借助这种蓝牙低能量委托方法获得设备的RSSI值:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral
*)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
Run Code Online (Sandbox Code Playgroud) 所以从阅读CBPeripheralDelegate文档,它看起来RSSI和peripheralDidUpdateRSSI:error:被抛弃了与iOS 8.
我注意到我的信号强度指示器不再被更新,所以我做了一些研究并发现了一个新的方法([CBPeripheralDelegate peripheral:didReadRSSI:error:]),它应该在调用readRSSI方法后异步调用.不幸的是,即使我确实将父类设置为CBPeripheral委托,这种方法似乎也没有被回调.
有没有其他人有iOS 8 CoreBluetooth更新的问题?
我正在尝试从几个蓝牙外设测量 iOS(6 带 BLE)上的 RSSI 指示器。我可以通过 scanForPeripheral 获得 RSSI:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[_manager scanForPeripheralsWithServices:nil
options:options];
Run Code Online (Sandbox Code Playgroud)
加上:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
Run Code Online (Sandbox Code Playgroud)
这有效,但我无法控制接收数据包的速率,结果似乎不确定。
我读过:https : //stackoverflow.com/a/12486927/270209但我的速度根本不接近 100ms(更多 1~2 秒)
如果我连接到设备,readRSSI 的结果似乎更可靠。
我正在寻找一种方法来“刺激”外围设备以在扫描模式下进行更频繁的更新,或者一次连接到多个外围设备的方法。
谢谢
编辑:我也尝试过快速启动/停止扫描,似乎在开始扫描时检测到更多设备并且更新更频繁
bluetooth objective-c ios core-bluetooth bluetooth-lowenergy