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;
}