14. 其他接口

14.1. 传动带启动、停止

1/**
2* @brief 传动带启动、停止
3* @param [in] status 状态,1-启动,0-停止
4* @return 错误码
5*/
6int ConveyorStartEnd(byte status);

14.2. 记录IO检测点

1/**
2* @brief 记录IO检测点
3* @return 错误码
4*/
5int ConveyorPointIORecord();

14.3. 记录A点

1/**
2* @brief 记录A点
3* @return 错误码
4*/
5int ConveyorPointARecord();

14.4. 记录参考点

1/**
2* @brief 记录参考点
3* @return 错误码
4*/
5int ConveyorRefPointRecord();

14.5. 记录B点

1/**
2* @brief 记录B点
3* @return 错误码
4*/
5int ConveyorPointBRecord();

14.6. 传送带工件IO检测

1/**
2* @brief 传送带工件IO检测
3* @param [in] max_t 最大检测时间,单位ms
4* @return 错误码
5*/
6int ConveyorIODetect(int max_t);

14.7. 获取物体当前位置

1/**
2* @brief 获取物体当前位置
3* @param [in] mode 1-跟踪抓取,2-跟踪运动,3-TPD跟踪
4* @return 错误码
5*/
6int ConveyorGetTrackData(int mode);

14.8. 传动带跟踪开始

1/**
2* @brief 传动带跟踪开始
3* @param [in] status 状态,1-启动,0-停止
4* @return 错误码
5*/
6int ConveyorTrackStart(byte status);

14.9. 传动带跟踪停止

1/**
2* @brief 传动带跟踪停止
3* @return 错误码
4*/
5int ConveyorTrackEnd();

14.10. 传动带参数配置

 1/**
 2* @brief 传动带参数配置
 3* @param [in] encChannel 编码器通道 1~2
 4* @param [in] resolution 编码器转一圈的脉冲数
 5* @param [in] lead 编码器转一圈传送带行走距离
 6* @param [in] wpAxis 工件坐标系编号 针对跟踪运动功能选择工件坐标系编号,跟踪抓取、TPD跟踪设为0
 7* @param [in] vision 是否配视觉  0-不配,1-配
 8* @param [in] speedRadio 速度比:针对传送带跟踪抓取选项(1-100)其他选项默认为1
 9* @return 错误码
10*/
11int ConveyorSetParam(int encChannel, int resolution, double lead, int wpAxis, int vision, double speedRadio);

14.11. 设置传动带抓取点补偿

1/**
2* @brief 设置传动带抓取点补偿
3* @param [in] cmp 补偿位置 double[3]{x, y, z}
4* @return 错误码
5*/
6int ConveyorCatchPointComp(double[] cmp);

14.12. 传送带跟踪直线运动

 1/**
 2* @brief 传送带跟踪直线运动
 3* @param [in] name 运动点名称
 4* @param [in] tool 工具坐标号,范围[0~14]
 5* @param [in] wobj 工件坐标号,范围[0~14]
 6* @param [in] vel 速度百分比,范围[0~100]
 7* @param [in] acc 加速度百分比,范围[0~100],暂不开放
 8* @param [in] ovl 速度缩放因子,范围[0~100]
 9* @param [in] blendR [-1.0]-运动到位(阻塞),[0~1000.0]-平滑半径(非阻塞),单位mm
10* @return 错误码
11*/
12int ConveyorTrackMoveL(string name, int tool, int wobj, float vel, float acc, float ovl, float blendR);

14.13. 代码示例

 1private void btnConvert_Click(object sender, EventArgs e)
 2    {
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5    DescPose pos1 = new DescPose(0, 0, 0, 0 ,0 ,0);
 6    DescPose pos2 = new DescPose(0, 0, 0, 0, 0, 0);
 7
 8    pos1.tran.x = -351.175;
 9    pos1.tran.y = 3.389;
10    pos1.tran.z = 431.172;
11    pos1.rpy.rx = -179.111;
12    pos1.rpy.ry = -0.241;
13    pos1.rpy.rz = 90.388;
14
15    pos2.tran.x = -333.654;
16    pos2.tran.y = -229.003;
17    pos2.tran.z = 404.335;
18    pos2.rpy.rx = -179.139;
19    pos2.rpy.ry = -0.779;
20    pos2.rpy.rz = 91.269;
21    int rtn = -1;
22
23    double[] cmp = new double[3] { 0, 9.99, 0};
24    rtn = robot.ConveyorCatchPointComp(cmp);
25    if(rtn != 0)
26    {
27        return;
28    }
29    Console.WriteLine($"ConveyorCatchPointComp: rtn  {rtn}");
30
31    rtn = robot.MoveCart(pos1, 0, 0, 100.0f, 180.0f, 100.0f, -1.0f, -1);
32    Console.WriteLine($"MoveCart: rtn  {rtn}");
33
34    rtn = robot.ConveyorIODetect(10000);
35    Console.WriteLine($"ConveyorIODetect: rtn  {rtn}");
36
37    robot.ConveyorGetTrackData(1);
38    rtn = robot.ConveyorTrackStart(1);
39    Console.WriteLine($"ConveyorTrackStart: rtn  {rtn}");
40
41    rtn = robot.ConveyorTrackMoveL("cvrCatchPoint", 0, 0, 100.0f, 0.0f, 100.0f, -1.0f, 0, 0);
42    Console.WriteLine($"ConveyorTrackMoveL: rtn  {rtn}");
43
44    rtn = robot.MoveGripper(1, 59, 43, 21, 30000, 0);
45    Console.WriteLine($"MoveGripper: rtn  {rtn}");
46
47    rtn = robot.ConveyorTrackMoveL("cvrRaisePoint", 0, 0, 100.0f, 0.0f, 100.0f, -1.0f, 0, 0);
48    Console.WriteLine($"ConveyorTrackMoveL: rtn  {rtn}");
49
50    rtn = robot.ConveyorTrackEnd();
51    Console.WriteLine($"ConveyorTrackEnd: rtn  {rtn}");
52
53    rtn = robot.MoveCart(pos2, 0, 0, 100.0f, 180.0f, 100.0f, -1.0f, -1);
54    Console.WriteLine($"MoveCart: rtn  {rtn}");
55
56    rtn = robot.MoveGripper(1, 100, 43, 21, 30000, 0);
57    Console.WriteLine($"MoveGripper: rtn  {rtn}");
58}

14.14. 获取SSH公钥

1/**
2* @brief 获取SSH公钥
3* @param [out] keygen 公钥
4* @return 错误码
5*/
6int GetSSHKeygen(ref string keygen);

14.15. 计算指定路径下文件的MD5值

1/**
2* @brief 计算指定路径下文件的MD5值
3* @param [in] file_path 文件路径包含文件名,默认Traj文件夹路径为:"/fruser/traj/",如"/fruser/traj/trajHelix_aima_1.txt"
4* @param [out] md5 文件MD5值
5* @return 错误码
6*/
7int ComputeFileMD5(string file_path, ref string md5);

14.16. 获取机器人急停状态

1/**
2* @brief 获取机器人急停状态
3* @param [out] state 急停状态,0-非急停,1-急停
4* @return 错误码
5*/
6int GetRobotEmergencyStopState(ref byte state);

14.17. 获取SDK与机器人的通讯状态

1/**
2* @brief 获取SDK与机器人的通讯状态
3* @param [out] state 通讯状态,0-通讯正常,1-通讯异常
4* @return 错误码
5*/
6int GetSDKComState(ref int state)

14.18. 获取安全停止信号

1/**
2* @brief 获取安全停止信号
3* @param [out] si0_state 安全停止信号SI0,0-无效,1-有效
4* @param [out] si1_state 安全停止信号SI1,0-无效,1-有效
5* @return 错误码
6*/
7int GetSafetyStopState(ref byte si0_state, ref byte si1_state)

14.19. 获取机器人DH参数补偿值

1/**
2* @brief 获取安全停止信号
3* @param [out] dhCompensation 机器人DH参数补偿值(mm) [cmpstD1,cmpstA2,cmpstA3,cmpstD4,cmpstD5,cmpstD6]
4* @return 错误码
5*/
6int GetDHCompensation(ref double[] dhCompensation)

14.20. 代码示例

 1private void btnTestOthers_Click(object sender, EventArgs e)
 2    {
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5    int rtn = -1;
 6    double[] dhCompensation = new double[6]{0,0,0,0,0,0};
 7    rtn = robot.GetDHCompensation(ref dhCompensation);
 8    Console.WriteLine($"GetDHCompensation:  rtn :{rtn}    {dhCompensation[0]}  {dhCompensation[1]}  {dhCompensation[2]}  {dhCompensation[3]}  {dhCompensation[4]}  {dhCompensation[5]}");
 9    string ssh = "";
10    rtn = robot.GetSSHKeygen(ref ssh);
11    Console.WriteLine($"GetSSHKeygen:  ssh {ssh}  rtn  {rtn}");
12    string file_path = "/fruser/test.txt";
13    string md5 = "";
14    robot.ComputeFileMD5(file_path, ref md5);
15
16    byte state = 255;
17    rtn = robot.GetRobotEmergencyStopState(ref state);
18    Console.WriteLine($"GetRobotEmergencyStopState:  rtn  {rtn}   state {state}");
19
20    int comState = -1;
21    rtn = robot.GetSDKComState(ref comState);
22    Console.WriteLine($"GetSDKComState:  rtn  {rtn}   state  {comState}");
23
24    byte si0_state = 255;
25    byte si1_state = 255;
26
27    rtn = robot.GetSafetyStopState(ref si0_state, ref si1_state);
28    Console.WriteLine($"GetSafetyStopState:  rtn  {rtn}   si0_state  {si0_state}   si1_state  {si1_state}");
29}

14.21. 上传点位表

1/**
2* @brief 点位表从本地计算机上传至机器人控制器
3* @param [in] pointTableFilePath 点位表在本地计算机的绝对路径C://test/pointTabl e1.db
4* @return 错误码
5*/
6int PointTableUpLoad(string pointTableFilePath);

14.22. 下载点位表

1/**
2* @brief 点位表从机器人控制器下载到本地计算机
3* @param [in] pointTableName 控制器中的点位表名称:pointTable1.db
4* @param [in] saveFilePath 点位表下载到计算机的路径 C://test/
5* @return 错误码
6*/
7int PointTableDownLoad(string pointTableName, string saveFilePath);

14.23. 点位表更新Lua程序

1/**
2* @brief 使用给定的点位表更新lua程序中的点
3* @param [in] pointTableName 控制器中的点位表名称:"pointTable1.db", 当点位表为空,即""时,表示将lua程序更新为未应用点位表的初始程序
4* @param [in] luaFileName 要更新的lua文件名称   "test.lua"
5* @param [out] errorStr 点位表更新lua错误信息
6* @return 错误码
7*/
8int PointTableUpdateLua(string pointTableName, string luaFileName, ref string errorStr);

14.24. 代码示例

 1private void btnUpload_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5    int rtn = -1;
 6    rtn = robot.PointTableUpLoad("C://point_table_test.db");
 7    Thread.Sleep(2000);
 8    rtn = robot.PointTableDownLoad("point_table_test.db", "D://zDOWN/");
 9    string errorStr = "";
10    rtn = robot.PointTableUpdateLua("point_table_test.db", "test.lua", ref errorStr);
11    Console.WriteLine($"PointTableSwitch rtn  is {rtn}" + errorStr);
12    rtn = robot.ProgramLoad("/fruser/test.lua");
13    rtn = robot.ProgramRun();
14}

14.25. 初始化日志参数

在 C#SDK-v1.0.5 版本加入.

 1/**
 2* @brief 初始化日志参数
 3* @param [in] logType:输出模式,DIRECT-直接输出;BUFFER-缓冲输出;ASYNC-异步输出
 4* @param [in] logLevel:日志过滤等级,ERROR-错误;WARNING-警告;INFO-信息;DEBUG-调试
 5* @param [in] filePath: 文件保存路径,如“D://Log/”
 6* @param [in] saveFileNum:保存文件个数,同时超出保存文件个数和保存文件天数的文件将被删除
 7* @param [in] saveDays: 保存文件天数,同时超出保存文件个数和保存文件天数的文件将被删除
 8* @return 错误码
 9*/
10public int LoggerInit(FrLogType logType = FrLogType.DIRECT, FrLogLevel logLevel = FrLogLevel.ERROR, string filePath = "", int saveFileNum = 10, int saveDays = 10);

14.26. 设置日志过滤等级

在 C#SDK-v1.0.5 版本加入.

1/**
2* @brief 设置日志过滤等级;
3* @param [in] logLevel: 日志过滤等级,ERROR-错误;WARNING-警告;INFO-信息;DEBUG-调试
4* @return 错误码
5*/
6public int SetLoggerLevel(FrLogLevel logLevel);

14.27. 代码示例

在 C#SDK-v1.0.5 版本加入.

1private void btnTestLog_Click(object sender, EventArgs e)
2{
3    robot = new Robot();//实例化机器人对象
4    robot.RPC("192.168.58.2"); //与控制箱建立连接
5    string path = "D://log/";
6    robot.LoggerInit(FrLogType.ASYNC, FrLogLevel.DEBUG, path, 5, 5);
7    robot.SetLoggerLevel(FrLogLevel.INFO);
8}

14.28. 设置机器人外设协议

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 设置机器人外设协议
3* @param [in] protocol 机器人外设协议号 4096-扩展轴控制卡;4097-ModbusSlave;4098-ModbusMaster
4* @return 错误码
5*/
6int SetExDevProtocol(int protocol);

14.29. 获取机器人外设协议

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 获取机器人外设协议
3* @param [out] protocol 机器人外设协议号 4096-扩展轴控制卡;4097-ModbusSlave;4098-ModbusMaster
4* @return 错误码
5*/
6int GetExDevProtocol(ref int protocol);

14.30. 代码示例

在 C#SDK-v1.0.6 版本加入.

 1private void btnSetProto_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6    int protocol = 4098;//ModbusMaster
 7    robot.SetExDevProtocol(protocol);
 8
 9    robot.GetExDevProtocol(ref protocol);
10    Console.Writeline(“protocol is ” + protocol);
11}