PROGRAM_NAME='BURLE, TC8561, RS-232, BASIC, 2-97, BA **NDA**' (* DATE:05/20/99 TIME:15:24:15 *) (***********************************************************) (* The following code block is provided as a guide to *) (* programming the device(s) listed above. This is a *) (* sample only, and will most likely require modification *) (* to be integrated into a master program. *) (* *) (* Device-specific protocols should be obtained directly *) (* from the equipment manufacturer to ensure compliance *) (* with the most current versions. Within the limits *) (* imposed by any non-disclosure agreements, AMX will *) (* provide protocols upon request. *) (* *) (* If further programming assistance is required, please *) (* contact your AMX customer support team. *) (* *) (***********************************************************) (* GENERAL FUNCTION LIST - *) (* FOCUS, IRIS, PAN, TILT, ZOOM *) (***********************************************************) (* NOTES- *) (* ALL COMMUNICATION IS UNIDIRECTIONAL ONLY, BEING SENT *) (* FROM THE AMX SYSTEM TO THE BURLE UNIT. THE BURLE UNIT *) (* DOES NOT SEND ANY RESPONSES OR ACKNOWLEDGEMENTS, AND *) (* THEREFORE, NO BUFFER VARIABLE IS NEEDED. *) (* *) (* THE COMMANDS INCLUDED IN THIS PROGRAM ARE LABELED AS *) (* "INDEFINITE PERIOD" CONTROL FUNCTIONS, MEANING THAT ONE *) (* COMMAND IS SENT TO BEGIN A FUNCTION, AND THAT FUNCTION *) (* WILL CONTINUE UNTIL ANOTHER COMMAND IS SENT TO STOP THE *) (* THAT FUNCTION. OTHER COMMANDS EXIST (NOT INCLUDED IN *) (* THIS PROGRAM) WHICH PERFORM EACH FUNCTION FOR A PERIOD *) (* OF 50 mSEC. NO OTHER COMMAND MUST BE SENT TO STOP THESE *) (* FUNCTIONS, BUT EACH COMMAND MUST BE SENT REPEATEDLY *) (* EVERY 50 mSEC (20 TIMES A SECOND) TO ALLOW THE FUNCTION *) (* TO CONTINUE. THIS COULD BE PROBLEMATIC FOR SOME AXCESS *) (* PROGRAMS. ALSO, THERE ARE VERSIONS OF BOTH THESE TYPES *) (* OF COMMANDS WHICH CONTAIN A PARAMETER FOR ADJUSTING THE *) (* SPEED OF THE VARIOUS FUNCTIONS (PAN, TILT, ETC.) - ANY *) (* COMMAND WITHOUT THIS PARAMETER, INCLUDING ALL OF THOSE *) (* IN THIS PROGRAM, WILL USE A DEFAULT SPEED. *) (* *) (***********************************************************) (* DEVICE NUMBER DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_DEVICE PANTILT = 1 PANEL = 128 (***********************************************************) (* CONSTANT DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_CONSTANT (***********************************************************) (* VARIABLE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_VARIABLE PT_ADDR (***********************************************************) (* LATCHING DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_LATCHING (***********************************************************) (* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_MUTUALLY_EXCLUSIVE (***********************************************************) (* TOGGLING DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_TOGGLING (***********************************************************) (* SUBROUTINE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_CALL 'SEND TO BURLE' (DEV,ADDR,CMD[4]) (* "DEV" IS THE AMX DEVICE NUMBER (1-255). *) (* "ADDR" IS THE PHYSICAL ADDRESS OF THE BURLE (1-16384). *) (* "CMD" IS THE COMMAND STRING TO BE SENT TO THE BURLE. *) LOCAL_VAR CMD_STR[8] CHECKSUM { CMD_STR = "(LENGTH_STRING(CMD)+$83),((ADDR-1)/$80),((ADDR-1)%$80),CMD" IF (CMD_STR[1] = $87) CHECKSUM = (CMD_STR[1] + CMD_STR[2] + CMD_STR[3] + CMD_STR[4] + CMD_STR[5] + CMD_STR[6] + CMD_STR[7]) BAND $7F ELSE CHECKSUM = (CMD_STR[1] + CMD_STR[2] + CMD_STR[3] + CMD_STR[4] + CMD_STR[5] + CMD_STR[6]) BAND $7F SEND_STRING DEV,"CMD_STR,CHECKSUM" } (***********************************************************) (* STARTUP CODE GOES BELOW *) (***********************************************************) DEFINE_START PT_ADDR = 1 (***********************************************************) (* THE ACTUAL PROGRAM GOES BELOW *) (***********************************************************) DEFINE_PROGRAM PUSH[PANEL,11] (* PAN LEFT *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,16,0") RELEASE[PANEL,11] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,12] (* PAN RIGHT *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,16") RELEASE[PANEL,12] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,13] (* TILT UP *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,8,0") RELEASE[PANEL,13] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,14] (* TILT DOWN *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,8") RELEASE[PANEL,14] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,15] (* ZOOM OUT *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,4,0") RELEASE[PANEL,15] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,16] (* ZOOM IN *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,4") RELEASE[PANEL,16] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,17] (* FOCUS NEAR *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,2,0") RELEASE[PANEL,17] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,18] (* FOCUS FAR *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,2") RELEASE[PANEL,18] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,19] (* IRIS OPEN *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,1,0") RELEASE[PANEL,19] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") PUSH[PANEL,20] (* IRIS CLOSE *) CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,1") RELEASE[PANEL,20] CALL 'SEND TO BURLE' (PANTILT,PT_ADDR,"2,0,0") (***********************************************************) (* END OF PROGRAM *) (* DO NOT PUT ANY CODE BELOW THIS COMMENT *) (***********************************************************)