이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

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)이나 애플리케이션 시작 루틴에 사용합니다.