【发布时间】:2022-01-07 17:09:30
【问题描述】:
我找到了我要连接的设备的正确蓝牙地址。当我运行下面的代码时,它会打印“连接到设备...”,但随后挂起并且从不打印“已连接”或完成运行。不会抛出任何错误。
import asyncio
from bleak import BleakClient
address = "24:71:89:cc:09:05" # Replaced with actual bluetooth address
async def main(address):
print("Connecting to device...")
async with BleakClient(address) as client:
print("Connected")
asyncio.run(main(address))
此问题与我的 PC 软件/驱动程序有关吗?我在一台运行 Windows 11 的联想笔记本电脑上。
或者,某些设备不会响应简单的“连接请求”吗?我要连接的设备是特斯拉 Model 3,我知道我应该发送一组特定的数据进行身份验证。如果是这种情况,如何在不连接BleakClient的情况下发送数据?
更新:我应该提一下,通过 Bleak 扫描/发现设备可以正常工作。而且,我尝试通过 Bleak 连接到其他设备,并发生了同样的问题。不过,通过 Windows 设置应用程序的蓝牙工作正常。
【问题讨论】:
-
您还没有说您是否已经完成了PC和汽车的“蓝牙配对”。我怀疑在允许连接之前需要这样做。您可能还想使用通用的低功耗蓝牙扫描和探索工具,如nRF Connect 进行测试。如果您的 PC 上有 Chrome 浏览器,您可以使用 URL
chrome://bluetooth-internals/#devices进行测试 -
@ukBaz 这就是问题所在!我使用 Microsoft 的 UWP BLE Sample 配对,然后 Bleak 能够连接。你知道有没有办法直接在 Bleak 中进行配对?
-
Bleak 在已发布的库中似乎没有配对代理。看起来他们可能在
develop分支中开始了某些事情。但是,鉴于配对是一次性设置活动,它有那么重要吗?现在你已经完成了两台机器之间的配对,从现在开始你应该可以很好地与 Bleak 连接了。
标签: python bluetooth-lowenergy tesla