Установить соединение Bluetooth между приложением J2ME и настольным приложением, написанным на Python (предпочтительно с использованием pybluez)?

Я пытаюсь установить соединение Bluetooth между моим приложением J2ME (используя API-интерфейс JSR-082) и настольным приложением, написанным на Python (используя API-интерфейс pybluez bluetooth). Однако я не смог найти подходящих протоколов связи Bluetooth для их сопряжения.

В pybluez способ подключения к серверу выглядит следующим образом:

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

Однако в API-интерфейсе Bluetooth JSR-082 способ создания сервера выглядит следующим образом:

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();

В API Pybluez мы используем номера портов, а в API JSR-082 мы используем URL-адреса. Как я собираюсь установить соединение Bluetooth тогда? Есть ли способ создать сервер, используя номер порта в API JSR-082?

1 ответ

Используя JSR-82, вы создаете сервер на основе UUID. Вам необходимо выполнить поиск SDP, чтобы определить "порт" (фактически, номер канала для RFCOMM или PSM для L2CAP) удаленной службы. Итак, в Pybluez, вы бы позвонили bluetooth.find_service() (как показано здесь), проверьте каждую из возвращенных служб и выберите одну с соответствующим UUID ("идентификатор службы" в bluez).

Другие вопросы по тегам