我正在使用Corebluetooth框架开发应用程序,
并连接到BLE设备以获取RSSI值。
我设置了一个定期读取RSSI的函数,计时器代码如下
NSTimer *timer;
timer = [NSTimer scheduledTimerWithTimeInterval:1.2f target:self selector:@selector(detectRSSI) userInfo:nil repeats:YES];
并且detectRSSI代码在下面
- (void)detectRSSI
{
[self.peripheral readRSSI];
}
所以问题是
该功能运行良好,但是当我将时间间隔设置为小于1.2秒时,
pheralDidUpdateRSSI将随机报告错误消息,如下所示:
The operation was cancelled.
如果速率超过1.2秒,则不会发生。
是否有人想更频繁地(0.5秒或更短)读取RSSI值?
最佳答案
我也遇到同样的问题。对我来说,当我在sleep(2)
中简单地添加peripheralDidUpdateRSSI
时,它就可以工作。只是不要忘记在初始化CBCentralManager时使用后台队列。
- (void)peripheralDidUpdateRSSI:(CBPeripheral *)peripheral error:(NSError *)error
{
NSLog(@"RSSI = %@", peripheral.RSSI);
sleep(2);
[self.connectedPeripheral readRSSI];
}
关于ios - corebluetooth读取RSSI错误:The operation was cancelled,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15540481/