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

发布于 2024-09-15 17:55:49 字数 965 浏览 5 评论 0原文

我正在尝试在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

宁愿没拥抱 2024-09-22 17:55:49

使用 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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文