Program LUDLWheel ; { Example VPascal program to control a Ludl Filterwheel and Shutter. By Scott Sternberg, Photometrics Ltd. This program creates buttons for opening and closing the shutter, moving to each filter position and homing the motor. The procedures are all shared so other scripts can call them. Toolbar Button What it does -------------- ------------ Open Shutter Opens Ludl Integrated Shutter. Close Shutter Closes Ludl Integrated Shutter. Position 1 Moves filterwheel to position #1. Position 2 Moves filterwheel to position #2. Position 3 Moves filterwheel to position #3. Position 4 Moves filterwheel to position #4. Position 5 Moves filterwheel to position #5. Position 6 Moves filterwheel to position #6. Home Homes Ludl filterwheel. } const Port = 2 ; { Com port for LUDL controller } Speed = 9600 ; { Baud rate } Bits = 8 ; { Data bits } Parity = NoParity ; { Parity setting } Stop = 2 ; { Data stop bits } toolbar 'Filter wheel' ; { Toolbar caption } procedure InitController ; { Initialise the controller } begin { Try to open serial port } OpenSerial( Port,Speed,Bits,Parity,Stop ) ; if SerialError <> 0 then Halt( 'Could not connect to LUDL controller!' ) ; { Make sure no garbage in buffers } TxFlush ; RxFlush ; { Controller expects after tx and after rx } SetTxEnd( chr(13) ) ; SetRxEnd( chr(10) ) ; { Select high-level programming format } Transmit( chr(255)+chr(65) ) ; end ; { InitController } procedure OpenShut ; {Open Shutter} button btn_white,'Open Shutter' ; dde 'OpenShutter' ; begin Transmit('Open S') ; end ; { OpenShut } procedure CloseShut ; {Close Shutter} button btn_black,'Close Shutter' ; dde 'CloseShutter' ; begin Transmit('Close S') ; end ; { CloseShut } procedure FWPos_1 ; button btn_fw1,'Position 1' ; dde 'Pos1' ; begin Transmit('ROTAT S M 1'); {Position #1} end ; { FWPos_1 } procedure FWPos_2 ; button btn_fw2,'Position 2' ; dde 'Pos2' ; begin Transmit('ROTAT S M 2'); {Position #2} end ; { FWPos_2 } procedure FWPos_3 ; button btn_fw3,'Position 3' ; dde 'Pos3' ; begin Transmit('ROTAT S M 3'); {Position #3} end ; { FWPos_3 } procedure FWPos_4 ; button btn_fw4,'Position 4' ; dde 'Pos4' ; begin Transmit('ROTAT S M 4'); {Position #4} end ; { FWPos_4 } procedure FWPos_5 ; button btn_fw5,'Position 5' ; dde 'Pos5' ; begin Transmit('ROTAT S M 5'); {Position #5} end ; { FWPos_5 } procedure FWPos_6 ; button btn_fw6,'Position 6' ; dde 'Pos6' ; begin Transmit('ROTAT S M 6'); {Position #6} end ; { FWPos_6 } procedure Home ; button btn_fwgoto1,'Home' ; dde 'Home' ; begin Transmit('ROTAT S M H'); {Home} end ; { Home } begin InitController ; end