1

LinuxでBluetoothスタックを管理するためにBlueZライブラリを使用しています。UUID がわかっている特定のサービスに接続するソケットを開こうとしています。ここの例に従って、サーバーとクライアントの間でソケットを開くことに成功しました。

http://people.csail.mit.edu/albert/bluez-intro/c404.html

リモートホストでサービスを探索する方法も説明されています。ただし、ソケットの接続中にUUIDを指定する方法がわかりません。これは、Android ライブラリを使用する場合と同様に、他のコンテキストでは非常に単純なことです。ただし、BlueZ では、Web 上で例を見つけられませんでした。

助けてくれてありがとう!

ステファノ

-- 返信にいくつかの詳細を追加しました...それが正しいかどうかわかりません。そうでない場合は、申し訳ありません


ご協力いただきありがとうございます!

私の投稿では、次の場所にある createRfcommSocketToServiceRecord のような関数を念頭に置いていたので、指定された UUID でソケットを接続したいと言いました。

http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#createRfcommSocketToServiceRecord%28java.util.UUID%29

特定のUUIDを指定してソケットを返します。クライアントとサーバーの 2 つのソフトウェアを開発しています。したがって、これは私が作成しているサービスであり、標準的なものではありません。指定された UUID を持つサーバー上でそのようなサービスを公開しており、クライアントからそれに接続したいと考えています。Androidプラットフォームでは、前述のcreateRfcommSocketToServiceRecordメソッドを利用して、適切なサービスでサーバーに接続できるため、サーバーは正常に動作しています。

あなたが投稿した例も非常に明確ですが、残念ながらそれは Python ですが、(指摘するのを忘れていました) C ライブラリとして Bluez を使用しています。SDP を悪用して、リモート サーバー上のサービスを検査できます。しかし、ソケットをセットアップするとき、ポートを指定する方法がわかりません。私は rc_channel について考えましたが、私が理解している限り、それは Bluetooth チャネル (1 から 11 までの範囲、または類似のもの) です。クライアントでソケットを作成するときにポートを指定できる場所を教えてください。そして、sdp が扱っている複雑な構造の中で正しいポートをどこで見つけることができますか? -- 言及:

http://people.csail.mit.edu/albert/bluez-intro/x604.html

助けてくれてありがとう!

4

1 に答える 1

1

UUID でソケットを接続しません。ソケットを使用してリモート デバイスに接続し、その SDP を参照して提供される UUID を検出し、それをソケット ポートにマップします。BlueZ http://people.csail.mit.edu/albert/bluez-intro/x290.html上の Python ラッパーである PyBluez を使用したこのプロセスの例を次に示します。

于 2012-05-31T17:11:28.240 に答える