连接本地蓝牙

Connect to local bluetooth

我在 python 中使用 pybluez 在 linux 上开发蓝牙应用程序。我想知道是否可以连接到 "localhost" 用于蓝牙,这样我就可以 运行 同一台机器上的客户端和服务器(就像大多数人为 Web 开发所做的那样)。

如果这不可能,大多数人如何开发蓝牙应用程序?他们只是 运行 不同设备上的客户端和服务器,还是有更聪明的方法来处理这个问题?

最终服务器将 运行 在 raspberry pi 上,客户端将是任何支持蓝牙的设备(手机 phone、笔记本电脑等),但在开发过程中会很棒如果我可以 运行 在同一台机器上。

这是我的服务器:

import bluetooth as bt

socket = bt.BluetoothSocket(bt.RFCOMM)

host = ""
socket.bind((host, bt.PORT_ANY))
port = socket.getsockname()[1]
print("port: " + str(port))
socket.listen(1)

uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee"
# bt.advertise_service(socket, "BTServer", uuid)

print("Listening on " + host + ":" + str(port))

client_sock, addr = socket.accept()
print("Connection accepted from " + addr)

data = client_sock.recv(1024)
print(data)

client_sock.close()
socket.close()

当我在客户端上调用 services = bt.find_service(name=None, uuid=None, address="localhost") 时,它找不到任何服务。

通过进一步研究,我发现无法在具有相同蓝牙适配器的同一设备上 运行 蓝牙客户端和服务器。对于本地测试,您可以使用两台启用蓝牙的计算机或获得一个蓝牙加密狗。

无法在同一设备上 运行 蓝牙客户端和服务器。 我使用了 pybluez python 模块。 当我在我机器上的客户端代码中 运行 bluetooth.discover_devices(lookup_names=True) 时,它 returns 它周围所有其他蓝牙设备除了我的机器。

由于我们无法发现该机器,因此我们无法通过蓝牙连接到它,也无法将其用作蓝牙服务器。