讨论

ABB机器人socket通讯字符串解析怎么搞?

13087398283
13087398283
2026/07/28 16:22

刚干ABB没多久,项目上让机器人跟视觉那边走socket通讯,视觉发过来的字符串大概长这样:#OK,123,456,789$ ,中间用逗号隔了三个坐标。现在卡在怎么在机器人程序里把这串东西拆开,把那三个数取出来存到变量里。

robotstudio里用的是SocketWrite和SocketRead那几个指令,read出来是个字节数组,我要先转成string再搞吗?用Split那种函数行不行,有没有更直接的办法?最好是能给段RAPID代码参考一下,三克油。

73 3

全部回复 (3)

老婆孩子热炕头
老婆孩子热炕头#1

read出来直接转string就行,StrPart配合StrFind先把头尾的#和$去掉,再写个FOR循环找逗号位置切。

2026/07/28 20:14
小王
小王#2

你视觉发的格式定好了没?三个数都是定长还是变长的?变长的话split完还得转num。

2026/08/06 17:05
一切随缘
一切随缘#3

转string这步免不了,SocketRead读出来默认就是byte的,你得用StrToVal或者直接走字符串处理。ABB里没有像C#那种Split,但有个办法更直接——用StrPart配合StrFind循环切。我给你写个思路,你自己往里填:

先定义一个string变量比如stData:=SocketGetData的结果转的string,再定义num1 num2 num3三个num或者pos分量。然后用StrFind找第一个逗号位置,把逗号前面的用StrPart抠出来赋给中间变量,StrToVal转num;接着找第二个逗号、切、转;最后剩下的部分直接StrToVal就是第三个。这中间要注意read到的字符串里可能有回车换行符,#和$这两个分隔符也要么Strip掉要么用StrFind定位截掉。

关键一个点很多人栽过跟头:SocketRead读到的字节数跟你实际发的长度不一定一致,建议加个循环读直到收到$这个结束符再往下走,不然一次read可能只拿到半截数据,后面解析就全错。超时和错误处理也记得加,ERR_SOCK_TIMEOUT和ERR_SOCK_CLOSED都得处理,不然产线断网机器人就卡死了。

实在懒得自己写轮子,看看RobotStudio装没装PC Interface那个选件,里面有些现成的socket示例可以参考。

2026/08/24 08:02