top of page
5. IO
5.1. Set Control Box Digital Output
/**
@brief Set control box digital output
@param [in] id IO number, range [0~15]
@param [in] status 0-off, 1-on
@param [in] smooth 0-non-smooth, 1-smooth
@param [in] block 0-blocking, 1-non-blocking
@return Error code
*/
errno_t SetDO(int id, uint8_t status, uint8_t smooth, uint8_t block);
5.2. Set Tool Digital Output
/**
@brief Set tool digital output
@param [in] id IO number, range [0~1]
@param [in] status 0-off, 1-on
@param [in] smooth 0-non-smooth, 1-smooth
@param [in] block 0-blocking, 1-non-blocking
@return Error code
*/
errno_t SetToolDO(int id, uint8_t status, uint8_t smooth, uint8_t block);
5.3. Set Control Box Analog Output
/**
@brief Set control box analog output
@param [in] id IO number, range [0~1]
@param [in] value Current or voltage percentage, range [0~100] corresponding to current [0~20mA] or voltage [0~10V]
@param [in] block 0-blocking, 1-non-blocking
@return Error code
*/
errno_t SetAO(int id, float value, uint8_t block);
5.4. Set Tool Analog Output
/**
@brief Set tool analog output
@param [in] id IO number, range [0]
@param [in] value Current or voltage percentage, range [0~100] corresponding to current [0~20mA] or voltage [0~10V]
@param [in] block 0-blocking, 1-non-blocking
@return Error code
*/
errno_t SetToolAO(int id, float value, uint8_t block);
5.5. Code Example for Setting Digital and Analog Outputs
int TestAODO(void)
{
ROBOT_STATE_PKG pkg = {};
FRRobot robot;
robot.LoggerInit();
robot.SetLoggerLevel(1);
int rtn = robot.RPC("192.168.58.2");
if (rtn != 0)
{
return -1;
}
robot.SetReConnectParam(true, 30000, 500);
uint8_t status = 1;
uint8_t smooth = 0;
uint8_t block = 0;
for (int i = 0; i < 16; i++)
{
robot.SetDO(i, status, smooth, block);
robot.Sleep(300);
}
status = 0;
for (int i = 0; i < 16; i++)
{
robot.SetDO(i, status, smooth, block);
robot.Sleep(300);
}
status = 1;
for (int i = 0; i < 2; i++)
{
robot.SetToolDO(i, status, smooth, block);
robot.Sleep(1000);
}
status = 0;
for (int i = 0; i < 2; i++)
{
robot.SetToolDO(i, status, smooth, block);
robot.Sleep(1000);
}
for (int i = 0; i < 100; i++)
{
robot.SetAO(0, i * 40.96, block);
robot.Sleep(30);
}
for (int i = 0; i < 100; i++)
{
robot.SetToolAO(0, i * 40.96, block);
robot.Sleep(30);
}
robot.CloseRPC();
return 0;
}
5.6. Get Control Box Digital Input
/**
@brief Get control box digital input
@param [in] id IO number, range [0~15]
@param [in] block 0-blocking, 1-non-blocking
@param [out] result 0-low level, 1-high level
@return Error code
*/
errno_t GetDI(int id, uint8_t block, uint8_t *result);
5.7. Get Tool Digital Input
/**
@brief Get tool digital input
@param [in] id IO number, range [0~1]
@param [in] block 0-blocking, 1-non-blocking
@param [out] result 0-low level, 1-high level
@return Error code
*/
errno_t GetToolDI(int id, uint8_t block, uint8_t *result);
5.8. Get Control Box Analog Input
/**
@brief Get control box analog input
@param [in] id IO number, range [0~1]
@param [in] block 0-blocking, 1-non-blocking
@param [out] result Input current or voltage percentage, range [0~100] corresponding to current [0~20mS] or voltage [0~10V]
@return Error code
*/
errno_t GetAI(int id, uint8_t block, float *result);
5.9. Get Tool Analog Input
/**
@brief Get tool analog input
@param [in] id IO number, range [0]
@param [in] block 0-blocking, 1-non-blocking
@param [out] result Input current or voltage percentage, range [0~100] corresponding to current [0~20mS] or voltage [0~10V]
@return Error code
*/
errno_t GetToolAI(int id, uint8_t block, float *result);
5.10. Get Robot End Point Record Button Status
/**
@brief Get robot end point record button status
@param [out] state Button status, 0-pressed, 1-released
@return Error code
*/
errno_t GetAxlePointRecordBtnState(uint8_t *state);
5.11. Get Robot End DO Output Status
/**
@brief Get robot end DO output status
@param [out] do_state DO output status, do0~do1 correspond to bit1~bit2, starting from bit0
@return Error code
*/
errno_t GetToolDO(uint8_t *do_state);
5.12. Get Robot Controller DO Output Status
/**
@brief Get robot controller DO output status
@param [out] do_state_h DO output status, co0~co7 correspond to bit0~bit7
@param [out] do_state_l DO output status, do0~do7 correspond to bit0~bit7
@return Error code
*/
errno_t GetDO(uint8_t *do_state_h, uint8_t *do_state_l);
5.13. Code Example for Getting Robot DI and DO Status
int TestGetDIAI(void)
{
ROBOT_STATE_PKG pkg = {};
FRRobot robot;
robot.LoggerInit();
robot.SetLoggerLevel(1);
int rtn = robot.RPC("192.168.58.2");
if (rtn != 0)
{
return -1;
}
robot.SetReConnectParam(true, 30000, 500);
uint8_t status = 1;
uint8_t smooth = 0;
uint8_t block = 0;
uint8_t di = 0, tool_di = 0;
float ai = 0.0, tool_ai = 0.0;
float value = 0.0;
robot.GetDI(0, block, &di);
printf("di0:%u\n", di);
tool_di = robot.GetToolDI(1, block, &tool_di);
printf("tool_di1:%u\n", tool_di);
robot.GetAI(0, block, &ai);
printf("ai0:%f\n", ai);
tool_ai = robot.GetToolAI(0, block, &tool_ai);
printf("tool_ai0:%f\n", tool_ai);
uint8_t _button_state = 0;
robot.GetAxlePointRecordBtnState(&_button_state);
printf("_button_state is: %u\n", _button_state);
uint8_t tool_do_state = 0;
robot.GetToolDO(&tool_do_state);
printf("tool DO state is: %u\n", tool_do_state);
uint8_t do_state_h = 0;
uint8_t do_state_l = 0;
robot.GetDO(&do_state_h, &do_state_l);
printf("DO state high is: %u \n DO state low is: %u\n", do_state_h, do_state_l);
robot.CloseRPC();
return 0;
}bottom of page