在 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/