如何在彼此不认识的情况下通过蓝牙连接两个设备

时间:2021-02-17 17:09:57

标签: python android bluetooth raspberry-pi

我正在编写一个在树莓派上运行的 python 脚本。 Android 应用需要能够通过蓝牙连接到树莓派并向其发送一些数据。

我不知道如何连接它们,因为服务器 (pi) 不知道 android 的名称,客户端(应用程序)也不知道 raspberry pi 的地址和端口。蓝牙连接有没有干净的解决方案?

这是当前的服务器代码。当前的解决方案是让服务器在特定端口上运行,但这似乎不太干净,因为 mac 地址/端口可能每次都不同。

import bluetooth

    hostMACAdress = '' # need to fill this in
    port = 3
    backlog = 1
    size = 1024
    socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    socket.bind((hostMACAdress, port))
        socket.listen(backlog)
        
try:
    client, clientInfo = socket.accept()
    while True:
        data = client.recv(size)
        if data:
            print(data)
            client.send(data) # Echo

1 个答案:

答案 0 :(得分:1)

您在 RPi 上的脚本中的主机 MAC 地址将是 RPi 的地址。您必须声明一个端口,但许多 Android 应用程序例如Serial Bluetooth Terminal 将搜索端口。

您需要先将 RPi 和 Android 手机配对。有一个很好的程序:https://bluedot.readthedocs.io/en/latest/pairpiandroid.html

最新版本的 RPi 操作系统存在一个问题,其中 PulseAudio 可以使用 RFCOMM 串行端口配置文件 (SPP),因此如果 PulseAudio 抱怨 rfcomm 已在使用中,您可能必须停止它。

最后,您不需要使用 bluetooth 依赖项。它可以使用标准的 Python 套接字库来完成。更多详情请访问:https://blog.kevindoran.co/bluetooth-programming-with-python-3/