100 REM PROGRAM 'DMM805.BAS' - FM RADIOMETEOR PROGRAM THAT SAVES DATA/PLOTS 110 REM METEOR COUNTS; INPUTING DATA FROM RS232 LINE EVERY 1 SEC FROM A RADIO 120 REM SHACK DIGITAL MULTIMETER 22-805 HAVING A PC INPUT/OUTPUT CAPABILITY. 130 REM (THIS VERSION IS FOR A 386SX/33, & THE NEWEST MULTIMETER COSTING $59) 140 REM R. B. MINTON, ASTROMETRIC OBSERVATORY, RATON, NM. USA. 11-28-2001. 150 DIM CJ(10),MC1(6),MC2(10),MC3(24),MC4(10) 160 DATA 1.007,1.007,1.007,1.007,1.007,1.008,1.009,1.010,1.011,1.012 170 FOR I=1 TO 10: READ CJ(I): NEXT I 180 DEF FNA(X)=INT(X*100+.5)/100 190 B1$=" " 200 B2$=B1$+" " 210 FLAG$="OK": SCREEN 0: KEY OFF: CLS 220 OPEN "COM1: 600,N,7,2,RS,CS,DS,CD" AS #2: REM NEW METER USES 600 BAUD !!! 230 PRINT #2, "D": REM POLL METER FOR DATA 240 SIG=VAL(MID$(INPUT$(14,#2),4,6)): REM GET A VALUE FROM METER 250 YAM=2: REM Y-AXIS MULTIPLIER 260 YOF=0: REM Y-AXIS OFFSET (DC OFFSET) 270 UN$="MOh": REM HARD-CODED (METER SHOWS MEGOHMS) 280 REM # SAMPLES IN 1 GRAPH = TO # PIXELS IN SCREEN = # OF SECONDS PER SCREEN 290 NSAM=600: REM # SAMPLES --- AS DEFINED ABOVE --- 300 FILM$="OUT.MIN": REM COUNTS/6 MINUTES OUTPUT FILENAME 310 FILH$="OUT.HRS": REM COUNTS/1 HOUR OUTPUT FILENAME 320 FILD$="OUT.DAY": REM COUNTS/1 DAY OUTPUT FILENAME 330 OPEN FILM$ FOR APPEND AS 3: REM OPEN OUTPUT FILE, MINUTES 340 OPEN FILH$ FOR APPEND AS 4: REM OPEN OUTPUT FILE, HOURS 350 OPEN FILD$ FOR APPEND AS 5: REM OPEN OUTPUT FILE, DAYS 360 WRITE #3,"START",DATE$,TIME$,UN$: REM WRITE 'START' INFO TO FILE 370 WRITE #4,"START",DATE$,TIME$,UN$: REM WRITE 'START' INFO TO FILE 380 WRITE #5,"START",DATE$,TIME$,UN$: REM WRITE 'START' INFO TO FILE 390 GOSUB 970: REM DRAW GRAPH 400 OLDSEC=0: CURCNT=0: TC1=0: TC2=0: TC3=0: TC4=0: MIN=0: IM=0: K=0: LVL=10 410 LOCATE 3,41: PRINT"PROGRAM WILL START AT SEC= 0" 420 REM CONTINUE 430 SC=VAL(RIGHT$(TIME$,2)) 440 LOCATE 5,63: PRINT" " 450 LOCATE 5,63: PRINT"SEC= ";SC 460 IF (SC<>0) THEN GOTO 420 470 REM CONTINUE: REM START BIG LOOP HERE 480 FOR I=1 TO NSAM: REM LOOP FOR # OF SAMPLES 490 IM=INT(1+(I/60)) 500 REM CONTINUE 510 SEC1=VAL(RIGHT$(TIME$,2)) 520 FOR DL=1 TO 400: NEXT DL: REM A SMALL TIME DELAY (FOR 386SX/33) 530 SEC2=VAL(RIGHT$(TIME$,2)) 540 IF (SEC1=SEC2) THEN GOTO 500: REM LOOP UNTIL START OF NEW SECOND !! 550 CURSEC=VAL(RIGHT$(TIME$,2)) 560 IF (CURSEC0 THEN CIRCLE (XXX,YYY),SIZ: REM DRAW A CIRCLE EACH MINUTE 700 SIZ=0: REM RESET TO A DOT 710 LV$=INKEY$ 720 IF (LV$="U") THEN LVL=LVL+1 730 IF (LV$="D") THEN LVL=LVL-1 740 LOCATE 3,63: PRINT" " 750 LOCATE 3,63: PRINT"LVL= ";LVL 760 LOCATE 4,63: PRINT" " 770 LOCATE 4,63: PRINT"SIG= ";INT(SIG) 780 LOCATE 5,63: PRINT" " 790 LOCATE 5,63: PRINT"SEC= ";CURSEC 800 IF I>1 THEN LINE -(XXX,YYY): REM THEN CONNECT WITH LINES 810 IF (NEWSIG<(OLDSIG-LVL)) THEN CURCNT=CURCNT+1 820 IF I=1 THEN GOSUB 1830 830 IF (K=10) THEN K=0: GOTO 850 840 NEXT I 850 REM CONTINUE 860 CLOSE #2: CLOSE #3: CLOSE #4: CLOSE #5: REM CLOSE METER & ALL FILES 870 FOR I=1 TO 100: NEXT I: REM SMALL DELAY TO CLOSE DEVICES 880 IF (FLAG$="HALT") THEN GOTO 950 890 OPEN "COM1: 600,N,7,2,RS,CS,DS,CD" AS #2: REM RE-OPEN METER 900 OPEN FILM$ FOR APPEND AS 3: REM RE-OPEN FILE (NOW SAVED !!!) 910 OPEN FILH$ FOR APPEND AS 4: REM RE-OPEN FILE (NOW SAVED !!!) 920 OPEN FILD$ FOR APPEND AS 5: REM RE-OPEN FILE (NOW SAVED !!!) 930 CLS: GOSUB 970: REM CLEAR SCREEN & REDRAW GRAPH 940 GOTO 470: REM LOOP FOR 7 DAYS !!! 950 REM CONTINUE 960 END: REM ///////////////////////// THE END //////////////////////////// 970 REM SUBROUTINE TO DRAW GRAPH ------------------------------------------ 980 KEY OFF: CLS: SCREEN 2 990 HSP=640-1: VSP=200-1: REM MAXIMUM SCREEN PIXELS 1000 VIEW SCREEN (0,0)-(HSP,VSP): REM DEFINE ACTIVE DRAWING AREA 1010 TB=16: BB=19: LB=2: RB=61: REM DEFINE TOP/BOTTOM/LEFT/RIGHT 1020 NHP=HSP-(LB+RB): NVP=VSP-(TB+BB): REM # AVAIL HORZ/VERT PIXELS 1030 REM DEFINE # OF PIXELS IN 1 DATA POINT (= TO WIDTH OF SCREEN / NSAM) 1040 WP=NHP/NSAM: REM # OF PIXELS FOR 1 DATA POINT 1050 LINE (LB,TB)-(HSP-RB,VSP-BB),,B: REM DRAW BOX AROUND BORDERS 1060 FOR I=1 TO 9: REM DRAW MINOR VERTICAL TICKS 1070 LINE(550+(4*8)+I-4,0)-(550+(4*8)+I-4,182),,,&H8888 1080 NEXT I 1090 FOR I=2 TO 12: REM DRAW MAJOR VERTICAL TICKS 1100 LINE(558+(4*8)+I-4,5)-(558+(4*8)+I-4,190),,,&H1 1110 NEXT I 1120 FOR I=0 TO 22 STEP 2: REM LABEL MAJOR VERTICAL TICKS 1130 LOCATE 1+I,76 1140 PRINT 8*(11-(I/2))+YOF 1150 NEXT I 1160 TA$="U182 R57 D182": REM SEC. TICK STRING (ALL UP) 1170 DRAW "BM 2,182": REM MOVE TO BOTTOM-LEFT CORNER 1180 FOR I=0 TO 9 STEP 1: REM DRAW 10 TICKS (EA=1 MIN.) 1190 DRAW "TA 0;XTA$;": REM TURN ANGLE AND TICK 1200 NEXT I 1210 REM TB$="U180 R8 D180": REM SUB-HOUR TICK STRING (ALL UP) 1220 REM DRAW "BM 2,180": REM MOVE TO BOTTOM-LEFT CORNER 1230 REM FOR I=0 TO 71 STEP 1: REM DRAW 72 TICKS (EA=20 MIN.) 1240 REM DRAW "TA 0;XTB$;": REM TURN ANGLE AND TICK 1250 REM NEXT I 1260 B$=" " 1270 FOR I=1 TO 20 STEP 2: REM BLANK EVERY OTHER ROW IN 1280 LOCATE 3+I,2: PRINT B$: REM THE MAIN GRAPHICS AREA 1290 NEXT I 1300 LOCATE 2,75: PRINT"(MOh)": REM PRINT UNIT-OF-MEASURE 1310 T$=" FM RadioMeteor Signal vs. Time: by R. B. Minton, Astrometric Observatory " 1320 L=LEN(T$): LOCATE 2,(38-(L/2)): PRINT T$ 1330 LOCATE 24,1: PRINT"<----------------------------- 10 MINUTES ----------------------------->" 1340 RETURN 1350 REM SUBROUTINE TO ADVANCE TIME COUNTERS & WRITE DATE/TIME/DATA ------------ 1360 REM MIN = ELAPSED MINUTES SINCE START OF PROGRAM (NEVER RESET !!!) 1370 REM CURCNT= CURRENT METEOR COUNT FOR THE CURRENT MINUTE (RESET EA MIN) 1380 REM TC1 = 1 MINUTE COUNTER FOR EA MIN 1 --> 6 (SET=0 AFTER 6) 1390 REM MC1(N)= METEOR COUNTER FOR EA MIN FROM 1 THRU 6 (ARRAY RESET AFTER 6) 1400 REM TC2 = 0.1 HOUR COUNTER FOR 1.0 HOURS (SET=0 AFTER 10 COUNTS) 1410 REM MC2(N)= METEOR COUNTER FOR EA 0.1 HOUR .1 --> 1 (ARRAY RESET AFTER 10) 1420 REM TC3 = 1.0 HOUR COUNTER FOR EA 1 --> 24 HRS. (SET=0 AFTER 24 HOURS) 1430 REM MC3(N)= METEOR COUNTER FOR 1 --> 24 HRS. (ARRAY RESET AFTER 24 HRS.) 1440 REM TC4 = DAY COUNTER FOR EA 1 --> 10 DAYS 1450 REM MC4(N)= METEOR COUNTER FOR EACH DAY 1460 REM 1 MINUTE HAS ELAPSED -------------------------------------------------- 1470 MIN=MIN+1: SIZ=7: IF MIN>(10*1440) THEN FLAG$="HALT": GOTO 1680 1480 GOSUB 1830 1490 F1$="F": TC1=TC1+1 1500 IF (TC1<7) THEN MC1(TC1)=CURCNT 1510 IF (TC1=7) THEN TC1=1: TMPCNT=CURCNT: F1$="T" 1520 CURCNT=0 1530 IF (F1$="F") THEN GOTO 1680 1540 REM 1/10TH OF AN HOUR HAS ELAPSED ----------------------------------------- 1550 SUM=0: FOR L=1 TO 6: SUM=SUM+MC1(L): NEXT L 1560 F2$="F": TC2=TC2+1: IF TC2=11 THEN TC2=1: F2$="T" 1570 MC2(TC2)=SUM: GOSUB 1700: FOR L=1 TO 6: MC1(L)=0: NEXT L: MC1(1)=TMPCNT 1580 IF (F2$="F") THEN GOTO 1680 1590 REM 1 HOUR HAS ELAPSED ---------------------------------------------------- 1600 SUM=0: FOR L=1 TO 10: SUM=SUM+MC2(L): NEXT L 1610 F3$="F": TC3=TC3+1: IF TC3=25 THEN TC3=1: F3$="T" 1620 MC3(TC3)=SUM: GOSUB 1740: FOR L=1 TO 10: MC2(L)=0: NEXT L 1630 IF (F3$="F") THEN GOTO 1680 1640 REM 24 HOURS HAVE NOW ELAPSED (FILL DAY COUNTER) -------------------------- 1650 SUM=0: FOR L=1 TO 10: SUM=SUM+MC3(L): NEXT L 1660 TC4=TC4+1: IF (TC4>10) THEN FLAG$="HALT": GOTO 1680 1670 MC4(TC4)=SUM: GOSUB 1790: FOR L=1 TO 24: MC3(L)=0: NEXT L 1680 REM CONTINUE 1690 RETURN 1700 REM SUBROUTINE TO SAVE 1/10 HR ARRAY -------------------------------------- 1710 WRITE #3,DATE$,TIME$,"1/10 HRS" 1720 WRITE #3,MC2(1),MC2(2),MC2(3),MC2(4),MC2(5),MC2(6),MC2(7),MC2(8),MC2(9),MC2(10) 1730 RETURN 1740 REM SUBROUTINE TO SAVE 24 HOURS ARRAY ------------------------------------- 1750 WRITE #4,DATE$,TIME$,"24 HRS" 1760 WRITE #4,MC3(1),MC3(2),MC3(3),MC3(4),MC3(5),MC3(6),MC3(7),MC3(8),MC3(9),MC3(10),MC3(11),MC3(12) 1770 WRITE #4,MC3(13),MC3(14),MC3(15),MC3(16),MC3(17),MC3(18),MC3(19),MC3(20),MC3(21),MC3(22),MC3(23),MC3(24) 1780 RETURN 1790 REM SUBROUTINE TO SAVE 10 DAYS ARRAY -------------------------------------- 1800 WRITE #5,DATE$,TIME$,"10 DAYS" 1810 WRITE #5,MC4(1),MC4(2),MC4(3),MC4(4),MC4(5),MC4(6),MC4(7),MC4(8),MC4(9),MC4(10) 1820 RETURN 1830 REM SUBROUTINE TO UPDATE COUNTS DISPLAYED ON PLOT ------------------------- 1840 LOCATE 3,3: PRINT B1$ 1850 LOCATE 3,3: PRINT "M 1--> 6: ";MC1(1);MC1(2);MC1(3);MC1(4);MC1(5);MC1(6) 1860 LOCATE 4,3: PRINT B2$ 1870 LOCATE 4,3: PRINT "H .1--> 1: ";MC2(1);MC2(2);MC2(3);MC2(4);MC2(5);MC2(6);MC2(7);MC2(8);MC2(9);MC2(10) 1880 LOCATE 5,3: PRINT B2$ 1890 LOCATE 5,3: PRINT "H 1--> 8: ";MC3(1);MC3(2);MC3(3);MC3(4);MC3(5);MC3(6);MC3(7);MC3(8) 1900 LOCATE 6,3: PRINT B2$ 1910 LOCATE 6,3: PRINT "H 9-->16: ";MC3(9);MC3(10);MC3(11);MC3(12);MC3(13);MC3(14);MC3(15);MC3(16) 1920 LOCATE 7,3: PRINT B2$ 1930 LOCATE 7,3: PRINT "H 17-->24: ";MC3(17);MC3(18);MC3(19);MC3(20);MC3(21);MC3(22);MC3(23);MC3(24) 1940 LOCATE 8,3: PRINT B2$ 1950 LOCATE 8,3: PRINT "D 1-->10: ";MC4(1);MC4(2);MC4(3);MC4(4);MC4(5);MC4(6);MC4(7);MC4(8);MC4(9);MC4(10) 1960 RETURN