一、前言
App(应用程序)和Fanuc机械臂进行Socket通讯,通过将“功能码”和“点位坐标”转换成字符串发送到服务端/客户端,并且也需要App和Fanuc机械臂Karel程序中能将接收到字符串解析出“功能码”和“点位坐标”。本文章主要是介绍在Fanuc的Karel程序中,从一串字符串中如何解析所需要的内容。
二、通讯协议
| 起始符 | 功能码 | 间隔符 |
X的坐标 (mm) | 间隔符 |
Y的坐标 (mm) | 间隔符 |
Z的坐标 (mm) | 间隔符 |
Rx的坐标 (⁰) | 间隔符 |
Ry的坐标 (⁰) | 间隔符 |
Ry的坐标 (⁰) | 结束符 |
| # | FC | , | 保留三位小数 | , | 保留三位小数 | , | 保留三位小数 | , | 保留二位小数 | , | 保留二位小数 | , | 保留二位小数 | # |
eg:#4, 12.332, 13.114, 14.224, 20.01, 30.22, -15.22#
三、解析示例
会使用到的Karel中命令
1. INDEX 检索STRING中指定字符的索引

2. SUB_STR 截取指定位置和指定长度的字符


3.CNV_STR_REAL 将STRING转换成REAL

具体程序实例如下:
ROUTINE RecvData2Pos(str_input:STRING)
BEGIN
tmp_num = INDEX(str_input,',')
tmp_str = SUB_STR(str_input,tmp_num+1,200)
FOR count=1 TO 6 DO
--获取string中第一个','的索引
tmp_num = INDEX(tmp_str,',')
--先截取tmp_str中的[1]~[tmp_num-1]的字符,再转换成real
CNV_STR_REAL(SUB_STR(tmp_str,1,tmp_num-1),analysis_pos[count])
WRITE('analysis_pos[count]=' ,analysis_pos[count],CR)
--截取剩下的字符串
tmp_str = SUB_STR(tmp_str,tmp_num+1,200)
ENDFOR
END RecvData2Pos
Fanuc机械臂Karel程序解析字符串通讯协议
本文详细介绍了如何在Fanuc的Karel程序中解析通过Socket通讯接收到的包含“功能码”和“点位坐标”的字符串。通讯协议定义了字符串的结构,包括各坐标和角度的格式。通过使用INDEX和SUB_STR等Karel命令,将字符串拆分成各个部分并转换为REAL数值。提供的程序实例展示了如何逐个提取和转换坐标数据。
3489





