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*/
9int SetDO(int id, byte status, byte smooth, byte 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*/
9int SetToolDO(int id, byte status, byte smooth, byte 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*/
8int SetAO(int id, float value, byte 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*/
8int SetToolAO(int id, float value, byte 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*/
8int GetDI(int id, byte block, ref byte level);

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*/
8int GetToolDI(int id, byte block, ref byte level);

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*/
9int WaitDI(int id, byte 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*/
10int WaitMultiDI(int mode, int id, byte 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*/
9int WaitToolDI(int id, byte 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*/
8int GetAI(int id, byte block, ref float persent);

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*/
8int GetToolAI(int id, byte block, ref float persent);

4.12. 获取机器人末端记录按钮状态

1/**
2* @brief 获取机器人末端记录按钮状态
3* @param [out] state 按钮状态,0-按下,1-松开
4* @return 错误码
5*/
6int GetAxlePointRecordBtnState(ref byte state);

4.13. 等待控制箱模拟量输入

 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*/
10int WaitAI(int id, int sign, float value, int max_time, int opt);

4.14. 等待工具模拟量输入

 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*/
10int WaitToolAI(int id, int sign, float value, int max_time, int opt);

4.15. 获取机器人末端DO输出状态

1/**
2* @brief 获取机器人末端DO输出状态
3* @param [out] do_state DO输出状态,do0~do1对应bit1~bit2,从bit0开始
4* @return 错误码
5*/
6int GetToolDO(ref byte do_state);

4.16. 获取机器控制器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*/
7int GetDO(ref int do_state_h, ref int do_state_l);

4.17. 代码示例

 1private void btnIOTest_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6    byte status = 1;
 7    byte smooth = 0;
 8    byte block = 0;
 9    byte di = 0, tool_di = 0;
10    float ai = 0.0f, tool_ai = 0.0f;
11    float value = 0.0f;
12    int i;
13
14    for (i = 0; i < 16; i++)//所有控制器IO输出置 1
15    {
16        robot.SetDO(i, status, smooth, block);
17        robot.WaitMs(500);
18    }
19
20    status = 0;
21
22    for (i = 0; i < 16; i++)//所有控制器IO输出置 0
23    {
24        robot.SetDO(i, status, smooth, block);
25        robot.WaitMs(500);
26    }
27
28    status = 1;
29
30    for (i = 0; i < 2; i++)//所有工具端IO输出置 1
31    {
32        robot.SetToolDO(i, status, smooth, block);
33        robot.WaitMs(500);
34    }
35    status = 0;
36    for (i = 0; i < 2; i++)//所有工具端IO输出置 0
37    {
38        robot.SetToolDO(i, status, smooth, block);
39        robot.WaitMs(500);
40    }
41
42    value = 50.0f;
43    robot.SetAO(0, value, block);//设置控制器0号模拟量输出50%
44    value = 100.0f;
45    robot.SetAO(1, value, block);//设置控制器1号模拟量输出100%
46    robot.WaitMs(300);
47    value = 0.0f;
48    robot.SetAO(0, value, block);//设置控制器0号模拟量输出0%
49    value = 0.0f;
50    robot.SetAO(1, value, block);//设置控制器1号模拟量输出0%
51
52    value = 100.0f;
53    robot.SetToolAO(0, value, block);//设置工具端0号模拟量输出100%
54    robot.WaitMs(1000);
55    value = 0.0f;
56    robot.SetToolAO(0, value, block);//设置工具端0号模拟量输出0%
57
58    robot.GetDI(0, block, ref di);//获取数字输入
59    Console.WriteLine($"di0 : {di}");
60    robot.WaitDI(0, 1, 0, 2);       //等待0号端口数字量输入1,一直等待
61    Console.WriteLine("wait di success");
62    robot.WaitMultiDI(0, 3, 0, 10000, 2);   //等待多路与, 0和1端口,输入置1,等待时间10000ms, 一直等待
63    Console.WriteLine("wait multi di success");
64    robot.GetToolDI(1, block, ref tool_di);//获取工具端数字量输入
65    Console.WriteLine($"tool_di1 : {tool_di}");
66    robot.WaitToolDI(1, 0, 0, 2);          //一直等待
67    Console.WriteLine("wait tool di success");
68    robot.GetAI(0, block, ref ai);
69    Console.WriteLine($"ai0 : {ai}");
70    robot.GetAI(1, block, ref ai);
71    Console.WriteLine($"ai1 : {ai}");
72    robot.WaitAI(0, 1, 50.0f, 0, 2);    //等待0号口, 小于 , %50, 一直等待
73    Console.WriteLine("wait ai success");
74    robot.WaitToolAI(0, 1, 50, 0, 2);   //一直等待
75    Console.WriteLine("wait tool ai success");
76    robot.GetToolAI(0, block, ref tool_ai);
77    Console.WriteLine($"tool_ai0 : {tool_ai}");
78}

4.18. 获取机器人软件版本

1/**
2* @brief 获取机器人软件版本信息
3* @param [out] robotModel 机器人型号
4* @param [out] webVersion web版本
5* @param [out] controllerVersion 控制器版本
6* @return 错误码
7*/
8int GetSoftwareVersion(ref string robotModel, ref string webVersion, ref string controllerVersion);

4.19. 获取机器人硬件版本

 1/**
 2* @brief 获取机器人硬件版本信息
 3* @param [out] ctrlBoxBoardVersion 控制箱载板硬件版本
 4* @param [out] driver1Version 驱动器1硬件版本
 5* @param [out] driver1Version 驱动器2硬件版本
 6* @param [out] driver1Version 驱动器3硬件版本
 7* @param [out] driver1Version 驱动器4硬件版本
 8* @param [out] driver1Version 驱动器5硬件版本
 9* @param [out] driver1Version 驱动器6硬件版本
10* @param [out] endBoardVersion 末端板硬件版本
11* @return 错误码
12*/
13int GetHardwareVersion(ref string ctrlBoxBoardVersion, ref string driver1Version, ref string driver2Version, ref string driver3Version,ref string driver4Version, ref string driver5Version, ref string driver6Version, ref string endBoardVersion);

4.20. 获取机器人固件版本

 1/**
 2* @brief 获取机器人固件版本信息
 3* @param [out] ctrlBoxBoardVersion 控制箱载板固件版本
 4* @param [out] driver1Version 驱动器1固件版本
 5* @param [out] driver1Version 驱动器2固件版本
 6* @param [out] driver1Version 驱动器3固件版本
 7* @param [out] driver1Version 驱动器4固件版本
 8* @param [out] driver1Version 驱动器5固件版本
 9* @param [out] driver1Version 驱动器6固件版本
10* @param [out] endBoardVersion 末端板固件版本
11* @return 错误码
12*/
13int GetFirmwareVersion(ref string ctrlBoxBoardVersion, ref string driver1Version, ref string driver2Version, ref string driver3Version,ref string driver4Version, ref string driver5Version, ref string driver6Version, ref string endBoardVersion);

4.21. 代码示例

 1private void btnGetVersions_Click(object sender, EventArgs e)
 2{
 3    string[] ver = new string[20];
 4    int rtn = 0;
 5    rtn = robot.GetSoftwareVersion(ref ver[0], ref ver[1], ref ver[2]);
 6    rtn = robot.GetHardwareVersion(ref ver[3], ref ver[4], ref ver[5], ref ver[6], ref ver[7], ref ver[8], ref ver[9], ref ver[10]);
 7    rtn = robot.GetFirmwareVersion(ref ver[11], ref ver[12], ref ver[13], ref ver[14], ref ver[15], ref ver[16], ref ver[17], ref ver[18]);
 8    Console.WriteLine($"robotmodel  is: {ver[0]}");
 9    Console.WriteLine($"webVersion  is: {ver[1]}");
10    Console.WriteLine($"controllerVersion  is: {ver[2]}");
11    Console.WriteLine($"Hard ctrlBox Version  is: {ver[3]}");
12    Console.WriteLine($"Hard driver1 Version  is: {ver[4]}");
13    Console.WriteLine($"Hard driver2 Version  is: {ver[5]}");
14    Console.WriteLine($"Hard driver3 Version  is: {ver[6]}");
15    Console.WriteLine($"Hard driver4 Version  is: {ver[7]}");
16    Console.WriteLine($"Hard driver5 Version  is: {ver[8]}");
17    Console.WriteLine($"Hard driver6 Version  is: {ver[9]}");
18    Console.WriteLine($"Hard end Version  is: {ver[10]}");
19    Console.WriteLine($"Firm ctrlBox Version  is: {ver[11]}");
20    Console.WriteLine($"Firm driver1 Version  is: {ver[12]}");
21    Console.WriteLine($"Firm driver2 Version  is: {ver[13]}");
22    Console.WriteLine($"Firm driver3 Version  is: {ver[14]}");
23    Console.WriteLine($"Firm driver4 Version  is: {ver[15]}");
24    Console.WriteLine($"Firm driver5 Version  is: {ver[16]}");
25    Console.WriteLine($"Firm driver6 Version  is: {ver[17]}");
26    Console.WriteLine($"Firm end Version  is: {ver[18]}");
27}