Skip to content

3.3 AlarmClient 알람 클래스

개요

AlarmClient 은 활성 알람 조회와 알람 리셋을 담당합니다. Arm 연결이 완료된 뒤 arm.alarmClient 을 통해 Alarm 인스턴스를 가져오며, 별도 초기화는 필요하지 않습니다.

LanguageTypeGetAllActiveAlarms() 의 목록 조회 언어에 사용되며, 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;
}