KUKA库卡机器人编程之字符串处理函数

 KUKA机器人维修     |      2020-04-29
在常规计算机语言(如:C#)中,字符变量的值是放在单引号内,字符串变量的值则是放在双引号内。而在库卡机器人KRL语言中,没严格意义上的字符串,只有基本字符数据类型,字符变量的值是放在双引号内,如果需要表示表示字符串,这时则需要适用字符数组来实现。本文主要以字符串处理函数展开的,接下来列出常用的系统自带的字符串处理函数。
一.字符串变量转换其他数据类型:

用 StrTo[…] 类型的函数可以将字符串变量转换为另一个数据类型,下表列出系统自带的字符串转换为其他数据类型的函数:

函数 返回值 说明
StrToAXIS (CHAR strValue[256], AXIS value) BOOL 字符串转AXIS类型数据
StrToBOOL (CHAR strValue[256], BOOL value) BOOL 字符串转布尔类型数据
StrToE3AXIS (CHAR strValue[256], E3AXIS value) BOOL 字符串转E3AXIS类型数据
StrToE6AXIS (CHAR strValue[256], E6AXIS value) BOOL 字符串转E6AXIS类型数据
StrToE3POS (CHAR strValue[256], E3POS value) BOOL 字符串转E3POS类型数据
StrToE6POS (CHAR strValue[256], E6POS value) BOOL 字符串转E6POS类型数据
StrToFRAME (CHAR strValue[256], FRAME value) BOOL 字符串转FRAME类型数据
StrToINT (CHAR strValue[256], INT value) BOOL 字符串转整数类型数据
StrToPOS (CHAR strValue[256], POS value) BOOL 字符串转POS类型数据
StrToREAL (CHAR strValue[256], REAL value) BOOL 字符串转实数类型数据

具体语法( 以StrToAxis函数为例):

       success = StrToAXIS(string, value)

 

元素 说明

success

返回值的变量类型:BOOL
-TRUE:转换成功               
-FALSE:转换不成功

String

1.输入的变量类型:CHAR
2.要将其转换为另一个数据类型的字符串变量.
3.如果字符串是一个集合,则单个分量必须已通过逗号隔开。

Value

1.输出变量的类型:AXIS
2.转换后值的输出变量

比如:

  •  
  •  
 DECL BOOL success, value success=StrToBOOL("TRUE"value)     ;Value=TRUE

二.字符串变量声明时的长度          

函数StrDeclLen() 根据其在程序声明部分中的声明确定字符串变量的长度。
语法:

         Length = StrDeclLen(StrVar[])
元素 说明

Length

1.返回值类型:INT
2.返回值的变量。返还值:字符串变量的长度如声明部分中所协议的一样

StrVar[]

1.变量类型:CHAR[]
2.要确定其长度的字符串变量:因为字符串变量 StrVar[ ] 是 CHAR 类型的数组,则单个字符以及常数对于长度确定来说非法。

比如:

  •  
  •  
  •  
CHAR ProName[24]INT StrLengthStrLength = StrDeclLen(ProName[])      ;strLength=24

 

三.字符串变量初始化后的长度          

与已在程序初始化部分确定的一样,函数 StrLen() 确定字符串变量的字符串长度。

语法:

         Length = StrLen(StrVar[])
元素 说明

Length

1.返回值类型:INT
2.返回值的变量。返还值:目前已分配给字符串变量的字符数量

StrVar[]

1.变量类型:CHAR[]
2.要确定其长度的字符串变量

比如:

  •  
  •  
  •  
  •  
CHAR ProName[24]INT StrLengthProName[24]="Pick_Part"StrLength = StrLen(ProName[])   ;StrLength=9

四.删除字符串变量的内容   

函数 StrClear() 用于删除字符串变量的内容。     

语法:

         Result = StrClear(StrVar[])
元素 说明

Result

1.返回值类型:BOOL
2.返回值的变量。返还值:
   -删除了字符串变量的内容:TRUE

   -没有删除字符串变量的内容:FALSE

StrVar[]

1.变量类型:CHAR[]
2.应删除其字符串的变量

比如:

  •  
  •  
  •  
IF (NOT StrClear($Loop_Msg[])) THENHALTENDIF

五.扩展字符串变量   

用函数StrAdd() 可以给字符串变量扩展其他字符串变量的内容。

语法:

         Sum = StrAdd(StrDest[],StrToAdd[])
元素 说明

Sum

1.返回值类型:INT
2.返回值的变量。返还值:StrDest[ ] 和 StrToAdd[ ] 的总和:
如果总和长于事先定义的 StrDest[ ] 长度,则返还值为0。即使在总和大于 470 个字符时,也是这种情况。

StrDest[]

1.变量类型:CHAR[]
2.待扩展的字符串变量:
因为字符串变量 StrDest[ ] 是 CHAR 类型的数组,则单个字符以及常数非法。

StrToAdd[]

1.变量类型:CHAR 框
2.要扩展的字符串

比如:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
DECL CHAR A[50], B[50]DECL INT ABA[] = "This is an "B[] = "example"AB = StrAdd(A[],B[])    ;A[]="This is an example";AB=18

六.搜索字符串变量   

用函数StrFind() 可以搜索字符串变量的字符串。

语法:

Result = StrFind(StartAt, StrVar[], StrFind[], CaseSens)
元素 说明

Result

1.返回值类型:INT
2.返回值的变量。返还值:第一个找到的字符的位置。如果没有找到字符,则返还值为 0。

StartAt

1.变量类型:INT
2.在该位置时启动搜索。

StrVar[]

1.变量类型:CHAR 框
2.带搜索的字符

StrFind[]

1.变量类型:CHAR 框
2.搜索该字符

CaseSens

#CASE_SENS:要区分大小写。

#NOT_CASE_SENS:不区分大小写

比如:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
DECL CHAR A[5]DECL INT BA[]="ABCDE"B = StrFind(1, A[], "AC"#CASE_SENS)       ;B=0B = StrFind(1, A[], "a"#NOT_CASE_SENS)    ;B=1B = StrFind(1, A[], "BC"#Case_Sens)       ;B=2B = StrFind(1, A[], "bc"#NOT_CASE_SENS)   ;B=2

七.比较字符串变量   

用函数StrComp() 可以比较两个字符串变量。

语法:

 Result= StrComp(StrComp1[], StrComp2[], CaseSens)
元素 说明
Result
1.返回值类型:BOOL
2.返回值的变量。返还值:
   -字符串相符:TRUE
   -字符串不相符:FALSE

StrComp1[]

1.变量类型:CHAR[]
2.与 StrComp2[] 比较的字符串

StrComp2[]

1.变量类型:CHAR 框
2. StrComp2[] 比较的字符串

CaseSens

#CASE_SENS:要区分大小写。
#NOT_CASE_SENS:不区分大小写。

比如:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
DECL CHAR A[5]DECL BOOL BA[]="ABCDE"B = StrComp(A[], "ABCDE"#CASE_SENS)       ;B=TRUEB = StrComp(A[], "abcde"#NOT_CASE_SENS)   ;B=TRUEB = StrComp(A[], "abcd"#NOT_CASE_SENS)    ;B=FALSEB = StrComp(A[], "acbde"#NOT_CASE_SENS)   ;B=FALSE

八.复制字符串变量   

用函数StrCopy() 可以将字符串变量的内容复制到另一个字符串变量。

语法:

         Result = StrCopy(StrDest[],StrSource[])
元素 说明
Result
1.返回值类型:BOOL
2.返回值的变量。返还值
  -成功地复制了字符串变量:TRUE
  -没有复制字符串变量:FALSE

StrDest[]

1.变量类型:CHAR[]
2.将字符串复制到该字符串变量中:
因为字符串变量 StrDest[ ] 是 CHAR 类型的数组,则单个字符以及常数非法。

StrSource[]

1.变量类型:CHAR 框
2.复制该字符串变量的内容。

比如:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
DECL CHAR A[25], B[25]DECL BOOL CA[] = ""B[] = "Example"= StrCopy(A[], B[]);A[]="Example";C=TRUE

九.小结:

前面主要以系统自带的字符串处理函数展开的,比如数据转换的函数,用户也可以自己通过SREAD指令来实现,这里就不一一详述。另外,用户也可以扩展自己的函数或子程序库来实现一些功能,一便日后快速使用,例如:字符串分割/ 字符串截取/其他数据类型转换字符串/判断字符串中的空格等。