2013-03-21 3 views
8

私はCorelBluetoothフレームワークを使用してアプリケーションを開発中ですが、RSSI値を取得するためにBLEデバイスに接続してください。corebluetooth RSSIエラーを読み込んでいます:操作がキャンセルされました

私は、periodlyタイマーコードを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秒以下に設定すると、

p eripheralDidUpdateRSSIはランダムにこのようなエラーメッセージを報告します。

The operation was cancelled. 

とレート以上1.2secであれば、それは起こったのではないでしょう。

誰でもRSSI値をより頻繁に読み取るように考えていますか(0.5秒以下)?

+0

おそらく代わりに試みてください:peripheral.RSSI –

+2

私は[peripheral RSSI]またはperipheral.RSSIだけを呼び出すと、RSSIは変化しません。値は[peripheral readRSSI]を呼び出した後に更新されます。最後に、読み取り頻度の限界がファームウェアによって定義されているという答えが見つかりました。 – momoyo

+0

BLEを使用している場合は、 'didRangeBeacons:'を使用します。デバイスは1秒間に何回もスキャンするだけです。 – random

答えて

0

同じ問題が発生しました。私にとっては、peripheralDidUpdateRSSIの中にsleep(2)を追加するだけで動作します。 CBCentralManagerを初期化するときにバックグラウンドキューを使用するのを忘れないでください。

関連する問題