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

Bleak客户端向E104-BT02 BLE模块发送字节无响应问题求助

Bleak向E104-BT02发送数据失败排查方案
  • 先修复代码中明显的语法问题
    你代码中print(res)的res变量未做任何定义,运行时会直接触发NameError,如果上层有异常捕获逻辑吞了报错,就会出现看起来代码运行正常但写入未执行的情况,直接删除这行即可。
  • 明确指定GATT特征写入模式
    多数BLE串口模块的RX特征仅支持无响应写入,Bleak的write_gatt_char默认的写入响应策略会匹配特征声明的属性,但部分国产BLE模块的GATT属性声明与实际支持能力不匹配,手动指定写入参数:
    # 替换原有的写入代码行
    await client.write_gatt_char(UART_RX_CHAR_UUID, data, response=False)
    
    如果无响应写入无效,再尝试改为response=True测试。
  • Windows平台专属适配操作
    1. 升级Bleak到最新正式版本,旧版本Bleak在Windows 10/11上存在部分蓝牙适配器写入静默失败的兼容性问题,升级命令:pip install --upgrade bleak
    2. 提前在Windows系统蓝牙设置中完成E104-BT02的配对绑定,BLEConsole、LightBlue等工具会自动触发配对流程,但Bleak默认不会主动发起配对请求,未配对的设备可能出现读取正常但写入被系统拦截的情况。
  • 确认特征属性匹配
    连接成功后添加代码打印目标特征的支持属性,确认UUID对应特征确实支持写入:
    char = client.services.get_characteristic(UART_RX_CHAR_UUID)
    print("RX特征支持的属性:", char.properties)
    
    正常输出应包含write或write-without-response属性,否则说明特征UUID选择错误。
  • 添加入口延迟测试
    部分低功耗BLE模块处理写入请求有延迟,可在写入代码后添加短延时验证是否为发送频率过高导致丢包:
    await client.write_gatt_char(UART_RX_CHAR_UUID, data, response=False)
    await asyncio.sleep(0.1)
    

内容的提问来源于stack exchange,提问作者Dmitriy Silin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:54:08