在J2ME应用和使用Python(优选pybluez)编写的桌面应用之间建立蓝牙连接?
我正在尝试在我的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”)。