U章で利用したプログラム

'-------------------------------------------------
'     温度の設定
'-------------------------------------------------
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 = 14, END.TIME = 360
CONST SAMPLEING.TIME = 8, LINE.COLOR = 11

CALL INITIALIZE

CLS
COLOR 7
LOCATE 6, 16: PRINT "==============================================="
COLOR 6
LOCATE 7, 16: PRINT "     温度の時間変化を測定します"
COLOR 7
LOCATE 8, 16: PRINT "==============================================="
COLOR 3
LOCATE 12, 16: PRINT " INPUT1に温度センサを接続して下さい"
LOCATE 14, 16: PRINT "    SW1をSTDにして下さい"
LOCATE 16, 16: PRINT "    SW2をBIPにして下さい"
COLOR 7
BEEP: COLOR 23
LOCATE 23, 16: PRINT "準備ができましたら,リターンキーを押して下さい"
COLOR 7

DO
   IK$ = INKEY$
LOOP WHILE IK$ = ""

START:

FLAG = 0

BEEP
CALL GRAPH
DO
   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 3, 55: PRINT "開始時刻 ="; : PRINT LEFT$(TIME$, SAMPLING.TIME)
      GOTO LAST.IF
   ELSEIF IK = &H45 OR IK = &H65 OR IK = &HB2 THEN
      CALL END.PROGRAM
      EXIT DO
   END IF
LAST.IF:
   LOCATE 4, 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 = 5 * (VT / 256 * 10 - 5)
   COLOR 3: LOCATE 4, 27: PRINT USING "##.##"; VT / 5: COLOR 7
   IF VT > 5 * 1.4 THEN VT = 5 * 1.4
   IF VT < 5 * (-1.4) THEN VT = 5 * (-1.4)
   LINE (XO - 8 * 7 - 1, YO)-(XO - 8 * 8 + 1, YO - 16 * Y.LEN / 2 - 16 * VT), 4, BF
   LINE (XO - 8 * 7 - 1, YO - 16 * Y.LEN)-(XO - 8 * 8 + 1, YO - 16 * Y.LEN / 2 - 16 * VT - 1), 0, BF
IF FLAG = 1 THEN
      CIRCLE (XO + 8 * T / 6, YO - 16 * Y.LEN / 2 - 16 * VT), 1, 7
      PAINT (XO + 8 * T / 6, YO - 16 * Y.LEN / 2 - 16 * VT), 7
   END IF
   DO
   LOOP WHILE MID$(TIME$, SAMPLING.TIME, 1) = TIME0$
   T = T + 1
   IF FLAG = 0 GOTO END.LOOP
   IF T > END.TIME THEN
BEGIN.DO:
      DO
         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 IK = &H65 OR IK = &HB2 THEN
         EXIT DO
      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 + 1))-(XO - 8 * 7, YO + 16 * 2), 7
   LINE (XO - 8 * 8, YO - 16 * (Y.LEN + 1))-(XO - 8 * 8, YO + 16 * 2), 7
   FOR I = 0 TO Y.LEN
      LINE (XO - 8 * 7, YO - 16 * I)-(XO - 8 * 6.5, YO - 16 * I), 7
   NEXT
   CIRCLE (XO - 8 * 7.5, YO - 16 * (Y.LEN + .6)), 8, 7, PI / 2 - .5, PI / 2 + .5
   CIRCLE (XO - 8 * 7.5, YO + 16 * 2.5), 8, 7, PI / 2 + .5, 2 * PI
   CIRCLE (XO - 8 * 7.5, YO - 16 * 2.5), 8, 7, 0, PI / 2 - .5
   LINE (XO - 8 * 7, YO)-(XO - 8 * 8, YO), 7
   PAINT (XO - 8 * 7.5, YO + 16 * 2.5), 4, 7
   LINE (XO - 8 * 7 - 1, YO)-(XO - 8 * 8 + 1, YO), 4
   TITLE$ = "min"
   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
   LINE (XO, YO - 16 * 7)-(XO + 8 * X.LEN, YO - 16 * 7), LINE.COLOR
   COLOR 6
   LOCATE 1, 35: PRINT "温度の時間変化"
   COLOR 7
   LOCATE 4, 14: PRINT "現在の温度 =    ℃"
   COLOR 3
   FOR I = 1 TO Y.LEN
      LOCATE YO.T - I + 1, XO.T - 4: PRINT USING "##.#"; (I - 7) / 5
   NEXT
   LOCATE YO.T - 8, 1: PRINT "温"
   LOCATE YO.T - 6, 1: PRINT "度"
   LOCATE YO.T - 4, 1: PRINT "℃"
   COLOR 2
   FOR I = 0 TO X.LEN / 10
      LOCATE YO.T + 2, XO.T + 10 * I: PRINT USING "##"; I
   NEXT
   LOCATE YO.T + 3, 36: 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 7: LOCATE 23, 60: PRINT "終了 "; : 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


[目次へ]