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指令來實現,這里就不一一詳述。另外,用戶也可以擴展自己的函數或子程序庫來實現一些功能,一便日后快速使用,例如:字符串分割/ 字符串截取/其他數據類型轉換字符串/判斷字符串中的空格等。