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