在J2ME应用和使用Python(优选pybluez)编写的桌面应用之间建立蓝牙连接?

1 投票
1 回答
1197 浏览
提问于 2025-04-16 03:19

我正在尝试在我的J2ME应用程序(使用JSR-082 API)和用Python编写的桌面应用程序(使用pybluez蓝牙API)之间建立蓝牙连接。不过,我找不到合适的蓝牙通信协议来让它们配对。

在pybluez中,连接到服务器的方式如下:

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

但是在JSR-082蓝牙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。那么,我该如何建立蓝牙连接呢?在JSR-082 API中有没有办法使用端口号来创建服务器?

1 个回答

1

使用JSR-82,你可以根据一个UUID来创建一个服务器。接下来,你需要进行SDP搜索,以确定远程服务的“端口”(实际上是RFCOMM的通道号或L2CAP的PSM)。在pybluez中,你可以调用 bluetooth.find_service() (具体示例可以在这里找到),然后查看返回的每个服务,选择一个UUID匹配的服务(在bluez中称为“service-id”)。

撰写回答