X,Y章で利用したプログラム
'------------------------------------------------- ' 電圧の測定 '------------------------------------------------- ' マウスでポインティングできます。 '$INCLUDE: 'QB.BI' '$INCLUDE: 'MOUSE.BI' DECLARE SUB INITIALIZE () DECLARE SUB GRAPH () DECLARE SUB END.PROGRAM () CONST PI = 3.141592, XO.T = 12, YO.T = 18, X.TIME = 1, X.VOLT = 57 CONST M.MAX = 60, X.LEN = M.MAX, Y.LEN = 16, END.TIME = 180 CONST SAMPLING.TIME = 8, LINE.COLOR = 11 CALL INITIALIZE Mouseini: Mcolor 0 Mview 3 + 8 * XO.T, 8 + 16 * YO.T - 16 * Y.LEN, 3 + 8 * XO.T + 8 * X.LEN, 8 + 2 * 16 + 16 * YO.T CLS COLOR 7 LOCATE 9, 14: PRINT "Copyright (C) 1993 by Ibaraki Teacher Training Center" LOCATE 6, 16: PRINT "===============================================" COLOR 6 LOCATE 7, 16: PRINT " 電圧の時間変化を測定します" COLOR 7 LOCATE 8, 16: PRINT "===============================================" COLOR 6 LOCATE 13, 16: PRINT " INPUT1"; : COLOR 3: PRINT "に電圧を入力して下さい" COLOR 2 LOCATE 15, 16: PRINT " SW1を"; : COLOR 6: PRINT "STD"; : COLOR2: PRINT "にして下さい" LOCATE 17, 16: PRINT " SW2を"; : COLOR 6: PRINT "MONO"; : COLOR2: PRINT "にして下さい" COLOR 7 BEEP: COLOR 23 LOCATE 23, 16: PRINT "準備ができましたら,リターンキーを押して下さい" COLOR 7 DO IK$ = INKEY$ LOOP WHILE IK$ = "" START: Flag = 0 BEEP CALL GRAPH DO IF Flag = 1 THEN BEEP IK$ = INKEY$ IF IK$ = "" THEN GOTO LAST.IF END IF IK = ASC(IK$) IF IK = &H53 OR IK = &H73 OR IK = &HC4 THEN IF FLG = 0 GOTO LAST.IF Flag = 0: FLG = Flag CLS 1: CALL GRAPH LOCATE 2, 61: PRINT " " GOTO LAST.IF ELSEIF IK = &H47 OR IK = &H67 OR IK = &HB7 THEN IF FLG = 1 GOTO LAST.IF Flag = 1: FLG = Flag T = 0 LOCATE 1, 55: PRINT "開始時刻"; : PRINT LEFT$(TIME$, SAMPLING.TIME) GOTO LAST.IF ELSEIF IK = &H48 OR IK = &H68 OR IK = &HB8 THEN BEEP LOCATE 23, 10 COLOR 5: PRINT " どれかキーを押すと,"; COLOR 7: PRINT "待機"; COLOR 6: PRINT "S"; : COLOR 7: PRINT "tandby"; COLOR 5: PRINT "にもどります " COLOR 7: Setmouse XO, YO - 16 * Y.LEN Mouse 1 LOCATE 5, 50: PRINT "指示時間 秒" LOCATE 4, 50: PRINT "指示電圧 V" DO IK$ = INKEY$ Getmouse Right, left, X, Y IF YO - Y < 0 THEN Y = YO LOCATE 5, 59: COLOR 2: PRINT USING " ###"; (X - XO) * 3 / 8 LOCATE 4, 59: COLOR 3: PRINT USING "##.##"; (YO - Y) / 16 / 4 LOOP WHILE IK$ = "" Mouse 0 FLG = 0 GOTO START ELSEIF IK = &H45 OR IK = &H65 OR IK = &HB2 THEN CALL END.PROGRAM EXIT DO END IF LAST.IF: LOCATE 2, 55: PRINT "現在時刻" TIME0$ = MID$(TIME$, SAMPLING.TIME, 1) COLOR 2: PRINT LEFT$(TIME$, SAMPLING.TIME): COLOR 7 PRINT #1, "a"; DO LOOP WHILE LOC(1) = 0 DUMMY$ = INPUT$(1, #1) PRINT #1, "i"; LINE INPUT #1, D$: VT = VAL(D$): DUMMY$ = INPUT$(1, #1) VT = VT / 256 * 5 COLOR 3: LOCATE 2, 25: PRINT USING "##.##"; VT: COLOR 7 IF VT > 4 THEN VT = 4 IF VS <> VT THEN CIRCLE (XO - 8 * 8.5, YO -16 * 4 * VS), 6, 0, , , .4 PRINT (XO - 8 * 8.5, YO -16 * 4 * VS), 0, 0 END IF CIRCLE (XO - 8 * 8.5, YO -16 * 4 * VT), 6, 4, , , .4 PRINT (XO - 8 * 8.5, YO -16 * 4 * VT), 4, 4 VS = VT IF Flag = 0 THEN GOTO END.LOOP ELSEIF Flag = 1 THEN CIRCLE (XO + 8 * T * 2 / 6, YO -16 * 4 * VT), 1, 7 PRINT (XO + 8 * T * 2 / 6, YO -16 * 4 * VT), 7 END IF DO LOOP WHILE MID$(TIME$, SAMPLING.TIME, 1) = TIME0$ T = T + 1 IF T > END.TIME THEN BEGIN.DO: DO BEEP IK$ = INKEY$ LOOP WHILE IK$ = "" IK = ASC(IK$) IF IK = &H53 OR IK = &H73 OR IK = &HC4 THEN FLG = 0 GOTO START ELSEIF IK = &H45 OR OR IK = &H65 OR IK = &HB2 THEN EXIT DO ELSEIF IK = &H48 OR OR IK = &H68 OR IK = &HB8 THEN BEEP LOCATE 23, 10 COLOR 5: PRINT " どれかキーを押すと,"; COLOR 7: PRINT "待機"; COLOR 6: PRINT "S"; : COLOR 7: PRINT "tandby"; COLOR 5: PRINT "にもどります " COLOR 7: Setmouse XO, YO - 16 * Y.LEN Mouse 1 LOCATE 5, 50: PRINT "指示時間 秒" LOCATE 4, 50: PRINT "指示電圧 V" DO IK$ = INKEY$ Getmouse Right, left, X, Y IF YO - Y < 0 THEN Y = YO LOCATE 5, 59: COLOR 2: PRINT USING " ###"; (X - XO) * 3 / 8 LOCATE 4, 59: COLOR 3: PRINT USING "##.##"; (YO - Y) / 16 / 4 LOOP WHILE IK$ = "" Mouse 0 FLG = 0 GOTO START'GOTO START END IF GOTO BEGIN.DO END IF END.LOOP: LOOP WHILE 1 CLS CLOSE #1 END SUB END.PROGRAM CLS CLOSE #1 END SUB SUB GRAPH SHARED XO, YO CLS XO = 3 + 8 * XO.T: YO = 8 + 16 * YO.T LINE (XO - 8 * 7, YO - 16 * Y.LEN)-(XO - 8 * 5, YO), 15, BF FOR I = 1 TO Y.LEN - 1 LINE (XO - 8 * 7, YO - 16 * I)-(XO - 8 * 6.5, YO - 16 * I), 0 NEXT TITLE$ = "秒" LINE (XO , YO)-(XO + 8 * X.LEN, YO - 16 * Y.LEN), LINE.COLOR, B FOR I = 1 TO Y.LEN - 1 LINE (XO , YO - 16 * I)-(XO + 8 * X.LEN, YO - 16 * I), LINE.COLOR, , &H8888 NEXT FOR I = 1 TO X.LEN / 10 - 1 LINE (XO + 8 * 10 * I, YO)-(XO + 8 * 10 * I, YO - 16 * Y.LEN), LINE.COLOR, , &H8888 NEXT COLOR 6 COLOR 7 LOCATE 2, 14: PRINT "現在の電圧 V" COLOR 3 FOR I = 1 TO Y.LEN STEP 4 LOCATE YO.T - I + 1, XO.T - 2: PRINT USING "##"; I / 4 YO)-(XO + 8 * 10 * I, YO - 16 * Y.LEN), LINE.COLOR, , &H8888 NEXT LOCATE YO.T - 9, 1: PRINT "電" LOCATE YO.T - 7, 1: PRINT "圧" LOCATE YO.T - 5, 1: PRINT "V" COLOR 2 FOR I = 0 TO X.LEN / 10 LOCATE YO.T + 2, XO.T + 10 * I: PRINT USING "###"; 30 * I NEXT LOCATE YO.T + 3, 38: PRINT "測定時間 [ ": TITLE$; "]" COLOR 7: LOCATE 23, 15: PRINT "待機"; : COLOR 6: PRINT "S"; COLOR 7: PRINT "tandby 実行"; : COLOR 6: PRINT "G"; COLOR 7: PRINT "o 停止"; : COLOR 6: PRINT "H"; COLOR 7: PRINT "alt 終了"; : COLOR 6: PRINT "E"; COLOR 7: PRINT "nd" END SUB SUB INITIALIZE CLS VIEW PRINT 1 TO 24 OPEN "COM1:9600,N,8,1,ASC" FOR RANDOM AS #1 END SUB |