home *** CD-ROM | disk | FTP | other *** search
/ TestDrive Super Store 2.3 / TESTDRIVE_2.ISO / realizer / demos / apps / circuit.rlz next >
Encoding:
Text File  |  1992-09-30  |  3.4 KB  |  136 lines

  1. '***********************************************************************
  2. '    Circuit.rlz                      
  3. '
  4. '    RC Circuit Analysis Demo
  5. '
  6. '    Copyright ⌐ 1991-1992 Computer Associates International, Inc.
  7. '    All rights reserved.
  8. '
  9. '***********************************************************************
  10.  
  11. PROC SetupCurves
  12.     TT = 0.001
  13.     V0 = 1
  14.     n = 150
  15.     s = 0.002
  16.     ds = s / n
  17.     dT = TT / ds
  18.     t = Index(n) / (n/s)
  19.     p[1:n/2] = 1
  20.     p[n/2+1:n] = 0
  21.     FormSetObject(70, _Chart, "", 370 pxl, 10 pxl, 230 pxl, 200 pxl)
  22.     ChartSetColor(_Red)
  23.     ChartXYLine(t, p)
  24.     ChartSetKey("Vin(t)")
  25.     ChartSetXAxis(0, 0.002)
  26.     ChartSetYAxis(-0.1, 1.1)
  27.     ChartSetProc(ChartProc)
  28.     ChartControlKey(_Show)
  29.     color = _Blue
  30.     KeyFlag = 1
  31. END PROC
  32.  
  33. PROC PlotCurves(R, C)
  34.     LOCAL RC
  35.  
  36.     RC = R * C
  37.     V = V0 * (1 - exp(-t/RC)) + (1-p) * -V0 * (1 - exp(-(t - TT)/RC))
  38.     ChartSetColor(color)
  39.     ChartXYLine(t, V)
  40.     ChartSetKey(sprint("Vout(R=P(0), C=P(0))", R, C * 1e9))
  41.     color = color + 1
  42. END PROC
  43.  
  44. PROC ColorResistor(r)
  45.     LOCAL s, band1, band2, band3
  46.     LOCAL bandcolor
  47.  
  48.     bandcolor = {_Black, _Brown, _Red, _Orange, _Yellow, _Green, _Blue, _Violet, _Gray, _White}
  49.  
  50.     IF r < 10 OR r >99000000000 THEN
  51.         EXIT PROC
  52.     END IF
  53.     s = sprint("P(0)", r)
  54.     band1 = Asc(Left$(s, 1)) - 48
  55.     band2 = Asc(Mid$(s, 2, 1)) - 48
  56.     band3 = Len(s) - 2    
  57.     FormSetColor(bandcolor[band1+1]; _Field)
  58.     FormSetColor(bandcolor[band1+1]; _Text)
  59.     FormSetObject(20, _GroupBox,"", x+221-dx pxl, y+44-dy pxl, 10 pxl,16 pxl)
  60.     FormSetColor(bandcolor[band2+1]; _Field)
  61.     FormSetColor(bandcolor[band2+1]; _Text)
  62.     FormSetObject(30, _GroupBox, "", x+236-dx pxl, y+44-dy pxl, 10 pxl, 16 pxl)
  63.     FormSetColor(bandcolor[band3+1]; _Field)
  64.     FormSetColor(bandcolor[band3+1]; _Text)
  65.     FormSetObject(40, _GroupBox, "", x+251-dx pxl, y+44-dy pxl, 10 pxl, 16 pxl)
  66.     FormSetColor(_White; _Field)
  67.     FormSetColor(_Black; _Text)
  68. END PROC
  69.  
  70. PROC ChartProc(params)
  71.     IF KeyFlag THEN
  72.         ChartControlKey(_Hide)
  73.         KeyFlag = 0
  74.     ELSE
  75.         ChartControlKey(_Show)
  76.         KeyFlag = 1
  77.     END IF
  78. END PROC
  79.  
  80. PROC FormProc(params)
  81.     LOCAL R, C, tval
  82.  
  83.     FormSelect(params[_FormNum])
  84.     ChartSelect(70, params[_FormNum])
  85.     SELECT CASE params[_ItemNum]
  86.         CASE 1    'Analyze
  87.             R = StrToNum(FormQStr(50))
  88.             C = StrToNum(FormQStr(60)) * 1e-9
  89.             ColorResistor(R)
  90.             PlotCurves(R, C)
  91.  
  92.         CASE 2    'Quit
  93.             FormControl(_Close)
  94.             EXIT PROGRAM
  95.  
  96.         CASE 3    'Clear
  97.             ChartControl(_Close)
  98.             SetupCurves
  99.  
  100.         CASE 50    'R
  101.             tval = StrToNum(FormQStr(50), "")
  102.             IF QVar(tval, _Alpha) THEN
  103.                 BEEP
  104.                 FormModifyObject(50, _SetFocus, "0")
  105.             END IF
  106.  
  107.         CASE 60    'C
  108.             tval = StrToNum(FormQStr(60), "")
  109.             IF QVar(tval, _Alpha) THEN
  110.                 BEEP
  111.                 FormModifyObject(60, _SetFocus, "0" )
  112.             END IF
  113.  
  114.     END SELECT
  115. END PROC
  116.  
  117. x = 0
  118. y = 45
  119. dx = 81
  120. dy = 40
  121.  
  122. SetSys(_LoadDir, QSys(_LoadDir) + ";" + QSys(_ProgDir) + "bitmaps")
  123. FormNew(FormQUnique; "Transient RC Circuit Analysis", _Title + _Close + _Minimize)
  124. FormControl(_Size; _Center, 2 pct, 614 pxl, 250 pxl)
  125. FormSetObject(10, _Bitmap, "circuit", x pxl, y pxl)
  126. FormModifyObject(10, _Gray)
  127. ColorResistor(1000)
  128. FormSetObject(50, _TextBox, "1000", x+205-dx pxl, y+10-dy pxl, 80 pxl, _Default; _Notify)
  129. FormSetObject(60, _TextBox, "1000", x+290-dx pxl, y+105-dy pxl, 60 pxl, _Default; _Notify )
  130. FormSetObject(1, _DefButton, "Analyze", 8 pct, 180 pxl)
  131. FormSetObject(3, _Button, "Clear", 25 pct, 180 pxl)
  132. FormSetObject(2, _Button, "Quit", 42 pct, 180 pxl)
  133. SetupCurves
  134. FormControl(_Show)
  135. FormSetProc(FormProc)
  136.