1

J2ME アプリケーション (JSR-082 API を使用) と Python で記述されたデスクトップ アプリケーション (pybluez bluetooth API を使用) の間に Bluetooth 接続を確立しようとしています。しかし、それらをペアリングするための適切な Bluetooth 通信プロトコルが見つかりませんでした。

pybluez では、サーバーに接続する方法は次のとおりです。

addr, port = "01:23:45:67:89:AB", 1
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((addr, port))

ただし、JSR-082 bluetooth API では、サーバーを作成する方法は次のとおりです。

StreamConnectionNotifier connectionNotifier =
    (StreamConnectionNotifier) Connector.open("btspp://localhost:" + 
    "0000000000000000000000000000ABCD;name=JSR82_ExampleService");
streamConnection = connectionNotifier.acceptAndOpen();

または次のように:

L2CAPConnectionNotifier connectionNotifier = 
    (L2CAPConnectionNotifier) Connector.open("btl2cap://localhost:" + 
    "0000000000000000000000000000ABCD;name=JSR82_ExampleService");
streamConnection = connectionNotifier.acceptAndOpen();

pybluez API ではポート番号を使用し、JSR-082 API では URL を使用します。では、Bluetooth 接続を確立するにはどうすればよいでしょうか。JSR-082 API でポート番号を使用してサーバーを作成する方法はありますか?

4

1 に答える 1

1

JSR-82 を使用して、UUID に基づいてサーバーを作成します。リモート サービスの「ポート」(実際には、RFCOMM のチャネル番号または L2CAP の PSM) を特定するには、SDP 検索を実行する必要があります。したがって、pybluez では、 (ここbluetooth.find_service()に示されているように) を呼び出し、返された各サービスを調べて、一致する UUID (bluez の「service-id」) を持つサービスを選択します。

于 2011-01-04T05:34:08.020 に答える