set_on_rt_log_alarm
이 함수는 컨트롤러가 RT 세션에 대해 보내는 메시지를 처리할 콜백을 등록합니다. 이러한 메시지에는 지원하지 않는 버전, 설정한 시간 안에 RT 입력을 받지 못함, 하트비트 누락, 다른 RT 클라이언트가 이미 연결됨이 있습니다.
RT 제어 중 발생한 모션 경고와 오류(거부된 RT 명령 포함)는 set_on_log_alarm으로 보고됩니다. 두 콜백을 모두 등록하세요.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
void set_on_rt_log_alarm(TOnLogAlarmCB pCallbackFunc) {
_set_on_rt_log_alarm(_rbtCtrlUDP, pCallbackFunc);
};
매개변수
매개변수 이름 |
자료형 |
설명 |
|---|---|---|
pCallbackFunc |
로봇 컨트롤러가 보낸 로그 또는 알람 메시지를 처리하는 |
참고
컨트롤러가 RT 세션 메시지를 보내면 콜백이 자동으로 실행됩니다.
콜백 함수 규칙을 참고하세요.
예제
#include <chrono>
#include <thread>
// 알람 및 로그 모니터링용 콜백 함수 정의
void OnRTLogAlarm(LPLOG_ALARM pLogAlarm) {
printf("[RT LOG/ALARM] group %d, index %d: %s\n",
pLogAlarm->_iGroup, pLogAlarm->_iIndex, pLogAlarm->_szParam[0]);
}
drfl.connect_rt_control("192.168.137.100", 12347);
// 실시간 로그 및 알람 콜백 함수 등록
drfl.set_on_rt_log_alarm(OnRTLogAlarm);
// RT 제어 설정 및 시작
string version = "v1.0";
float period = 0.001f;
int losscount = 4;
drfl.set_rt_control_input(version, period, losscount);
drfl.set_rt_control_output(version, period, losscount);
drfl.start_rt_control();
// RT 세션을 60 s 동안 유지합니다. 메시지가 도착하면 콜백 함수가 실행됩니다
const auto tEnd = std::chrono::steady_clock::now() + std::chrono::seconds(60);
while (std::chrono::steady_clock::now() < tEnd) {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
drfl.disconnect_rt_control();
이 예제에서 OnRTLogAlarm()은 컨트롤러가 보내는 RT 세션 메시지를 하나씩 출력합니다.
팁
실시간 제어 중 RT 입력 시간 초과와 세션 문제를 감지할 때 유용합니다.
GUI나 네트워크 로거와 통합해 알람 상태를 실시간으로 시각화하세요.
컨트롤러가 RT 세션을 종료하면 set_on_rt_log_alarm 콜백으로 알람을 보고하고 RT 데이터 전송을 멈춥니다.
RT 콜백에서
get_rt_control_input_version_list,get_rt_control_output_version_list,get_rt_control_input_data_list,get_rt_control_output_data_list,disconnect_rt_control을 호출하지 마세요. 호출이 반환되지 않습니다. RT 콜백에서connect_rt_control을 호출하면 false를 반환하고connect_rt_control() cannot be called from an RT callback을 출력합니다.