5

Bluetooth LE 周辺機器が付属する iOS アプリを開発しています。私が解決できないと思われる1つのステップは、アプリから周辺機器に、またはその逆に実際にデータを送信する方法です。

これまでに構築したのは、サンプルの Bluetooth 周辺機器に接続し、そのサービス/特性/記述子をすべて読み取ることができるテスト アプリです。特定の特性の通知を切り替え、特定の特性に書き込むことができます。私が理解できないように見えるのは、「nバイトを周辺機器に送信し、周辺機器からmバイトを受信する」という最後のステップです。

外部アクセサリ フレームワーク (Apple が実際にこのプロジェクトに対して MFi の承認を与えた場合に使用するフレームワーク) を見ると、アクセサリと通信するために特定のセッションで入力ストリームと出力ストリームが提供されますが、CoreBluetooth にはそのようなオブジェクトは存在しません。

これは単に、CoreBluetooth の機能に関する Apple 側の見落としですか? それとも、周辺機器との間のデータの流入/流出を処理するために、独自の Bluetooth サービス プロファイルを開発する必要がありますか?

4

3 に答える 3

3

LE は基本的に、これらの GATT ベースのプロファイルで動作するように設計されており、データ ストリームではなく、センサーの監視に適しています。LE ではカスタム プロトコル用に追加の L2CAP ストリームを開くことができますが、Apple の CoreBluetooth ではそのためのアクセスが提供されていません。

于 2012-09-08T05:46:36.567 に答える
2

bluetooth.org の「Immediate Alert Service」uuid=1802 と特性 uuid=2A06 を property=write_no_response で使用して、iPhone から周辺機器に 1 バイトの値を送信できます。ペリフェラル デバイスは、送信されたデータに基づいて動作するようにプログラムする必要があります。たとえば、iPhone アプリのボタンを使用して、周辺機器で 1 つまたは複数のポート ピンをオンまたはオフにする 16 進アドレスを送信することができます。これはアラート サービスを意図したとおりに使用していませんが、周辺機器へのデータ転送を簡単にテストする方法を提供します。同じプロセスを使用して、シリアル データ ストリームと同様に順次データ バイトを送信できます。より複雑なデータ ストリームの送信はまだ試していません。write_no_response は、周辺機器がデータを受信したかどうかについてアプリにフィードバックを提供しません。

IOS TemperatureSensor.xproj は、周辺機器から温度データを読み取るためのコードの例です。OSX HealthThermometerClient.xproj には、やや複雑な体温計のデータ構造をデコードするために必要なコードが含まれています。IOS TI-BLE-Demo.xproj TIBLECBKeyfob.m には、周辺機器から温度やバッテリー レベルを読み取るなど、特性値を読み書きするためのコードが含まれています。

于 2012-10-13T02:12:06.513 に答える