이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.
최신 버전 정보는 1.33.5에서 확인하세요.
TOnMonitoringStateCB
이 콜백 함수로 로봇 컨트롤러의 운용 상태 변화를 확인합니다.
콜백 함수 규칙을 참고하세요.
정의 위치: DRFLEx.h
typedef void (*TOnMonitoringStateCB)(const ROBOT_STATE);
void set_on_monitoring_state(TOnMonitoringStateCB pCallbackFunc)
{
_set_on_monitoring_state(_rbtCtrl, pCallbackFunc);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
eState |
열거형 정의를 참고하세요. |
반환값
없음
예제
#include "DRFLEx.h"
#include <atomic>
#include <chrono>
#include <cstdio>
#include <thread>
using namespace DRAFramework;
std::atomic<bool> g_bNeedServoOn(false);
// 콜백 함수: 로봇의 운용 상태가 바뀔 때마다 호출됩니다
void OnMonitoringStateCB(const ROBOT_STATE eState)
{
switch ((unsigned char)eState)
{
case STATE_SAFE_OFF:
printf("[STATE] SAFE OFF detected. Servo on is requested from the main loop.\n");
g_bNeedServoOn = true;
break;
case STATE_STANDBY:
printf("[STATE] Robot is now standby and ready.\n");
break;
case STATE_MOVING:
printf("[STATE] Robot is executing motion.\n");
break;
case STATE_SAFE_STOP:
printf("[STATE] Robot is in safe stop.\n");
break;
default:
printf("[STATE] Unknown or transitional state: %d\n", eState);
break;
}
}
int main()
{
CDRFLEx drfl;
// 로봇 컨트롤러에 연결
drfl.open_connection("192.168.137.100");
// 로봇 상태 모니터링 콜백 함수 등록
drfl.set_on_monitoring_state(OnMonitoringStateCB);
// 상태 전환을 관찰하도록 프로그램 실행 유지
while (true)
{
// set_robot_control은 콜백 함수 밖에서 호출
if (g_bNeedServoOn)
{
g_bNeedServoOn = false;
drfl.set_robot_control(CONTROL_SERVO_ON);
}
std::this_thread::sleep_for(std::chrono::seconds(1));
}
drfl.close_connection();
return 0;
}
참고
로봇 상태가 전환될 때마다 컨트롤러가 이 콜백을 자동으로 호출합니다.
주로 STATE_SAFE_OFF 이후 서보 켜기, 상태 변화 기록, GUI 표시기 갱신에 사용합니다.
set_robot_control은 콜백 밖에서 호출하세요.