' Pontech Copyright 1996
' Sample SV200 interface
'   This program is the Quick Basic version of QTEST.C
'   Note: SlowMove() is not avaliable if this version because Qbasic
'         does not have any short delay fuctions
'
DECLARE SUB Delay (Sec!)
DECLARE SUB Move (Servo!, Position!)
DECLARE SUB MoveAll (S1!, S2!, S3!, S4!, S5!, S6!, S7!, S8!)

CONST SERVO1 = 1
CONST SERVO2 = 2
CONST SERVO3 = 3
CONST SERVO4 = 4
CONST SERVO5 = 5
CONST SERVO6 = 6
CONST SERVO7 = 7
CONST SERVO8 = 8
CONST NC = -1

DIM SHARED MasterDelay AS SINGLE

OPEN "COM1:9600,N,8,1,CD0,CS0,DS0" FOR OUTPUT AS #1
   
	MasterDelay = 1       ' one second delay between moves
  
	CALL Move(SERVO1, 145)
	CALL Move(SERVO1, 100)

	CALL Move(SERVO2, 100)
	CALL Move(SERVO2, 160)

	MasterDelay = .5    ' half second delay between moves
   
	CALL MoveAll(50, 50, NC, NC, NC, NC, NC, NC)
	CALL MoveAll(150, NC, NC, NC, NC, NC, NC, NC)
	CALL MoveAll(230, 230, NC, NC, NC, NC, NC, NC)
	CALL MoveAll(50, 50, NC, NC, NC, NC, NC, NC)
	CALL Move(SERVO1, 50)

SUB Delay (Sec)
  Start! = TIMER
  DO
	IF (TIMER - Start!) >= Sec THEN EXIT DO
  LOOP

END SUB

SUB Move (Servo, Position)
	PRINT #1, "SV"; LTRIM$(STR$(Servo)); "M"; LTRIM$(STR$(Position))
	CALL Delay(MasterDelay)
END SUB

SUB MoveAll (S1, S2, S3, S4, S5, S6, S7, S8)
	IF S1 >= 0 AND S1 <= 255 THEN
		PRINT #1, "SV1M"; LTRIM$(STR$(S1));
	END IF
	IF S2 >= 0 AND S2 <= 255 THEN
		PRINT #1, "SV2M"; LTRIM$(STR$(S2));
	END IF
	IF S3 >= 0 AND S3 <= 255 THEN
		PRINT #1, "SV3M"; LTRIM$(STR$(S3));
	END IF
	IF S4 >= 0 AND S4 <= 255 THEN
		PRINT #1, "SV4M"; LTRIM$(STR$(S4));
	END IF
	IF S5 >= 0 AND S5 <= 255 THEN
		PRINT #1, "SV5M"; LTRIM$(STR$(S5));
	END IF
	IF S6 >= 0 AND S6 <= 255 THEN
		PRINT #1, "SV6M"; LTRIM$(STR$(S6));
	END IF
	IF S7 >= 0 AND S7 <= 255 THEN
		PRINT #1, "SV7M"; LTRIM$(STR$(S7));
	END IF
	IF S8 >= 0 AND S8 <= 255 THEN
		PRINT #1, "SV8M"; LTRIM$(STR$(S8));
	END IF
   
	PRINT #1, ""

	CALL Delay(MasterDelay)
END SUB

