对于有一定通讯基础的小伙伴来说,掌握基本的通讯指令,要将指令用于实际的项目中,特别是与机器视觉通讯时,接收视觉点位在机器人全局点中的使用。此篇章对socket搜索指令,寻位指令,转化指令进行进一步讲解。
一、字符串搜索指令STRFIND
1、对于非标视觉通讯来说,机器人触发拍照指令后,视觉软件会返回1个或者多个点位给到机器人,下图我们使用通讯助手进行视觉软件的模拟,格式为:点位名称,X,Y,Z,RX,RY,RZ的值。
2、在示教器上添加对应的赋值语句,创建一个num型的变量为found表示寻位长度变量,一个num型的变量start表示起始位变量,一个num型的变量为long表示切割套接字长度
3、添加对应的赋值语句,左侧为我们的寻位长度,右侧为搜索指令STRFIND1( * , * , * )中的需要填入的3个参数。
第一个参数received_string为我们用来接收视觉发送过来的字符串变量
第二个参数start为我们创建的用来接收字符串的起始位变量,对start进行赋值,让其等于found+1
(因为有把分割号的1个长度计算进去)
第三个参数为我们用来分割数据的分割符号
4、以我们测试的通讯软件为例,其中第一位为点位名称pos1,那么我们运行完程序后,我们的found变量中的长度就会为5(从第一分割号向前算)
二、寻找部分字符串指令
1、设置套接字切割长度long(因为每次提取字符串的长度都是不一样的,所以我们的切割长度=搜索长度-起始位)
2、我们需要把对应的字符串拆分来用,需要用到字符串部分提取指令STRPART
3、STRPART指令对应参数的意义
第一个参数received_string为我们用来接收视觉发送过来的字符串变量
第二个参数start为我们创建的用来接收字符串的起始位变量
第三个参数long为我们切割的长度
4、程序运行后就将POS1点位名称放进string_name点位名称这个字符串变量中
三、字符串变量转化指令
1、字符串转化指令STRTOVAL,左侧为bool型的变量,转化成功时为true,转化失败时为false。
右侧为STRTOVAL指令将string_x字符串变量转为num_x的实数型变量。
2、其中string_x中的数据也需要从上一步中strpart中提取
四、连续提取数据
1、收到数据时,需要对数据进行一个连续的拆分与提取,此时需要插入一个循环。
0-3循环4次,分别拿点位名称,X,Y,Z值。
下面提供一个测试案例给各位小伙伴们参考,希望大家们提出自己见解,优化程序。互相学习,望共勉!