15

iOS (iPhone または iPad) アプリは、コア Bluetooth (BTLE) セントラル マネージャー オブジェクトとペリフェラル マネージャー オブジェクトを同時に持つことができますか?

それらは非同期で動作できますか、またはメインアプリスレッドでそれらを共有する必要がありますか(前後に切り替えます)。

概念的なアルゴリズムを共有すると、次のようになります: Peripheral Manager を無効にし、Central Manager を有効にし、Central 機能を実行してから、Central Manager を無効にし、Peripheral Manager を有効にし、Peripheral 機能を実行します (つまり、自動通知を送信し、リモート固有のコマンドを待機して応答します)。 )、 繰り返す...

背景の悲惨な詳細: BTLE による相互通信が必要な複数の iOS デバイスと複数の非 iOS デバイスを備えたローカル システムがあります。非 iOS デバイスはすべて、Broadcom BCM20732 Bluetooth LE チップを使用しています。しかし、ハードウェアはまだ準備ができていないので、iOS デバイスを使用して非 iOS をエミュレートしています。1. システム内の他の複数の iOS 以外のデバイスを定期的に調査する中心的な役割を果たします。2. iOS ユーザー インターフェイス デバイスからのデータ要求に応答する周辺機器として機能します。

4

2 に答える 2

14

私はそれを働かせました。私はAppleの「BTLE中央周辺機器転送」から始めたばかりで、最初に-35 dbのバグを削除し(「-35」を検索してからif(){ return }を削除します)、次に両方のcentral.mを組み合わせましたまた、peripheral.m を 1 つの UIViewController .m ファイルにまとめ、UISwitch を追加して 2 つのサービス UUID のいずれかを選択し、テキスト フィールドを自動的にインクリメントするようにペリフェラル センダーを変更しました (ASCII '0' に初期化した後)。

私は 2 つの iPad mini を連続して使用し、それぞれが増分番号を反対側に送信していました。最大で 900 回以上の転送が行われた後、ハングしました。しかし、Apple の「BTLE cp transfer」が数分後に常にハングし、続行するには iPad の再起動が必要になるのを見てきました。iPad とサイクル電源の両方でアプリを終了し、アプリを再起動すると、最大 1600 のインクリメントになり、ハングしました。

ハングを解決するために、リソース制御を追加して、Abo の推奨に従って、中央マネージャーと周辺マネージャーが同時に接続しないようにします。

于 2013-06-10T18:51:23.180 に答える