DECLARE FUNCTION GpReadf! () DECLARE SUB GpInit () DECLARE SUB GpSend (Cmd AS STRING) DECLARE FUNCTION GpRead$ () DECLARE FUNCTION GetStr$ () DECLARE FUNCTION GetVal! () OPEN "com1:9600,n,8,1,cs0,ds0,tb100,rb100" FOR RANDOM AS #1 OPEN "log" FOR APPEND AS #2 Poll& = 60 Group& = 20 Scale! = .25 Offset = 115 PRINT #2, "###" DO PRINT "Comment? "; LINE INPUT a$ PRINT #2, "# "; a$ LOOP WHILE a$ <> "" PRINT "ok." PRINT "Starting..." Count& = 0 GpInit GpSend ("H"): SLEEP 1 GpSend ("T4 F2 6 STG M2") f$ = "_# +###.### &" s$ = "HP 3456A mains voltage logger (using IOtech Micro488/p GPIB)" PRINT "# "; s$ PRINT #2, "# "; s$ s$ = "Poll interval (sec)" PRINT "# "; Poll&, s$ PRINT #2, "# "; Poll&, s$ s$ = "Plot offset" PRINT USING f$; Offset!; s$ PRINT #2, USING f$; Offset!; s$ s$ = "Plot scale (per division)" PRINT USING f$; Scale!; s$ PRINT #2, USING f$; Scale!; s$ Snap: CLOSE #2 OPEN "log" FOR APPEND AS #2 Main: GpSend ("T3") Volts! = GpReadf! PRINT #1, "/UL" max& = 35 max& = 49 mid& = (1 + max&) / 2 s$ = " " FOR i = 1 TO max&: s$ = s$ + " ": NEXT MID$(s$, 1, 1) = "<" MID$(s$, max&, 1) = ">" MID$(s$, mid&, 1) = "|" n& = (Volts! - Offset!) / Scale! n& = n& + mid& IF n& < 1 THEN n& = 1 IF n& > max& THEN n& = max& IF n& < mid& THEN FOR i = n& + 1 TO mid& - 1 MID$(s$, i, 1) = "-" NEXT END IF IF n& > mid& THEN FOR i = mid& + 1 TO n& - 1 MID$(s$, i, 1) = "-" NEXT END IF MID$(s$, n&, 1) = "*" d$ = DATE$: t$ = TIME$ dt$ = MID$(d$, 7, 4) + "-" + MID$(d$, 1, 5) + " " + t$ Count& = Count& + 1 Count$ = LTRIM$(RTRIM$(STR$(Count&))) ' Show Count on logfile but not display PRINT USING "& +###.### &"; dt$; Volts!; s$ PRINT #2, USING "& & +###.### &"; Count$; dt$; Volts!; s$ VoltsSum! = VoltsSum! + Volts! SLEEP Poll& IF (Count& MOD Group&) = 0 THEN GOTO Snap GOTO Main FUNCTION GetStr$ DO LINE INPUT #1, a$ a$ = LTRIM$(RTRIM$(a$)) LOOP UNTIL a$ <> "" GetStr$ = a$ END FUNCTION FUNCTION GetVal! a$ = GetStr$ GetVal! = VAL(a$) END FUNCTION SUB GpInit PRINT #1, CHR$(1); : SLEEP 1 PRINT #1, "": SLEEP 1 PRINT #1, "": SLEEP 1 PRINT #1, "": SLEEP 1 PRINT #1, CHR$(1); : SLEEP 1 PRINT #1, "I": SLEEP 1 PRINT #1, "ec;0": SLEEP 1 ' clear input buffer x$ = INPUT$(LOC(1), 1) END SUB FUNCTION GpRead$ PRINT #1, "EN;08" s$ = GetStr$ PRINT "# "; s$ PRINT #2, "# "; s$ GpRead = s$ END FUNCTION FUNCTION GpReadf! PRINT #1, "EN;08" GpReadf! = GetVal! END FUNCTION SUB GpSend (Cmd AS STRING) PRINT #1, "OA;08;" + Cmd END SUB