在 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 中的端口号创建服务器?
I am trying to establish a bluetooth connection between my J2ME application (using JSR-082 API) and my desktop application written with Python (using pybluez bluetooth API). However, I could not find a suitable bluetooth communication protocols to pair them.
In pybluez, the way you connect to a server is as follows:
addr, port = "01:23:45:67:89:AB", 1
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((addr, port))
However in JSR-082 bluetooth API, the way you create a server is as follows:
StreamConnectionNotifier connectionNotifier =
(StreamConnectionNotifier) Connector.open("btspp://localhost:" +
"0000000000000000000000000000ABCD;name=JSR82_ExampleService");
streamConnection = connectionNotifier.acceptAndOpen();
or as follows:
L2CAPConnectionNotifier connectionNotifier =
(L2CAPConnectionNotifier) Connector.open("btl2cap://localhost:" +
"0000000000000000000000000000ABCD;name=JSR82_ExampleService");
streamConnection = connectionNotifier.acceptAndOpen();
In pybluez API we use port numbers, and in JSR-082 API we use URLs. How am I going to establish a bluetooth connection then? Is there a way to create a server using a port number in JSR-082 API?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 JSR-82,您可以基于 UUID 创建服务器。您需要执行SDP搜索来确定远程服务的“端口”(实际上是RFCOMM的通道号或L2CAP的PSM)。因此,在 pybluez 中,您可以调用
bluetooth.find_service()
(如图所示 此处),检查返回的每一项服务,并选择具有匹配 UUID(bluez 中的“service-id”)的服务。Using JSR-82, you create a server based on a UUID. You need to perform an SDP search to determine the "port" (actually, channel number for RFCOMM or PSM for L2CAP) of the remote service. So, in pybluez, you'd call
bluetooth.find_service()
(as shown here), examine each of the services returned, and pick the one with a matching UUID ("service-id" in bluez).