TOnMonitoringDataCB
이 콜백 함수로 로봇 컨트롤러의 현재 위치, 조인트 위치, 작업 공간(Task Space) 포즈를 나타내는 로봇 운용 데이터를 확인합니다.
콜백 함수 규칙을 참고하세요.
정의 위치: DRFLEx.h
// typedef 정의(DRFL.h)
typedef void (*TOnMonitoringDataCB)(const LPMONITORING_DATA);
// 등록 API(내부 + 래퍼)
DRFL_API void _set_on_monitoring_data(LPROBOTCONTROL pCtrl, TOnMonitoringDataCB pCallbackFunc);
void set_on_monitoring_data(TOnMonitoringDataCB pCallbackFunc)
{
_set_on_monitoring_data(_rbtCtrl, pCallbackFunc);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
pData |
로봇의 현재 조인트 정보와 작업 공간 정보를 담은 구조체의 포인터입니다. |
반환값
없음
예제
#include "DRFLEx.h"
#include <iostream>
#include <thread>
#include <chrono>
using namespace DRAFramework;
using namespace std;
// 로봇 모니터링 데이터를 주기적으로 전달하는 콜백 함수
void OnMonitoringDataCB(const LPMONITORING_DATA pData)
{
cout << "[MONITOR] Joint positions (deg): ";
for (int i = 0; i < 6; ++i)
{
cout << pData->_tCtrl._tJoint._fActualPos[i];
if (i < 5) cout << ", ";
}
cout << endl;
// TCP 위치 표시(mm, deg). 행 0 = 툴, 행 1 = 플랜지
cout << "[MONITOR] TCP position: X=" << pData->_tCtrl._tTask._fActualPos[0][0]
<< " Y=" << pData->_tCtrl._tTask._fActualPos[0][1]
<< " Z=" << pData->_tCtrl._tTask._fActualPos[0][2] << endl;
}
int main()
{
CDRFLEx drfl;
// 로봇 컨트롤러에 연결
if (!drfl.open_connection("192.168.137.100")) {
cout << "Failed to connect to controller." << endl;
return -1;
}
// 실시간 모니터링 콜백 함수 등록
drfl.set_on_monitoring_data(OnMonitoringDataCB);
// 모니터링 갱신을 계속 수신하도록 프로그램 실행 유지
while (true)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
}
drfl.close_connection();
return 0;
}
참고
이 콜백은 컨트롤러의 현재 운용 상태(조인트 및 작업 공간 위치)와 같은 데이터를 전달합니다.
애플리케이션에서 실시간 시각화, 데이터 로깅, 텔레메트리 갱신에 사용합니다.
콜백은 호출될 때마다 가장 최근 데이터를 받습니다. 콜백 실행 시간이 데이터 주기(DRCF 3.5 이전 100 ms, DRCF 3.5부터 20 ms)보다 길면 그 사이의 샘플은 전달되지 않습니다. 모든 샘플을 받는다고 가정하지 마세요(예: 적분이나 미분).