6. 连接状态查询与故障排查
📋 目录
6.1 连接状态
python
if controller.is_connected():
status = controller.loop()
else:
print("未连接,请调用 connect()")断开时调用 controller.disconnect(),并释放串口供其他程序使用。
6.2 串口与权限
| 现象 | 处理 |
|---|---|
LinuxPermission denied | sudo usermod -aG dialout $USER 后重新登录 |
| 找不到设备 | ls /dev/ttyACM* / Windows 设备管理器查看 COM 口 |
Device or resource busy | 关闭 AirHandViewer、旧示例或其它占用串口的进程 |
6.3 Modbus 读数失败
- 确认波特率与固件一致(常用
115200或500000)。 - 适当增大
SerialInterface.timeout(如0.01)。 loop()返回None时可用get_last_status()取上一帧有效数据。
6.4 LRA 相关问题
| 现象 | 可能原因 | 建议 |
|---|---|---|
play_lra 返回 True 但无振动 | 固件 LRA 任务未就绪或消息队列未满 | 刷写含lra_message_buffer_preinit 的 V2 固件 |
| 连接后第一次 LRA 无效 | 早期固件 MessageBuffer 创建过晚 | 同上,升级固件 |
| 停止后仍有微弱振动 | mode=0 未清零增益 | 升级固件(PLAY_GAIN 归零修复) |
Write timeout | MCU 忙于 I2C | 降低下发频率;使用 SDK 默认写超时 |
| 强度“很大” | 误将mode 当振幅 | mode 选波形,amplitude 用 1–64 试探 |
停止所有指马达:
python
ctrl.play_lra([0, 0, 0, 0, 0], [0, 0, 0, 0, 0])6.5 离线 Wheel 安装失败
- 错误
is not a supported wheel on this platform:在目标架构上重新执行package_offline_wheel.py,或指定正确的--plat-name。 - 缺少 URDF / 配置:确认安装的是离线构建产物,而非纯
pip install -e .的开发树。
6.6 导入错误
ImportError: cannot import name 'play_lra'说明加载了旧版已安装的 psi_glove_sdk。处理:
bash
pip uninstall psi-glove psi-air-glove psi_glove_sdk # 视已安装包名而定
cd psi-air-glove-SDK/psi-air-glove-SDK/python_sdk && pip install -e .