前几天看了保存点位,赋值点位的程序 ,过了一周回头再看又有了新收获!
先上程序
PROGRAM TEST_KAREL1
%ALPHABETIZE
%NOLOCKGROUP
%NOPAUSE=ERROR+COMMAND+TPENABLE
CONST
MAX_AXS = 9
JNT_POS = 9
XYZ_POS = 2
VAR
yesno : INTEGER
to_prog: STRING[25]
open_id: INTEGER
status: INTEGER
position_no: INTEGER
jp_org : ARRAY [9] OF REAL
jp_new : ARRAY [9] OF REAL
prg_select: INTEGER
arr_size : INTEGER
indx : INTEGER
indx_pos: INTEGER
num_pos : INTEGER
indx_axs: INTEGER
num_axs : INTEGER
pos_typ : INTEGER
group_no: INTEGER
org_jpos : JOINTPOS
new_jpos : JOINTPOS
posn_type: INTEGER
org_xyz : XYZWPREXT
new_xyz : XYZWPR
new_xyz1 : XYZWPR
new_xyz2 : XYZWPREXT
new_xyz3 : XYZWPREXT
xyz : XYZWPR
prog_index : INTEGER
pause_entry:BOOLEAN
BEGIN
WRITE(CHR(128),CHR(137)) --清屏
FORCE_SPMENU(TP_PANEL, SPI_TPUSER, 1) --显示TP菜单
to_prog = 'B_TEST' --打开TP程序名称
OPEN_TPE (to_prog, TPE_RWACC, TPE_RDREJ, open_id, status)
--打开 程序文件 读写 id 状态
IF status<>0 THEN
CLOSE_TPE (open_id, status)
ENDIF
--定义工具坐标 用户坐标
$GROUP[1].$UTOOL = $MNUTOOL[1,1] --uTool 1
$GROUP[1].$UFRAME = $MNUFRAME[1,1] --uFrame 1
--运动组
group_no = 1
position_no = 3
pause_entry = FALSE --进入程序不暂停
------------------------用户界面交互 指定程序行号 确认是否正确
REPEAT --手动输入程序行号 询问是否正确
WRITE ('输入行号 ',CR)
READ (indx_pos)
WRITE ('输入是否正确 Yes:1, No:0 ? ',CR)
READ (yesno)
UNTIL (yesno = 1)
--获取指定行位置 的数据 1 1 2 0 0
GET_POS_TYP (open_id, indx_pos, group_no, posn_type, num_axs, status)
org_xyz = GET_POS_TPE (open_id , indx_pos, status)
--获取当前位置 默认(0,0,指定动作组)
new_xyz = CURPOS(0,0,1)
new_xyz1 = new_xyz
new_xyz1.x = new_xyz1.x + 100
new_xyz1.y = new_xyz1.y + 100
new_xyz1.z = new_xyz1.z + 100
--将new_xyz1值保存到PR[1]中
SET_POS_REG(1,new_xyz1,status) --如果单纯这行指令 要输入最上面的三行
CLOSE_TPE (open_id, status) --注意 如果想要在这个程序里运行打开的程序 首先要先关闭才能运行 这个很容易忽视
--在示教器上显示值
WRITE ('get_pos_typ status', status,CR)
WRITE ('open_id:',open_id, CR) --打开项目id
WRITE ('指定位置:',org_xyz,CR)
WRITE ('当前位置:',new_xyz,CR)
WRITE ('PR[1]位置信息:',new_xyz1,CR)
--调用需要的程序 可以实现在karel里改掉程序里的值
CALL_PROGLIN('B_TEST',1, prog_index,FALSE)
WRITE ('当前位置:',new_xyz,CR)
WRITE ('prog_index:',prog_index,CR)
--如果还想实现什么功能 都可以在里面实现
--CLOSE_TPE (open_id, status)
END TEST_KAREL1
运行程序就会让你输入所需要的项目