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

TOnMonitoringCtrlIOCB

이 콜백 함수로 로봇 컨트롤러의 컨트롤 박스에 설치된 I/O의 상태 데이터를 확인합니다. 로봇 시스템의 디지털 및 아날로그 입출력 값을 실시간으로 확인할 수 있습니다.

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

정의 위치: DRFLEx.h

// typedef 정의(DRFL.h)
typedef void (*TOnMonitoringCtrlIOCB)(const LPMONITORING_CTRLIO);

// 등록 API(내부 + 래퍼)
DRFL_API void _set_on_monitoring_ctrl_io(LPROBOTCONTROL pCtrl, TOnMonitoringCtrlIOCB pCallbackFunc);
void set_on_monitoring_ctrl_io(TOnMonitoringCtrlIOCB pCallbackFunc)
{
    _set_on_monitoring_ctrl_io(_rbtCtrl, pCallbackFunc);
};

매개변수

매개변수 이름

자료형

기본값

설명

pCtrlIO

MONITORING_CTRLIO

디지털 및 아날로그 I/O 상태 데이터를 담은 구조체의 포인터입니다.

반환값
없음

예제

#include "DRFLEx.h"
#include <iostream>
#include <thread>
#include <chrono>
using namespace DRAFramework;
using namespace std;

// 컨트롤러 I/O 상태가 바뀌면 호출되는 콜백 함수
void OnMonitoringCtrlIOCB(const LPMONITORING_CTRLIO pCtrlIO)
{
    cout << "[I/O MONITOR] Digital input state:" << endl;

    for (int i = 0; i < NUM_DIGITAL; ++i)
    {
        cout << "DI#" << i << " : " << static_cast<int>(pCtrlIO->_tInput._iActualDI[i]) << endl;
    }

    cout << "[I/O MONITOR] Digital output state:" << endl;
    for (int i = 0; i < NUM_DIGITAL; ++i)
    {
        cout << "DO#" << i << " : " << static_cast<int>(pCtrlIO->_tOutput._iTargetDO[i]) << endl;
    }
}

int main()
{
    CDRFLEx drfl;

    // 로봇 컨트롤러에 연결
    if (!drfl.open_connection("192.168.137.100")) {
        cout << "Failed to connect to controller." << endl;
        return -1;
    }

    // I/O 모니터링 콜백 함수 등록
    drfl.set_on_monitoring_ctrl_io(OnMonitoringCtrlIOCB);

    // I/O 이벤트를 모니터링하도록 프로그램 실행 유지
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    drfl.close_connection();
    return 0;
}

참고

  • 이 콜백은 로봇 컨트롤러의 디지털/아날로그 I/O 값을 실시간으로 전달합니다.

  • 주로 센서 입력, 신호 피드백, 툴 I/O 상태를 모니터링할 때 사용합니다.

  • 더 자세한 데이터를 담은 확장 버전은 TOnMonitoringCtrlIOExCB와 TOnMonitoringCtrlIOEx2CB를 참고하세요.

  • 콜백은 호출될 때마다 가장 최근 데이터를 받습니다. 콜백 실행 시간이 데이터 주기(DRCF 3.5 이전 100 ms, DRCF 3.5부터 20 ms)보다 길면 그 사이의 샘플은 전달되지 않습니다. 모든 샘플을 받는다고 가정하지 마세요(예: 적분이나 미분).