更多内容请点击 R工控人 关注

********************************

如何获取更多经典文章?

关注 R工控人,定期分享实用资料与技术解答!!!

字符串整体直接转数组

1. 例如机器人通过Socket,接收到相机发来的数据为-1,2.3,4.5(表示x=-1,y=2.3,rz=4.5),通常做法为在字符串中寻找分隔符“,”,然后分割成若干数字字符串,再转化。具体参见拆分字符串并放入数组

2. 实际boo1:=StrToVal(string,VARiable)在使用时,只要前面字符串string与后面需要转化的变量形式一致,即可直接转化。

PERS num data{3}:=[-1,2.3,4.5];
  VAR string s_recv:= "-1,2.3,4.5";
  !字符串为"-1,2.3,4.5"
  VAR bool flag1;
  flag1:=StrToVal("["+s_recv+"]",data);
  !将字符串前后增加[],构成与data一致形式
     x:=data{1};
     y:=data{2};
     rz:=data{3};

3.又例如,可以将字符串”[1,2,3,4,5,6]”整体转化到jointtarget的robax中

VAR jointtargetjtmp:=[[1,2,3,4,5,6],[9E9,9E9,9E9,9E9,9E9,9E9]];
flag1:=StrToVal("[1,2,3,4,5,6]",jtmp.robax);

4.若接受的数据包括字符和数字,也可自己创建数据类型(例如以下的cvdata,第一个数据为string,其他数据为num)

RECORD cvdata
        string name;
        num x;
        num y;
        num rz;
ENDRECORD


    VAR socketdev socket1;
    var string s_recv:="";
    PERS cvdata d1:=["abc",6,7,8];


    PROC test1111()
        VAR bool flag1;
        SocketClose socket1;
        SocketCreatesocket1;
        SocketConnectsocket1,"127.0.0.1",8025;
        WHILETRUEDO
            SocketReceivesocket1\Str:=s_recv;
            flag1:=StrToVal("["+s_recv+"]",d1);     
        ENDWHILE

********************************

更多内容请点击 R工控人 关注

欢迎大家问题留言,沟通交流

关注 R工控人,定期分享实用资料与技术解答!!!

加客服微信:qiushu0517,开通VIP下载权限!