4. 机器人IO
4.1. 设置控制箱数字量输出
1/**
2* @brief 设置控制箱数字量输出
3* @param [in] id io编号,范围[0~15]
4* @param [in] status 0-关,1-开
5* @param [in] smooth 0-不平滑, 1-平滑
6* @param [in] block 0-阻塞,1-非阻塞
7* @return 错误码
8*/
9errno_t SetDO(int id, uint8_t status, uint8_t smooth, uint8_t block);
4.2. 设置工具数字量输出
1/**
2* @brief 设置工具数字量输出
3* @param [in] id io编号,范围[0~1]
4* @param [in] status 0-关,1-开
5* @param [in] smooth 0-不平滑, 1-平滑
6* @param [in] block 0-阻塞,1-非阻塞
7* @return 错误码
8*/
9errno_t SetToolDO(int id, uint8_t status, uint8_t smooth, uint8_t block);
4.3. 设置控制箱模拟量输出
1/**
2* @brief 设置控制箱模拟量输出
3* @param [in] id io编号,范围[0~1]
4* @param [in] value 电流或电压值百分比,范围[0~100]对应电流值[0~20mA]或电压[0~10V]
5* @param [in] block 0-阻塞,1-非阻塞
6* @return 错误码
7*/
8errno_t SetAO(int id, float value, uint8_t block);
4.4. 设置工具模拟量输出
1/**
2* @brief 设置工具模拟量输出
3* @param [in] id io编号,范围[0]
4* @param [in] value 电流或电压值百分比,范围[0~100]对应电流值[0~20mA]或电压[0~10V]
5* @param [in] block 0-阻塞,1-非阻塞
6* @return 错误码
7*/
8errno_t SetToolAO(int id, float value, uint8_t block);
4.5. 获取控制箱数字量输入
1/**
2* @brief 获取控制箱数字量输入
3* @param [in] id io编号,范围[0~15]
4* @param [in] block 0-阻塞,1-非阻塞
5* @param [out] result 0-低电平,1-高电平
6* @return 错误码
7*/
8errno_t GetDI(int id, uint8_t block, uint8_t *result);
4.6. 获取工具数字量输入
1/**
2* @brief 获取工具数字量输入
3* @param [in] id io编号,范围[0~1]
4* @param [in] block 0-阻塞,1-非阻塞
5* @param [out] result 0-低电平,1-高电平
6* @return 错误码
7*/
8errno_t GetToolDI(int id, uint8_t block, uint8_t *result);
4.7. 等待控制箱数字量输入
1/**
2* @brief 等待控制箱数字量输入
3* @param [in] id io编号,范围[0~15]
4* @param [in] status 0-关,1-开
5* @param [in] max_time 最大等待时间,单位ms
6* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
7* @return 错误码
8*/
9errno_t WaitDI(int id, uint8_t status, int max_time, int opt);
4.8. 等待控制箱多路数字量输入
1/**
2* @brief 等待控制箱多路数字量输入
3* @param [in] mode 0-多路与,1-多路或
4* @param [in] id io编号,bit0~bit7对应DI0~DI7,bit8~bit15对应CI0~CI7
5* @param [in] status 0-关,1-开
6* @param [in] max_time 最大等待时间,单位ms
7* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
8* @return 错误码
9*/
10errno_t WaitMultiDI(int mode, int id, uint8_t status, int max_time, int opt);
4.9. 等待工具数字量输入
1/**
2* @brief 等待工具数字量输入
3* @param [in] id io编号,范围[0~1]
4* @param [in] status 0-关,1-开
5* @param [in] max_time 最大等待时间,单位ms
6* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
7* @return 错误码
8*/
9errno_t WaitToolDI(int id, uint8_t status, int max_time, int opt);
4.10. 获取控制箱模拟量输入
1/**
2* @brief 获取控制箱模拟量输入
3* @param [in] id io编号,范围[0~1]
4* @param [in] block 0-阻塞,1-非阻塞
5* @param [out] result 输入电流或电压值百分比,范围[0~100]对应电流值[0~20mS]或电压[0~10V]
6* @return 错误码
7*/
8errno_t GetAI(int id, uint8_t block, float *result);
4.11. 获取工具模拟量输入
1/**
2* @brief 获取工具模拟量输入
3* @param [in] id io编号,范围[0]
4* @param [in] block 0-阻塞,1-非阻塞
5* @param [out] result 输入电流或电压值百分比,范围[0~100]对应电流值[0~20mS]或电压[0~10V]
6* @return 错误码
7*/
8errno_t GetToolAI(int id, uint8_t block, float *result);
4.12. 获取机器人末端点记录按钮状态
1/**
2 * @brief 获取机器人末端点记录按钮状态
3 * @param [out] state 按钮状态,0-按下,1-松开
4 * @return 错误码
5 */
6errno_t GetAxlePointRecordBtnState(uint8_t *state);
4.13. 获取机器人末端DO输出状态
1/**
2 * @brief 获取机器人末端DO输出状态
3 * @param [out] do_state DO输出状态,do0~do1对应bit1~bit2,从bit0开始
4 * @return 错误码
5 */
6errno_t GetToolDO(uint8_t *do_state);
4.14. 获取机器人控制器DO输出状态
1/**
2 * @brief 获取机器人控制器DO输出状态
3 * @param [out] do_state_h DO输出状态,co0~co7对应bit0~bit7
4 * @param [out] do_state_l DO输出状态,do0~do7对应bit0~bit7
5 * @return 错误码
6 */
7errno_t GetDO(uint8_t *do_state_h, uint8_t *do_state_l);
4.15. 等待控制箱模拟量输入
1/**
2* @brief 等待控制箱模拟量输入
3* @param [in] id io编号,范围[0~1]
4* @param [in] sign 0-大于,1-小于
5* @param [in] value 输入电流或电压值百分比,范围[0~100]对应电流值[0~20mS]或电压[0~10V]
6* @param [in] max_time 最大等待时间,单位ms
7* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
8* @return 错误码
9*/
10errno_t WaitAI(int id, int sign, float value, int max_time, int opt);
4.16. 等待工具模拟量输入
1/**
2* @brief 等待工具模拟量输入
3* @param [in] id io编号,范围[0]
4* @param [in] sign 0-大于,1-小于
5* @param [in] value 输入电流或电压值百分比,范围[0~100]对应电流值[0~20mS]或电压[0~10V]
6* @param [in] max_time 最大等待时间,单位ms
7* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
8* @return 错误码
9*/
10errno_t WaitToolAI(int id, int sign, float value, int max_time, int opt);
4.17. 代码示例
在 C++SDK-v2.1.2.0 版本发生变更.
1#include "libfairino/robot.h"
2
3//如果使用Windows,包含下面的头文件
4#include <string.h>
5#include <windows.h>
6//如果使用linux,包含下面的头文件
7/*
8#include <cstdlib>
9#include <iostream>
10#include <stdio.h>
11#include <cstring>
12#include <unistd.h>
13*/
14#include <chrono>
15#include <thread>
16
17using namespace std;
18int main(void)
19{
20 FRRobot robot;
21 robot.RPC("192.168.58.2");
22
23 uint8_t status = 1;
24 uint8_t smooth = 0;
25 uint8_t block = 0;
26 uint8_t di = 0, tool_di = 0;
27 float ai = 0.0, tool_ai = 0.0;
28 float value = 0.0;
29 int i;
30
31 for(i = 0; i < 16; i++)
32 {
33 robot.SetDO(i, status, smooth, block);
34 robot.WaitMs(1000);
35 }
36
37 status = 0;
38
39 for(i = 0; i < 16; i++)
40 {
41 robot.SetDO(i, status, smooth, block);
42 robot.WaitMs(1000);
43 }
44
45 status = 1;
46
47 for(i = 0; i < 2; i++)
48 {
49 robot.SetToolDO(i, status, smooth, block);
50 robot.WaitMs(1000);
51 }
52
53 status = 0;
54
55 for(i = 0; i < 2; i++)
56 {
57 robot.SetToolDO(i, status, smooth, block);
58 robot.WaitMs(1000);
59 }
60
61 value = 50.0;
62 robot.SetAO(0, value, block);
63 value = 100.0;
64 robot.SetAO(1, value, block);
65 robot.WaitMs(1000);
66 value = 0.0;
67 robot.SetAO(0, value, block);
68 value = 0.0;
69 robot.SetAO(1, value, block);
70
71 value = 100.0;
72 robot.SetToolAO(0, value, block);
73 robot.WaitMs(1000);
74 value = 0.0;
75 robot.SetToolAO(0, value, block);
76
77 robot.GetDI(0, block, &di);
78 printf("di0:%u\n", di);
79 robot.WaitDI(0,1,0,2); //一直等待
80 robot.WaitMultiDI(1,3,3,10000,2); //一直等待
81 tool_di = robot.GetToolDI(1, block, &tool_di);
82 printf("tool_di1:%u\n", tool_di);
83 robot.WaitToolDI(1,1,0,2); //一直等待
84
85 robot.GetAI(0,block, &ai);
86 printf("ai0:%f\n", ai);
87 robot.WaitAI(0,0,50,0,2); //一直等待
88 robot.WaitToolAI(0,0,50,0,2); //一直等待
89 tool_ai = robot.GetToolAI(0,block, &tool_ai);
90 printf("tool_ai0:%f\n", tool_ai);
91
92 uint8_t _button_state = 0;
93 robot.GetAxlePointRecordBtnState(&_button_state);
94 printf("_button_state is: %u\n", _button_state);
95
96 uint8_t tool_do_state = 0;
97 robot.GetToolDO(&tool_do_state);
98 printf("tool DO state is: %u\n", tool_do_state);
99
100 uint8_t do_state_h = 0;
101 uint8_t do_state_l = 0;
102 robot.GetDO(&do_state_h, &do_state_l);
103 printf("DO state high is: %u \n DO state low is: %u\n", do_state_h, do_state_l);
104 return 0;
105}
4.18. 获取机器人软件版本
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 获取机器人软件版本
3* @param[out] robotModel 机器人型号
4* @param[out] webversion web版本
5* @param[out] controllerVersion 控制器版本
6* @return 错误码
7*/
8errno_t GetSoftwareVersion(char robotModel[64], char webVersion[64], char controllerVersion[64]);
4.19. 获取机器人硬件版本
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 获取机器人硬件版本
3* @param[out] ctrlBoxBoardversion 控制箱载板硬件版本
4* @param[out] driver1version 驱动器1硬件版本
5* @param[out] driver2version 驱动器2硬件版本
6* @param[out] driver3version 驱动器3硬件版本
7* @param[out] driver4version 驱动器4硬件版本
8* @param[out] driver5version 驱动器5硬件版本
9* @param[out] driver6version 驱动器6硬件版本
10* @param[out] endBoardversion 未端版硬件版本
11*/
12errno_t GetHardwareVersion(char ctrlBoxBoardversion[128], char driver1version[128], char driver2version[128], char driver3version[128], char driver4version[128], char driver5version[128], char driver6version[128], char endBoardversion[128]);
4.20. 获取机器人固件版本
在 C++SDK-v2.1.1.0 版本加入.
1/**
2* @brief 获取机器人固件版本
3* @param[out] ctrlBoxBoardversion 控制箱载板固件版本
4* @param[out] driver1version 驱动器1固件版本
5* @param[out] driver2version 驱动器2固件版本
6* @param[out] driver3version 驱动器3固件版本
7* @param[out] driver4version 驱动器4固件版本
8* @param[out] driver5version 驱动器5固件版本
9* @param[out] driver6version 驱动器6固件版本
10* @param[out] endBoardversion 未端版固件版本
11*/
12errno_t GetFirmwareVersion(char ctrlBoxBoardversion[128], char driver1version[128], char driver2version[128], char driver3version[128], char driver4version[128], char driver5version[128], char driver6version[128], char endBoardversion[128]);
4.21. 代码示例
在 C++SDK-v2.1.2.0 版本加入.
1#include "libfairino/robot.h"
2
3//如果使用Windows,包含下面的头文件
4#include <string.h>
5#include <windows.h>
6//如果使用linux,包含下面的头文件
7/*
8#include <cstdlib>
9#include <iostream>
10#include <stdio.h>
11#include <cstring>
12#include <unistd.h>
13*/
14#include <chrono>
15#include <thread>
16
17using namespace std;
18int main(void)
19{
20 FRRobot robot;
21 robot.RPC("192.168.58.2");
22
23 int retval = 0;
24 char robotModel[64] = {0};
25 char webversion[64] = {0};
26 char controllerVersion[64] = {0};
27
28 char ctrlBoxBoardversion[128] = {0};
29 char driver1version[128] = {0};
30 char driver2version[128] = {0};
31 char driver3version[128] = {0};
32 char driver4version[128] = {0};
33 char driver5version[128] = {0};
34 char driver6version[128] = {0};
35 char endBoardversion[128] = {0};
36
37 retval = robot.GetSoftwareVersion(robotModel, webversion, controllerVersion);
38 printf("Getsoftwareversion retval is: %d\n", retval);
39 printf("robotmodel is: %s, webversion is: %s, controllerVersion is: %s \n", robotModel, webversion, controllerVersion);
40
41 retval = robot.GetHardwareVersion(ctrlBoxBoardversion, driver1version, driver2version, driver3version, driver4version, driver5version, driver6version, endBoardversion);
42 printf("GetHardwareversion retval is: %d\n", retval);
43 printf("GetHardwareversion get hardware versoin is: %s, %s, %s, %s, %s, %s, %s, %s\n", ctrlBoxBoardversion, driver1version, driver2version, driver3version, driver4version, driver5version, driver6version, endBoardversion);
44
45 retval = robot.GetFirmwareVersion(ctrlBoxBoardversion, driver1version, driver2version, driver3version, driver4version, driver5version, driver6version, endBoardversion);
46 printf("GetFirmwareversion retval is: %d\n", retval);
47 printf("GetHardwareversion get hardware versoin is: %s, %s, %s, %s, %s, %s, %s, %s\n", ctrlBoxBoardversion, driver1version, driver2version, driver3version, driver4version, driver5version, driver6version, endBoardversion);
48
49 return 0;
50}