0

ブルートゥース SPP プロファイルを介してターゲットをモバイル デバイスに接続しようとしています。Bluetooth 接続が確立されると、通信するための rfcomm チャネルを作成するように要求されます。

output of 
ls -all /dev/rfcomm0
crw-rw-rw-    1 root     dialout   216,   0 Jan  1 00:02 /dev/rfcomm0

rfcomm デバイスが作成されたら、コードでファイルを開いてデータを書き込みます。

fd = open('/dev/rfcomm0', O_RDWR | O_NOCTTY | O_SYNC);
write(write(fd, &sendBuffer[0], sendBuffer.size())

書き込み成功。rfcomm を介してデータを読み込もうとすると、コードが先に進みません。

read(fd, recvbuf, recvbuflen)

読み取りが機能していなかったので、ファイル記述子を閉じて、もう一度開いてみました。

今回は /dev/rfcomm0 を開くことができません。-1 を返します。

私に足りないところを教えてください。

また、私はこれに慣れていないので、C ++を使用したBluetooth SPPに関するドキュメントがあれば.

4

1 に答える 1

0

解決策が見つかりました。接続しようとしていたモバイルアプリケーションは、別の UUID を使用して通信しています。アプリケーション定義の UUID を使用して接続を開始すると、データを適切に読み書きできます。

しかし、まだ 1 つのクエリがあります。Bluetooth 仕様では、プロファイルの UUID が定義されています。

For SPP it is 0x0003.

私の使用例では、ナビゲーション デバイスは SPP プロファイルを使用して Android アプリケーションと通信しますが、0x0003 以外の UUID を使用します。

これは、Android アプリケーションが、SPP 経由で通信するために仕様で言及されているもの以外の任意の一意の UUID をランダムに選択できることを意味しますか?

于 2016-03-04T10:20:54.437 に答える