Galil DMC-3425 Manual De Usuario
126 • Chapter 7 Application Programming
DMC-3425
EN
End main program
#CMDERR Command
error
utility
JP#DONE,_ED<>2
Check if error on line 2
JP#DONE,_TC<>6
Check if out of range
MG "SPEED TOO HIGH"
Send message
MG "TRY AGAIN"
Send message
ZS1 Adjust
stack
JP #BEGIN
Return to main program
#DONE
End program if other error
ZS0 Zero
stack
EN End
program
OPERAND FUNCTION
_ED1
Returns the number of the thread that generated an error
_ED2
Retry failed command (operand contains the location of the failed command)
_ED3
Skip failed command (operand contains the location of the command after the
failed command)
failed command)
The operands are used with the XQ command in the following format:
XQ _ED2 (or _ED3),_ED1,1
Where the “,1” at the end of the command line indicates a restart; therefore, the existing program stack
will not e removed when the above format executes.
will not e removed when the above format executes.
The following example shows an error correction routine that uses the operands.
Example - Command Error w/Multitasking
The following program illustrates a common program problem. In this case, a variable is used as a
command argument and the variable is inadvertently set to an illegal value. This simple command
error subroutine recognizes the type of error, modifies the variable and continues the program at the
point of the error. If the program has an invalid command error, skip the command and continue to
execute the program. To demonstrate the program, while the simple loop #A is executing on thread 0
(XQ#A,0), begin execution of the second task, XQ#B,1
command argument and the variable is inadvertently set to an illegal value. This simple command
error subroutine recognizes the type of error, modifies the variable and continues the program at the
point of the error. If the program has an invalid command error, skip the command and continue to
execute the program. To demonstrate the program, while the simple loop #A is executing on thread 0
(XQ#A,0), begin execution of the second task, XQ#B,1
Instruction Interpretation
#A
Begin thread 0 (continuous loop)
JP#A
EN
EN
End
of
thread
0
#B
Begin
thread
1
KP -1
Set KP to value of N, an invalid value
TY
Issue
invalid
command
EN
End
of
thread
1
#CMDERR
Begin command error subroutine
IF(_TC=6)
If error is “Number Out of Range” (-1).
N=1
Set N to a valid number
XQ _ED2,_ED1,1
Retry KP N command
ENDIF
IF( _TC=1)
IF( _TC=1)
If error is “Invalid Command” (TY)