set_on_monitoring_ctrl_io_ex2 (Manual Mode)

This section explains how to use set_on_monitoring_ctrl_io_ex2 during Manual (Teach) operations to register an advanced I/O monitoring callback that supports extended I/O mapping and additional signal channels introduced in DRCF_VERSION == 3.

Compared to set_on_monitoring_ctrl_io_ex(Manual Mode), this version delivers enhanced data, including flange I/O states, high-speed input data, and user-defined I/O expansion fields.

Typical usage

  • Monitor both control box and flange I/O simultaneously in real time.

  • Capture extended analog and digital feedback for advanced tool integration.

  • Log detailed I/O events in a background process during manual testing.

Note

  • The callback is triggered after calling setup_monitoring_version(1) to enable v3 data format.

  • Contains extended fields for flange I/O and additional analog channels.

Example: Register extended I/O monitoring callback (DRCF v3)

#include "DRFLEx.h"
#include <cstdio>
using namespace DRAFramework;

// 1) Define the callback function for extended monitoring
void OnMonitoringCtrlIOEx2(const LPROBOT_MONITORING_CTRLIO_EX2 pData) {
    std::printf("[I/O Monitor v3] DIN_1: %d, DOUT_1: %d | FLANGE_DI_1: %d, FLANGE_DO_1: %d | ANIN1: %.2f V\n",
                pData->_digitalInput[0],
                pData->_digitalOutput[0],
                pData->_flangeDI[0],
                pData->_flangeDO[0],
                pData->_analogInput[0]);
}

int main() {
    CDRFLEx drfl;

    // Preconditions:
    // - Connection established (open_connection)
    // - Manual (Teach) mode active
    // - setup_monitoring_version(1) called to enable extended data

    // 2) Register extended callback
    drfl.set_on_monitoring_ctrl_io_ex2(OnMonitoringCtrlIOEx2);

    // 3) Maintain loop to receive monitoring updates
    while (true) { std::this_thread::sleep_for(std::chrono::seconds(1)); }

    return 0;
}

Tips

  • Always call setup_monitoring_version(1) before registering this callback.

  • Suitable for real-time monitoring dashboards or logging systems.

  • Avoid heavy computations inside callback — use event queues for processing.