在 KUKA 机器人语言 (KRL) 中,是否可以获取数组的长度,或者有没有办法循环遍历数组中的所有值?目前我将数组长度存储在一个单独的变量中,并这样做:

; In the DAT file:
DECL CONST INT FOO_LENGTH = 3
DECL CONTS INT FOO[3]
FOO[1] = 12
FOO[2] = 34
FOO[3] = 56

; In the SRC file:
INT IDX
FOR IDX = 1 TO FOO_LENGTH
  do_something(FOO[IDX])
ENDFOR

基本上我想摆脱 FOO_LENGTH 变量。

最佳答案

对于 CHAR 数组,有一个函数

INT STRDECLEN (CHAR STRVAR[470]:OUT)

这将完成工作并确定字符数组的长度。例如。你可以写

DEF stringtests( )
char myString[80]
int i,n
n = strdecllen(myString[])
for i = 1 to n
  myString[i] = "Z"
endfor
n = strdecllen(myStringDat[])
for i = 1 to n
  myStringDat[i] = "Z"
endfor
end

带有相应的 .dat 文件
DEFDAT  stringtests PUBLIC
CHAR myStringDat[10]
myStringDat[]="ZZZZZZZZZZ"
ENDDAT

第二个循环看不到也不需要知道数组的长度。

不幸的是,似乎没有用于任意数据类型数组的函数,请参阅 http://www.robot-forum.com/robotforum/kuka-robot-forum/kuka-(possibly)-complete-list-of-functions-and-subprograms/ 下的官方和非官方 KRL 函数列表。因此,您必须编写同时采用数组名称和长度的函数或子例程,或者知道您的数组长度。

关于arrays - KRL : Length of an array,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20912064/

10-11 12:29