You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pygatt的BGAPI后端扫描BLE设备时出现BLED112串口自动检测失败错误

使用pygatt的BGAPI后端扫描BLE设备时出现BLED112串口自动检测失败错误

首先得明确这个错误的根源:你用的BGAPIBackend是专门给**Bluegiga BLED112(或兼容BGAPI协议的蓝牙适配器)**设计的——它依赖BGAPI通信协议,而Windows自带的普通蓝牙适配器根本不支持这个协议,所以pygatt自然找不到对应的串口。

下面给你两个可行的解决方向:

方向1:改用Windows原生支持的后端(推荐,无需额外硬件)

Windows 10及以上系统原生支持BLE的WinRT API,pygatt也提供了对应的WinRTBackend,完全不需要依赖特定适配器。你只需要修改代码中的后端部分即可,同时别忘了补全之前缺失的subprocess导入:

import pygatt
import subprocess
from pygatt.backends import WinRTBackend  # 替换成WinRT后端

def toggle_bluetooth(enable):
    state = 'Automatic' if enable else 'Disabled'  # 服务启动类型的有效值是Automatic/Disabled
    subprocess.run(f"powershell.exe (Get-Service bthserv).StartType='{state}'", shell=True)
    # 补充立即启停服务的命令,确保蓝牙状态即时生效
    if enable:
        subprocess.run("powershell.exe Start-Service bthserv", shell=True)
    else:
        subprocess.run("powershell.exe Stop-Service bthserv", shell=True)
    print(f"Bluetooth turned {'on' if enable else 'off'}")

def scan_ble_devices():
    adapter = WinRTBackend()
    try:
        adapter.start()
        devices = adapter.scan(timeout=10)
        for device in devices:
            print(f"Found BLE device {device['name']} with address {device['address']}")
    finally:
        adapter.stop()

# 打开蓝牙
toggle_bluetooth(True)

# 扫描BLE设备
scan_ble_devices()

方向2:继续使用BGAPIBackend(需要额外硬件)

如果你一定要用BGAPIBackend,那必须满足两个条件:

  • 购买一个Bluegiga BLED112蓝牙适配器
  • 安装适配器对应的串口驱动(通常厂商会提供配套驱动)

驱动安装完成后,你可以在Windows设备管理器的“端口(COM和LPT)”里找到适配器对应的串口(比如COM3),然后手动指定串口路径初始化后端:

adapter = BGAPIBackend(serial_port='COM3')  # 替换成你实际的串口号

这样pygatt就能准确找到适配器,不会再报自动检测失败的错误了。

备注:内容来源于stack exchange,提问作者Subzee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:08:17