EPSON机械手支持无协议通讯.即用户可以自由规定所通讯数据的格式和内容,方便用户和各种设备进行数据通讯.
与上位机或者其他设备通讯时,首先需要双方协商好通讯数据的格式.如与视觉进行通讯时,协定发送内容为:
标识符 ; 数据1 ; 数据2 ; 数据3; … ; 数据n
例如协定好与相机做通讯时,相机发送的”XY;100.05;-36.53;60;1”
其中”XY”表示发送过来的数据是XY坐标数据,后面的***个数据是X坐标,第二个数据是Y坐标,第三个数据是U坐标即产品角度,第四个数据为NG或者OK标记.
这样根据协定好的格式,我们就可以进行数据交互与分析了.
数据拆分:ParseStr指令
ParseStr指令可以根据指定的分隔符,将字符串拆分为多个.
ParseStr 字符串$, 标记$(), 分隔符$
例如:
String toks$(0)
Integer i
ParseStr "1 2 3 4", toks$(), " "
For i = 0 To UBound(toks)
Print "token ", i, " = ", toks$(i)
Next i
则将"1 2 3 4"分别保存到toks$(0), toks$(1), toks$(2), toks$(3)中
示例程序:
Function task08_ParseTest
'数据拆分测试程序:
'正确的数据格式:XY类型
Call task08_ParseStr("XY;100.05;-36.53;60;1")
'正确的数据格式:ST类型
Call task08_ParseStr("ST;D000")
'错误或未定义的数据格式:ST类型
Call task08_ParseStr("AACC;2836")
Fend
Function task08_ParseStr(ByVal strA$ As String)
'常用通讯数据拆解
String toks$(0) '定义一个字符串数组(不限定长度)
Real vx, vy, vu, vNG
Integer i
ParseStr strA$, toks$(), ";" '拆分函数:将字符串按间隔符号";"拆分成多组数据.
For i = 0 To UBound(toks$) '调试用:输出所有拆分结果
Print "token ", i, " = ", toks$(i)
Next i
'根据接收到的类型进行数据处理
If toks$(0) = "XY" Then
Print "接收到XY类型数据."
If UBound(toks$) = 4 Then
Print "接收类型为:", toks$(0)
vx = Val(toks$(1))
vy = Val(toks$(2))
vu = Val(toks$(3))
vNG = Val(toks$(4))
Print "接收到的xyu和NG为:", vx, vy, vu, vNG
Else
Print "接收格式数据不足!"
EndIf
ElseIf toks$(0) = "ST" Then '其他数据的处理
Else
Print "未知的数据类型:请检查上位机数据格式!"
Error 8010 '自定义一个错误编号触发错误状态以提醒用户
EndIf
Fend
新闻中心