Skip to content

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_codestd::string用户可读报警码
inner_codestd::string控制器侧内部报警码
namestd::string报警名称
reasonstd::string报警原因
suggeststd::string建议处理方式
consequencestd::string报警可能造成的影响
ext_descstd::string扩展描述

最小调用示例

示例代码

cpp17/alarm_query/src/query_active_alarms/run.cpp
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;
}
cpp17/alarm_query/src/reset_alarm/run.cpp
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;
}