set_on_tp_log (수동 모드)

이 절에서는 수동(교시) 작업에서 set_on_tp_log를 사용하는 방법을 설명합니다. 이 함수는 티치펜던트(TP)의 로그 메시지를 받는 콜백 함수를 등록합니다. 주로 수동 모드에서 교시하거나 DRL 프로그램을 실행하는 동안 발생하는 TP 콘솔 메시지, 경고, 정보 문자열을 표시하거나 저장할 때 사용합니다.

일반적인 사용법

  • 모니터링과 디버깅을 위해 TP 로그를 호스트 PC 콘솔에 그대로 표시합니다.

  • 교시 세션을 문서화하기 위해 로그 메시지를 파일에 기록합니다.

  • 특정 로그 패턴(예: “Warning”, “Error”)을 감지해 대응 동작이나 시각적 경고를 실행합니다.

  • 로그 메시지를 진행 상황이나 팝업 이벤트와 대조해 더 깊이 진단합니다.

참고

  • 콜백은 호출될 때마다 TP에서 텍스트 한 줄(최대 256바이트)을 받습니다.

  • 콜백 함수 규칙을 참고하세요.

  • 긴 교시 세션에서는 파일 로그 기록이나 필터링 로직을 사용하세요.

예제: TP 메시지를 기록하고 경고 강조하기

#include <cstdio>
#include <cstring>
#include <ctime>
#include <fstream>
#include <string>
#include <thread>
#include <chrono>

// 타임스탬프를 가져오는 유틸리티
string GetTimestamp()
{
    time_t now = time(0);
    tm* ltm = localtime(&now);
    char buf[64];
    sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d",
            1900 + ltm->tm_year, 1 + ltm->tm_mon, ltm->tm_mday,
            ltm->tm_hour, ltm->tm_min, ltm->tm_sec);
    return string(buf);
}

// TP 로그 콜백 함수
void OnTpLog(const char* strLog)
{
    printf("[%s] %s\n", GetTimestamp().c_str(), strLog);

    // 로그를 파일에 기록
    ofstream logFile("tp_manual_log.txt", ios::app);
    if (logFile.is_open())
    {
        logFile << "[" << GetTimestamp() << "] " << strLog << endl;
        logFile.close();
    }

    // 경고와 오류 강조 표시
    if (strstr(strLog, "Warning") != nullptr)
        printf(">>> WARNING detected in TP log\n");
    else if (strstr(strLog, "Error") != nullptr)
        printf(">>> ERROR detected in TP log\n");
}

drfl.open_connection("192.168.137.100");
drfl.set_on_tp_log(OnTpLog);

printf("[Teach] Waiting for TP log messages...\n");
while (true)
    this_thread::sleep_for(chrono::seconds(1));

이 콜백 함수를 등록하면 티치펜던트(TP)에서 로그 메시지가 생성될 때마다 자동으로 실행됩니다. 이를 이용해 TP 로그 출력을 그대로 표시하거나, 이상 징후를 감지하거나, 작업 이력을 저장해 수동 작업 중 투명성을 높이고 디버깅을 쉽게 할 수 있습니다.

팁

  • 디버깅이나 교시 후 분석을 위해 TP 로그를 수집할 때 사용합니다.

  • set_on_tp_popup과 함께 사용하면 이벤트와 연계해 로그를 추적할 수 있습니다.

  • 작업자가 빠르게 알아챌 수 있도록 호스트 로그에서 경고나 오류를 강조하세요.