TOnMonitoringStateCB
This is a callback function for checking changes in operation state information in the robot controller. As the callback function is executed automatically in the case of a specific event, a code that requires an excessive execution time (within 50 msec) within the callback function should not be made.
Defined in: DRFL.h
typedef void (*TOnMonitoringStateCB)(const ROBOT_STATE);
void SetOnMonitoringState(TOnMonitoringStateCB pCallbackFunc)
{
_SetOnMonitoringState(_rbtCtrl, pCallbackFunc);
};
Parameter
Parameter Name |
Data Type |
Default Value |
Description |
|---|---|---|---|
eState |
Refer to the Definition of Enumeration Type. |
Return
None
Example
#include "DRFL.h"
using namespace DRAFramework;
// Callback function: triggered whenever the robot’s operational state changes
void OnMonitoringStateCB(const ROBOT_STATE eState)
{
switch ((unsigned char)eState)
{
case STATE_SAFE_OFF:
printf("[STATE] SAFE OFF detected. Resetting safety and enabling servo...\n");
drfl.set_robot_control(CONTROL_RESET_SAFET_OFF);
break;
case STATE_IDLE:
printf("[STATE] Robot is now idle and ready.\n");
break;
case STATE_MOVING:
printf("[STATE] Robot is executing motion.\n");
break;
case STATE_STOPPED:
printf("[STATE] Robot motion stopped.\n");
break;
default:
printf("[STATE] Unknown or transitional state: %d\n", eState);
break;
}
}
int main()
{
CDRFL drfl;
// Connect to the robot controller
drfl.open_connection("192.168.137.100");
// Register callback for robot state monitoring
drfl.set_on_monitoring_state(OnMonitoringStateCB);
// Keep program alive to observe state transitions
while (true)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
}
drfl.close_connection();
return 0;
}
Note
This callback is automatically invoked by the controller whenever a robot state transition occurs.
Avoid heavy computation, blocking calls, or file I/O within the callback (execution time < 50 ms).
Typical usage includes servo enabling after STATE_SAFE_OFF, logging state changes, or updating GUI indicators.