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

set_on_program_stopped (수동 모드)

이 절에서는 수동(교시) 작업에서 set_on_program_stopped를 사용하는 방법을 설명합니다.
이 함수는 컨트롤러에서 실행 중인 프로그램이 정지할 때마다 호출되는 콜백 함수를 등록합니다. 티치펜던트(TP)에서 수동으로 정지한 경우, API 명령으로 정지한 경우, 오류 조건으로 정지한 경우가 모두 해당합니다.

교시 환경을 복원하거나, 모션 상태를 재설정하거나, 프로그램 중단 원인을 기록할 때 특히 유용합니다.

일반적인 사용법

  • 수동 교시 중 프로그램 종료 이벤트를 감지하고 처리합니다.

  • 디버깅이나 추적성을 위해 정지 원인을 자동으로 기록합니다.

  • 프로그램이 멈추면 작업자에게 알립니다(예: 로그 메시지나 팝업).

  • 컨트롤러가 안전하게 재시작하거나 다음 교시 시퀀스를 시작할 수 있도록 준비합니다.

참고

예제: 프로그램 정지 이벤트를 기록하고 대응하기

// DRL 또는 수동 프로그램이 정지하면 호출되는 콜백 함수
void OnProgramStopped(const PROGRAM_STOP_CAUSE cause)
{
    printf("-------------------------------------------\n");
    printf("[PROGRAM STOPPED]\n");

    // 정지 원인 기록
    if (cause == PROGRAM_STOP_CAUSE_NORMAL)
        printf("Stop cause: NORMAL (program ended)\n");
    else if (cause == PROGRAM_STOP_CAUSE_FORCE)
        printf("Stop cause: FORCE\n");
    else if (cause == PROGRAM_STOP_CAUSE_ERROR)
        printf("Stop cause: ERROR\n");
    else
        printf("Stop cause: %d\n", (int)cause);

    printf("-------------------------------------------\n");
}

drfl.open_connection("192.168.137.100");
drfl.set_on_program_stopped(OnProgramStopped);
printf("[Teach] Program stop monitoring active.\n");

// 프로그램 정지 이벤트를 수신하도록 실행 유지
while (true)
    this_thread::sleep_for(chrono::seconds(1));

이 콜백을 등록하면 컨트롤러에서 DRL 프로그램이 정지할 때(정상 종료, drl_stop, 오류) 콜백이 호출됩니다. 이를 이용해 정지 원인 기록, 시스템 복구 준비, 사용자 정의 안전 알림 같은 정지 후 자동 처리를 구현할 수 있습니다.

팁

  • 정지 원인을 실시간으로 감지하고 분류할 때 사용합니다.

  • 자동 복구, 로그 기록, 교시 후 정리 루틴에 가장 적합합니다.