发现设备与建立连接
连接流程由 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())连接后的只读预检
建立连接不会自动发送运动命令。连接成功后先检查:
device_info的型号、左右手分型和序列号。joint_layout的布局 ID 与关节数。firmware_info是否满足项目基线。- State 和 Health 是否存在故障。
- Touch 项目是否取得有效布局。
断线与重连
断线后关闭旧 Hand,并通过 Manager 重新连接。旧的 MotionHandle、订阅和 ServoSession 不得复用。若端口仍被旧进程占用,先使用系统工具确认持有者,不要在应用中通过反复重试掩盖资源泄漏。
完整签名见核心对象参考。