工具 | 客户端要求 | 蓝牙适配器要求 | 其他 |
---|---|---|---|
pybluez | Windows、Linux | >= 4.0 | win不支持BLE功能,需要安装其他依赖库 |
pybluez2 | Windows、Linux | >= 4.0 | win不支持BLE功能 |
pygatt | Windows、Linux | 指定蓝牙适配器BLED112 Bluetooth Smart Dongle | 不适合通用蓝牙适配器 |
bleak | Windows、Linux | >=4.0 | 真牛逼,有些款的BLE可以实现使用通用的蓝牙适配器来建立通信。已经很好了 |
WCH | Windows、Linux和macOS | >=4.0 | 一种动态链接库,功能不错,不太会使用,希望官网能出个教程,未测试他的性能,我只用来监测是否打开蓝牙。 |
from bleak import BleakScanner
import asyncio
已发现设备 = set()
def 广告数据回调(设备, 广告数据):
名称 = 设备.name
地址 = 设备.address
信号强度 = 广告数据.rssi
# 检查设备是否已经存在于已发现设备列表中
设备标识 = (名称, 地址)
if 设备标识 not in 已发现设备:
已发现设备.add(设备标识)
# 输出设备信息
print(f"设备名称: {名称}")
print(f"设备地址: {地址}")
print(f"信号强度 (RSSI): {信号强度} dBm")
print("-------------")
async def 扫描ble设备():
# 开始扫描蓝牙设备,并使用回调函数获取广告数据
扫描对象 = BleakScanner(detection_callback=广告数据回调)
await 扫描对象.start()
await asyncio.sleep(15) # 扫描持续n秒钟
await 扫描对象.stop()
def 主程序():
# 异步运行扫描蓝牙设备的任务
asyncio.run(扫描ble设备())
if __name__ == "__main__":
主程序()
发表评论 取消回复