TOnTpInitializingCompletedCB
이 콜백 함수로 컨트롤러 부팅 후 티치펜던트(T/P) 애플리케이션이 로봇 컨트롤러를 초기화할 때 초기화가 완료되었는지 확인합니다.
콜백 함수 규칙을 참고하세요.
정의 위치: DRFLEx.h
// typedef 정의(DRFL.h)
typedef void (*TOnTpInitializingCompletedCB)();
// 등록 API(내부 + 래퍼)
DRFL_API void _set_on_tp_initializing_completed(LPROBOTCONTROL pCtrl, TOnTpInitializingCompletedCB pCallbackFunc);
void set_on_tp_initializing_completed(TOnTpInitializingCompletedCB pCallbackFunc)
{
_set_on_tp_initializing_completed(_rbtCtrl, pCallbackFunc);
};
매개변수
없음
반환값
없음
예제
#include "DRFLEx.h"
#include <atomic>
#include <chrono>
#include <iostream>
#include <thread>
using namespace DRAFramework;
using namespace std;
CDRFLEx drfl;
std::atomic<bool> g_bTpInitCompleted(false);
// TP 초기화가 완료되면 호출되는 콜백 함수
void OnTpInitializingCompletedCB()
{
// 메인 루프에 제어권 요청
g_bTpInitCompleted = true;
}
int main()
{
// 연결 전에 TP 초기화 완료 콜백 함수 등록
drfl.set_on_tp_initializing_completed(OnTpInitializingCompletedCB);
// 컨트롤러에 연결
if (!drfl.open_connection("192.168.137.100")) {
cout << "Failed to connect to controller." << endl;
return -1;
}
// 메인 루프: manage_access_control은 콜백 함수 밖에서 호출
while (true)
{
if (g_bTpInitCompleted) {
g_bTpInitCompleted = false;
cout << "[TP INIT] Teach Pendant initialization completed." << endl;
drfl.manage_access_control(MANAGE_ACCESS_CONTROL_REQUEST);
}
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
drfl.close_connection();
return 0;
}
참고
콜백은 등록 후 STATE_NOT_READY나 STATE_INITIALIZING이 아닌 로봇 상태를 처음 받았을 때 한 번 호출되고, 그 뒤 등록이 해제됩니다. 컨트롤러는 연결이 열릴 때와 로봇 상태가 바뀔 때마다 로봇 상태를 보고합니다. 이 콜백은 open_connection보다 먼저 등록하세요. 그러면 컨트롤러가 이미 초기화되어 있을 때 연결 중에 콜백이 호출됩니다. 유휴 상태의 컨트롤러에 연결한 뒤 등록하면 다음 상태 변화 때 호출됩니다. open_connection을 호출할 때마다 다시 등록하세요.
주로 제어권(Control Authority) 요청(MANAGE_ACCESS_CONTROL_REQUEST)이나 애플리케이션 시작 루틴에 사용합니다.