1. 前言
本文我们将源码里面的例子 discover.py 来做介绍,里面的内容是扫描周围的低功耗蓝牙设备。
例子命名其实和作用是没有对齐的,"discover"一般意思是发现服务,但里面的内容其实是充当一个扫描者。
2. 手机模拟设备广播
首先我们在手机上模拟一个名为"da bai"的心率带设备,然后运行例子看看能不能扫描到,方法请看nRF Connect。
3. 源码解析
可以看到例子中在一个协程里运行了 Bleak 的 discover 接口。
"""
Scan/Discovery
--------------
Example showing how to scan for BLE devices.
Updated on 2019-03-25 by hbldh <henrik.blidh@nedomkull.com>
"""
import asyncio
from bleak import discover
async def main():
devices = await discover(timeout=5.0)
for d in devices:
print(d)
if __name__ == "__main__":
asyncio.run(main())
4. 运行结果
可以搜索到刚刚模拟的"da bai"设备,地址可以显示出来 4A:2B:79:ED:78:24 。
34:29:EF:21:98:29: U-AC9828
44:1B:B0:98:7B:A2: Xiaomi Inc. (b'\x19\x11\x10\x17A"46e3\x15&\x08\x08W\x01\x03\x04\x83\x0b')
25:1E:84:14:DC:C9: Microsoft (b'\x01\t \x02\x01c\x83m\xf3\xbd\xc5\x13\n\xe5/<\xa9\x03Q\x1fE\xfc\x07Q\xe9\x0f\xc6')
7D:02:1C:F1:91:C0: Unknown
4A:2B:79:ED:78:24: da bai
5. 写在最后
不积跬步无以至千里,不积小流无以成江海。今天我们学会了 Windows 上对低功耗蓝牙的扫描。