3.3 AlarmClient 报警类
概述
AlarmClient 负责活动报警查询与报警复位。在 Arm 完成连接后,通过 arm.alarmClient 获取 Alarm 实例,无需单独初始化。
LanguageType 用于 GetAllActiveAlarms() 的列表查询语言; RobotAlarm 表示一条报警详情。如果当前没有活动报警,查询接口会返回空列表或字段为空的 RobotAlarm 。
3.3.1 复位报警
cpp
Reset() -> STATUS_CODE| 项 | 说明 |
|---|---|
| 描述 | 下发报警 / 伺服复位命令,常用于故障处理后的报警复位 |
| 请求参数 | 无参数 |
| 返回值 | STATUS_CODE: 函数执行结果 |
| 备注 | 仅在确认需要复位报警时执行;如果故障条件仍然存在,报警可能继续保持或再次出现 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
3.3.2 获取全部活动报警
cpp
GetAllActiveAlarms(LanguageType language = LanguageType::Chinese) -> std::pair<std::vector<RobotAlarm>, STATUS_CODE>| 项 | 说明 |
|---|---|
| 描述 | 获取当前全部活动报警列表 |
| 请求参数 | language : LanguageType 报警列表请求语言,默认 Chinese ,可选 English |
| 返回值 | std::vector<RobotAlarm> : 活动报警列表 STATUS_CODE: 函数执行结果 |
| 备注 | SDK 保留服务端返回顺序;如果服务端返回空结果,列表为空且状态码为 OK |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
3.3.3 获取最高优先级报警
cpp
GetTopAlarm() -> std::pair<RobotAlarm, STATUS_CODE>| 项 | 说明 |
|---|---|
| 描述 | 获取当前最高优先级报警 |
| 请求参数 | 无参数 |
| 返回值 | RobotAlarm: 最高优先级报警信息 STATUS_CODE: 函数执行结果 |
| 备注 | 如果当前无活动报警,返回的 RobotAlarm 将为空值 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
RobotAlarm 结构说明
| 字段 | 类型 | 说明 |
|---|---|---|
user_code | std::string | 用户可读报警码 |
inner_code | std::string | 控制器侧内部报警码 |
name | std::string | 报警名称 |
reason | std::string | 报警原因 |
suggest | std::string | 建议处理方式 |
consequence | std::string | 报警可能造成的影响 |
ext_desc | std::string | 扩展描述 |
最小调用示例
示例代码
cpp
#include <iostream>
#include <vector>
#include "arm_api.h"
#include "status_code.h"
#include "query_active_alarms/run.h"
/**
* 查询全部活动报警门面。
* @return 0 表示成功,否则返回 1。
*/
int RunAlarmQueryQueryActiveAlarms(void)
{
// [ZH] 连接机器人,请直接修改下面的魔鬼字符串。
// [EN] Connect to the robot and edit the hard-coded magic strings below directly.
Arm arm;
STATUS_CODE connectRet = arm.Connect("10.27.1.2", "10.27.1.102");
if (connectRet != STATUS_CODE::OK) {
std::cerr << "[cpp17_alarm] 连接机器人失败 / Connect to the robot failed, 状态码 / Status code: "
<< static_cast<int>(connectRet) << "\n";
return 1;
}
std::cout << "[cpp17_alarm] 机器人连接成功 / Robot connected successfully\n";
// [ZH] 获取全部活动报警。
// [EN] Get all active alarms.
std::pair<std::vector<RobotAlarm>, STATUS_CODE> alarmPair = arm.alarmClient.GetAllActiveAlarms(LanguageType::Chinese);
std::cout << "[cpp17_alarm] GetAllActiveAlarms 状态码 / GetAllActiveAlarms status code: "
<< static_cast<int>(alarmPair.second) << "\n";
std::cout << "[cpp17_alarm] 活动报警数量 / Active alarm count: "
<< alarmPair.first.size() << "\n";
for (size_t index = 0; index < alarmPair.first.size() && index < 3U; ++index) {
std::cout << "[cpp17_alarm] 活动报警 / Active alarm #" << index
<< ": user_code=" << alarmPair.first[index].user_code
<< ", name=" << alarmPair.first[index].name << "\n";
}
// [ZH] 断开连接,结束示例。
// [EN] Disconnect and finish the example.
arm.Disconnect();
std::cout << "[cpp17_alarm] 示例结束 / Example finished\n";
return 0;
}cpp
#include <iostream>
#include "arm_api.h"
#include "status_code.h"
#include "reset_alarm/run.h"
/**
* 报警复位门面。
* @return 0 表示成功,否则返回 1。
*/
int RunAlarmQueryResetAlarm(void)
{
// [ZH] 连接机器人,请直接修改下面的魔鬼字符串。
// [EN] Connect to the robot and edit the hard-coded magic strings below directly.
Arm arm;
STATUS_CODE connectRet = arm.Connect("10.27.1.2", "10.27.1.102");
if (connectRet != STATUS_CODE::OK) {
std::cerr << "[cpp17_alarm] 连接机器人失败 / Connect to the robot failed, 状态码 / Status code: "
<< static_cast<int>(connectRet) << "\n";
return 1;
}
std::cout << "[cpp17_alarm] 机器人连接成功 / Robot connected successfully\n";
// [ZH] 直接执行报警复位接口。
// [EN] Execute the alarm reset API directly.
STATUS_CODE resetRet = arm.alarmClient.Reset();
std::cout << "[cpp17_alarm] Reset 状态码 / Reset status code: "
<< static_cast<int>(resetRet) << "\n";
// [ZH] 断开连接,结束示例。
// [EN] Disconnect and finish the example.
arm.Disconnect();
std::cout << "[cpp17_alarm] 示例结束 / Example finished\n";
return 0;
}