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

使用Python Bleak获取BLE魔方通知失败的技术求助

解决GoCube BLE通知无响应问题

核心问题

你的代码在调用start_notify后立刻执行disconnect,程序直接退出,根本没留时间接收魔方的通知数据。另外,GoCube需要先接收特定指令,才会主动上报转动状态。

修复后代码示例

结合GoCube的协议逻辑,需要做两点调整:保持连接以接收通知,发送指令触发魔方上报数据。

import asyncio
from bleak import BleakClient

address = "E0:F4:65:59:81:EF"
MODEL_NBR_UUID = "00002a00-0000-1000-8000-00805f9b34fb"
# GoCube UART服务特征:TX收数据,RX发指令
UART_TX_UUID = "6e400003-b5a3-f393-e0a9-e50e24dcca9e"
UART_RX_UUID = "6e400002-b5a3-f393-e0a9-e50e24dcca9e"

async def cube_update(sender, data):
    print(f"原始上报数据: {data.hex()}")
    # 根据GoCube协议解析转动动作(示例逻辑,需按协议完善)
    if len(data) >= 3:
        face_code = data[1]
        dir_code = data[2]
        face_map = {1: "U", 2: "R", 3: "F", 4: "D", 5: "L", 6: "B"}
        dir_map = {0: "", 1: "'", 2: "2"}
        move = f"{face_map.get(face_code, '?')}{dir_map.get(dir_code, '')}"
        print(f"解析转动动作: {move}")

async def main(address):
    client = BleakClient(address)
    try:
        await client.connect()
        model_number = await client.read_gatt_char(MODEL_NBR_UUID)
        print(f"Model Number: {''.join(map(chr, model_number))}")

        # 启动通知监听
        await client.start_notify(UART_TX_UUID, cube_update)
        # 发送指令让魔方开启状态上报(协议规定的启动指令)
        await client.write_gatt_char(UART_RX_UUID, bytearray([0x01, 0x01]), response=True)
        
        # 保持连接,持续接收数据(可根据需求修改退出逻辑,比如监听键盘输入)
        print("等待魔方转动数据...")
        while True:
            await asyncio.sleep(1)

    except Exception as e:
        print(f"错误信息: {e}")
    finally:
        await client.disconnect()

asyncio.run(main(address))

关键说明

  1. 保持连接:用while True + asyncio.sleep让程序持续运行,避免立即断开连接。你也可以替换成更优雅的退出逻辑,比如监听Ctrl+C中断。
  2. 触发指令:必须向魔方的RX特征写入启动上报的指令,它才会主动发送转动数据,示例中的0x01 0x01是协议规定的基础启动指令。
  3. 数据解析:cube_update里的解析逻辑需要根据GoCube的协议细节完善,确保能把原始字节数据转换成U、R'这类标准魔方转动符号。

额外排查项

  • 确认系统BLE权限:比如Linux下要确保当前用户有权限访问BLE设备。
  • 核对特征UUID:再次确认UART服务的TX/RX UUID与魔方实际提供的一致。

内容的提问来源于stack exchange,提问作者Beautiful Blobfish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:43:14