【Bleak】二、扫描(附近全部设备)

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 上对低功耗蓝牙的扫描。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用bleak库实现循环扫描指定MAC的BLE设备的广播数据的Python代码: ```python import asyncio from bleak import discover, BleakScanner async def scan_for_device(mac_address): while True: devices = await discover() for d in devices: if d.address == mac_address: print(f"Device found: {d}") print(f"Advertising data: {d.metadata['manufacturer_data']}\n") async def main(mac_address): scanner = BleakScanner() scanner.register_detection_callback(lambda d: print(f"Scanned device: {d}")) scanner.start() await scan_for_device(mac_address) scanner.stop() if __name__ == "__main__": mac_address = "AA:BB:CC:DD:EE:FF" # 替换为要扫描设备的MAC地址 loop = asyncio.get_event_loop() loop.run_until_complete(main(mac_address)) ``` 在这个例子中,我们定义了一个名为`scan_for_device`的协程函数,该函数使用`discover`方法扫描周围的BLE设备,并对每个设备进行检查以查看其MAC地址是否与指定的MAC地址匹配。 如果匹配,则打印设备信息和广播数据。 接下来,我们定义了一个名为`main`的协程函数,该函数启动了一个`BleakScanner`实例,并使用`register_detection_callback`方法注册一个回调函数,以便在扫描到新设备时打印设备信息。 然后,我们调用了`scan_for_device`函数来循环扫描指定MAC的设备,并最终停止扫描。 最后,我们定义了一个`mac_address`变量,用于指定要扫描设备的MAC地址,并使用`asyncio`库运行`main`协程函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强人电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值