相关疑难解决方法(0)

查找蓝牙低功耗设备的RSSI值的距离

我正在研究蓝牙低能耗概念项目.我得到的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)

iphone objective-c bluetooth-lowenergy ios7

31
推荐指数
3
解决办法
6万
查看次数

iOS 8 CoreBluetooth不推荐使用RSSI方法

所以从阅读CBPeripheralDelegate文档,它看起来RSSIperipheralDidUpdateRSSI:error:被抛弃了与iOS 8.

我注意到我的信号强度指示器不再被更新,所以我做了一些研究并发现了一个新的方法([CBPeripheralDelegate peripheral:didReadRSSI:error:]),它应该在调用readRSSI方法后异步调用.不幸的是,即使我确实将父类设置为CBPeripheral委托,这种方法似乎也没有被回调.

有没有其他人有iOS 8 CoreBluetooth更新的问题?

objective-c ios core-bluetooth ios8

6
推荐指数
1
解决办法
5881
查看次数

刷新众多蓝牙外设的RSSI值

我正在尝试从几个蓝牙外设测量 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

1
推荐指数
1
解决办法
6806
查看次数