Core Bluetoothを介して接続間隔を変更する方法はありますか?データのチャンクをPeripheralに転送していますが、データを転送するのにかなりの時間がかかります。今回は減らしたいです。
コアBluetoothを使用してiOSから接続間隔を書き込んだり更新したりできる場合は、お知らせください。
ありがとうございました
Core Bluetoothを介して接続間隔を変更する方法はありますか?データのチャンクをPeripheralに転送していますが、データを転送するのにかなりの時間がかかります。今回は減らしたいです。
コアBluetoothを使用してiOSから接続間隔を書き込んだり更新したりできる場合は、お知らせください。
ありがとうございました
周辺機器からiOSに接続パラメータの更新を送信することによってのみ。最小:20ms(パラメーター= 16)最大:40(パラメーター= 32)は、CoreBluetoothによると最も適切なパラメーターです。実際には、Min = 10 Max = 20または30を使用するとパフォーマンスが向上し、CoreBluetoothは30msではなく約20msを選択します。迷惑な設定はできません。
[_manager setDesiredConnectionLatency:CBPeripheralManagerConnectionLatencyLow forCentral:_central];
作成した iOS Peripheral アプリでこの方法を使用しました。ただし、まだ 20ms を下回ることはできません。16ミリ秒未満である必要があるため、非常にイライラします。HID プロファイル (11.25ms を許可) でない限り、今のところ可能ではないように見えますが、iOS デバイスから HID プロファイルを作成することはできません。
Bluetooth Smart リンクの反対側に iOS デバイスがある場合、Apple は最小接続間隔に独自の制限を課しています。この値は、公式の Bluetooth 4.0 仕様の最小値である 7.5ms ではなく、20ms です。Apple がこれを行うのは、1 つのアプリが Bluetooth ハードウェアで利用可能なすべての帯域幅を占有したり、バッテリーをすぐに消費したりしないようにするためです。この制限の詳細については、Apple Bluetooth Design Guidelines (PDF) の 18 ページの「接続パラメーター」セクションを参照してください。
iOS では、iOS 側から接続パラメータを設定または要求することはできないことに注意してください。CoreBluetooth CBCentralManager オブジェクトの connectPeripheral メソッドは "options" パラメーターを取りますが、これには接続パラメーターは含まれません。代わりに、スレーブは接続後に新しい必要なパラメーターで接続の更新を要求する必要があり、iOS は上記のリンク先の設計ガイドライン ドキュメントの基準に基づいてそれらを受け入れるか拒否します。
これを行う方法は、タイマーを使用することだと思います。
参照: Objective-C でタイマーを作成するにはどうすればよいですか?
今のところ、それが接続間隔を表す方法です。関数のコールバック内でこれを使用できます: - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
また、Corebluetooth フレームワークから判断すると、現在、Central 側から接続間隔を更新する方法はありません。
ただし、ヘンリックさん、接続間隔に関する情報がどのようになっているのか興味があります。