Skip to content

发现设备与建立连接

连接流程由 Manager 统一管理。应用不要自行缓存底层串口句柄,也不要在多个 Hand 之间重复打开同一总线。

选择连接方式

条件建议入口
单手、端口未知connect_auto()
端口或设备 ID 已知connect_auto() 传入筛选参数
需要先展示候选设备discover() 后连接选中设备
多手或多端口一个 Manager 管理多个 Hand

自动发现会探测候选接口,速度受端口数量、协议和波特率范围影响。生产部署应保存已经确认的端口别名、协议和设备 ID,减少无关探测。

Python 生命周期

python
import asyncio

from bc_revo3_sdk import main_mod as sdk


async def main():
    manager = sdk.Manager()
    hand = None
    try:
        hand = await manager.connect_auto(port="/dev/ttyUSB0", slave_id=127)
        info = hand.device_info
        layout = hand.joint_layout
        if info is None or layout is None:
            raise RuntimeError("Device metadata is unavailable")
        print(info.serial_number, layout.layout_id, layout.joint_count)
    finally:
        if hand is not None:
            await hand.close()
        await manager.close()


asyncio.run(main())

连接后的只读预检

建立连接不会自动发送运动命令。连接成功后先检查:

  1. device_info 的型号、左右手分型和序列号。
  2. joint_layout 的布局 ID 与关节数。
  3. firmware_info 是否满足项目基线。
  4. State 和 Health 是否存在故障。
  5. Touch 项目是否取得有效布局。

断线与重连

断线后关闭旧 Hand,并通过 Manager 重新连接。旧的 MotionHandle、订阅和 ServoSession 不得复用。若端口仍被旧进程占用,先使用系统工具确认持有者,不要在应用中通过反复重试掩盖资源泄漏。

完整签名见核心对象参考

帮助