本节聚焦 错误检测与事件回调,包括:
get_hardware_error_coderegister_hardware_error_event_callbackget_hardware_error_codeget_hardware_error_code() 用于查询当前设备硬件错误状态:
from dexcelbot_apexhand_sdk import DexcelBot, ErrorCode
bot = DexcelBot()
# 省略 connect() ...
code = bot.get_hardware_error_code()
if code == ErrorCode.ERROR_CODE_OK:
print("当前无硬件错误")
elif code == ErrorCode.ERROR_CODE_OTHER_ERROR:
print("检测到硬件错误,详见错误事件回调或日志")
else:
print("get_hardware_error_code 调用失败,错误码:", code)
说明:
ERROR_CODE_OK:表示当前未检测到硬件错误。ERROR_CODE_OTHER_ERROR:表示检测到某种硬件错误,具体信息可通过事件回调或日志中获取。from dexcelbot_apexhand_sdk import (
DexcelBot,
HardwareErrorCodes,
ErrorCode,
)
bot = DexcelBot()
# 省略 connect() ...
def on_hardware_error(err: HardwareErrorCodes):
# 这里的 err 为 SDK 定义的错误码集合结构体
print("设备错误码:", err.device_error)
print("各手指错误码:", err.finger_errors)
result = bot.register_hardware_error_event_callback(on_hardware_error)
if result != ErrorCode.ERROR_CODE_OK:
raise RuntimeError("注册硬件错误事件回调失败")
# ... 运行任务 ...
bot.unregister_hardware_error_event_callback()
在底层检测到硬件错误(例如电机过流、传感器异常等)时,SDK 会自动触发回调,将 HardwareErrorCodes 结构体传入。
HardwareErrorCodes的具体字段由底层 SDK 定义,你可以在 Python 交互环境中通过help(HardwareErrorCodes)或dir(HardwareErrorCodes())查看。
一个常见实践是同时:
from dexcelbot_apexhand_sdk import (
DexcelBot,
MotorStates,
HardwareErrorCodes,
ErrorCode,
)
bot = DexcelBot()
# 省略 connect() ...
def on_motor_states(states: MotorStates):
for m in states.motors:
if m.temperature > 70.0:
print("[软监控] 电机过热:", m.motor_id, m.temperature)
def on_hardware_error(err: HardwareErrorCodes):
print("[固件错误] 设备错误码:", err.device_error)
print("[固件错误] 手指错误码:", err.finger_errors)
bot.register_motor_states_callback(on_motor_states, freq_hz=20)
bot.register_hardware_error_event_callback(on_hardware_error)
# ... 运行任务 ...
bot.unregister_motor_states_callback()
bot.unregister_hardware_error_event_callback()
from dexcelbot_apexhand_sdk import DexcelBot, ErrorCode
bot = DexcelBot()
result = bot.set_log_path("./logs")
if result != ErrorCode.ERROR_CODE_OK:
print("设置日志路径失败:", result)
else:
print("日志将输出到 ./logs 目录")
注意:
from dexcelbot_apexhand_sdk import DexcelBot
bot = DexcelBot()
bot.enable_logging(True) # 打开日志
# ... 运行任务 ...
bot.enable_logging(False) # 若不再需要,可关闭
当检测到错误时,推荐遵循如下流程:
move_joint / 伺服控制回调)。get_hardware_error_code() 确认错误状态。clean_faults() 清除故障。from dexcelbot_apexhand_sdk import DexcelBot, ErrorCode
bot = DexcelBot()
code = bot.get_hardware_error_code()
if code == ErrorCode.ERROR_CODE_OTHER_ERROR:
print("检测到硬件错误,尝试清除故障...")
clr = bot.clean_faults()
if clr == ErrorCode.ERROR_CODE_OK:
print("故障清除成功,可以根据需要重新配置限幅后再尝试任务。")
else:
print("清除故障失败,建议停止使用并导出日志进行排查。")
通过本节你可以构建较为完备的错误检测与恢复机制,结合前几节的控制与状态接口,可以在实际项目中实现稳定、安全的 ApexHand 控制程序。