home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / 93win / data1.cab / Basic_Plus_Examples / CHAMBER < prev    next >
Encoding:
Text File  |  2005-03-02  |  18.1 KB  |  348 lines

  1. 10    !  ********************************************************
  2. 20    !  Example: Environmental Chamber
  3. 30    !
  4. 40    !  This program shows how a user can build a custom display
  5. 50    !  panel. This program uses a strip chart, labels, menus,
  6. 60    !  dialog box, buttons, string input, and meters to simulate
  7. 70    !  a temperature/humidity chamber that can be programmed for
  8. 80    !  different temperature/humidity profiles.
  9. 90    !
  10. 100   !  *********************************************************
  11. 110   !
  12. 120       REAL Points(0:1)
  13. 130       DIM Buf$[100]
  14. 140       DIM Btn$(1:1,1:3)[80]
  15. 150       DIM Time(50),Temp(50),Humid(50),Ramp(50)
  16. 160       Btn$(1,1)="Options, Temperature"
  17. 170       Btn$(1,2)="Options, Humidity"
  18. 180       Btn$(1,3)="Options, Profile Manager"
  19. 190  Logimage: IMAGE #,K,K,K,K,K,DDDD.D,K,DDD.D
  20. 200  Logimage2: IMAGE #,K,DDDD,K,DDDD.D,K,DDD.D,K,DDD
  21. 210   !
  22. 220       ASSIGN @Main TO WIDGET "PANEL";SET ("X":0,"Y":0,"WIDTH":600,"HEIGHT":425,"TITLE":" Example: Environmental Chamber","SIZE CONTROL":"RESIZE CHILDREN")
  23. 230       CONTROL @Main;SET ("SYSTEM MENU":"Quit")
  24. 240       ON EVENT @Main,"SYSTEM MENU" GOTO Finis
  25. 250   !
  26. 260       ASSIGN @Pulldown1 TO WIDGET "PULLDOWN MENU";PARENT @Main,SET ("LABEL":"Chart","SENSITIVE":0)
  27. 270       ASSIGN @Pd_btn1 TO WIDGET "MENU BUTTON";PARENT @Pulldown1,SET ("LABEL":"Temperature")
  28. 280       ASSIGN @Pd_btn2 TO WIDGET "MENU BUTTON";PARENT @Pulldown1,SET ("LABEL":"Humidity")
  29. 290       ASSIGN @Pd_btn3 TO WIDGET "MENU BUTTON";PARENT @Pulldown1,SET ("LABEL":"Profile Manager")
  30. 300       ASSIGN @Pulldown2 TO WIDGET "PULLDOWN MENU";PARENT @Main,SET ("LABEL":"Operation","SENSITIVE":0)
  31. 310       ASSIGN @Pd_btn4 TO WIDGET "MENU BUTTON";PARENT @Pulldown2,SET ("LABEL":"Manual")
  32. 320       ASSIGN @Pd_cscd TO WIDGET "CASCADE MENU";PARENT @Pulldown2,SET ("LABEL":"Automatic")
  33. 330       ASSIGN @Pd_btn5 TO WIDGET "MENU BUTTON";PARENT @Pd_cscd,SET ("LABEL":"(Re)start")
  34. 340       ASSIGN @Pd_btn6 TO WIDGET "MENU BUTTON";PARENT @Pd_cscd,SET ("LABEL":"Continue")
  35. 350   !
  36. 360       ON EVENT @Pd_btn1,"ACTIVATED" GOSUB Btn1
  37. 370       ON EVENT @Pd_btn2,"ACTIVATED" GOSUB Btn2
  38. 380       ON EVENT @Pd_btn3,"ACTIVATED" GOSUB Btn3
  39. 390       ON EVENT @Pd_btn4,"ACTIVATED" GOSUB Btn4
  40. 400       ON EVENT @Pd_btn5,"ACTIVATED" GOSUB Btn5
  41. 410       ON EVENT @Pd_btn6,"ACTIVATED" GOSUB Btn6
  42. 420   !
  43. 430   !  Create the widgets for the temperature profile.
  44. 440   !
  45. 450       ASSIGN @Main1 TO WIDGET "PANEL";PARENT @Main,SET ("X":0,"Y":0,"WIDTH":600,"HEIGHT":279,"BORDER":0,"VISIBLE":0,"SIZE CONTROL":"RESIZE CHILDREN")
  46. 460       ASSIGN @Strip TO WIDGET "STRIPCHART";PARENT @Main1,SET ("X":5,"Y":5,"WIDTH":350,"HEIGHT":250,"SHOW NUMBERING":0)
  47. 470       ASSIGN @Lbl0 TO WIDGET "LABEL";PARENT @Main1,SET ("X":5,"Y":260,"WIDTH":350,"HEIGHT":20,"BORDER":0,"VALUE":"Event History -- Temperature")
  48. 480       ASSIGN @Lbl1 TO WIDGET "LABEL";PARENT @Main1,SET ("X":365,"Y":15,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Curr Temp")
  49. 490       ASSIGN @Disp1 TO WIDGET "METER";PARENT @Main1,SET ("X":365,"Y":35,"WIDTH":120,"HEIGHT":150,"MINIMUM":-75,"MAXIMUM":+75)
  50. 500       ASSIGN @Lbl2 TO WIDGET "LABEL";PARENT @Main1,SET ("X":365,"Y":200,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Set Point")
  51. 510       ASSIGN @Disp2 TO WIDGET "LABEL";PARENT @Main1,SET ("X":365,"Y":220,"WIDTH":120,"HEIGHT":25)
  52. 520       ASSIGN @Slider TO WIDGET "SLIDER";PARENT @Main1,SET ("X":505,"Y":5,"HEIGHT":250,"WIDTH":60,"MINIMUM":-50,"MAXIMUM":50)
  53. 530   !
  54. 540   ! Set up the strip chart
  55. 550   !
  56. 560       CONTROL @Strip;SET ("CURRENT AXIS":"Y","TICK SPACING":10,"ORIGIN":-50,"RANGE":100)
  57. 570       CONTROL @Strip;SET ("CURRENT AXIS":"X","RANGE":20)
  58. 580       CONTROL @Disp1;SET ("LOW LIMIT":-45,"HIGH LIMIT":+45,"ALARM RANGES":"LOW,HIGH")
  59. 590       STATUS @Disp1;RETURN ("LOW PEN":Low_pen,"HIGH PEN":High_pen)
  60. 600       CONTROL @Disp1;SET ("LOW PEN":High_pen,"MIDDLE PEN":Low_pen)
  61. 610   !
  62. 620   ! Create the widgets for the humidity profile
  63. 630   !
  64. 640       ASSIGN @Main2 TO WIDGET "PANEL";PARENT @Main,SET ("X":0,"Y":0,"WIDTH":600,"HEIGHT":279,"VISIBLE":0,"SIZE CONTROL":"RESIZE CHILDREN")
  65. 650       ASSIGN @Strip2 TO WIDGET "STRIPCHART";PARENT @Main2,SET ("X":5,"Y":5,"WIDTH":350,"HEIGHT":250,"SHOW NUMBERING":0)
  66. 660       ASSIGN @Lbl02 TO WIDGET "LABEL";PARENT @Main2,SET ("X":5,"Y":260,"WIDTH":350,"HEIGHT":20,"BORDER":0,"VALUE":"Event History -- Humidity")
  67. 670       ASSIGN @Lbl12 TO WIDGET "LABEL";PARENT @Main2,SET ("X":365,"Y":15,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Curr Humidity")
  68. 680       ASSIGN @Disp12 TO WIDGET "METER";PARENT @Main2,SET ("X":365,"Y":35,"WIDTH":120,"HEIGHT":150,"MINIMUM":0)
  69. 690       ASSIGN @Lbl22 TO WIDGET "LABEL";PARENT @Main2,SET ("X":365,"Y":200,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Set Point")
  70. 700       ASSIGN @Disp22 TO WIDGET "LABEL";PARENT @Main2,SET ("X":365,"Y":220,"WIDTH":120,"HEIGHT":25)
  71. 710       ASSIGN @Slider2 TO WIDGET "SLIDER";PARENT @Main2,SET ("X":505,"Y":5,"HEIGHT":250,"WIDTH":60)
  72. 720   !
  73. 730   ! Set up the strip chart
  74. 740   !
  75. 750       CONTROL @Strip2;SET ("CURRENT AXIS":"Y","TICK SPACING":10,"ORIGIN":0,"RANGE":100)
  76. 760       CONTROL @Strip2;SET ("CURRENT AXIS":"X","RANGE":20)
  77. 770       CONTROL @Disp12;SET ("LOW LIMIT":5,"HIGH LIMIT":95,"ALARM RANGES":"LOW,HIGH")
  78. 780       STATUS @Disp12;RETURN ("LOW PEN":Low_pen,"HIGH PEN":High_pen)
  79. 790       CONTROL @Disp12;SET ("LOW PEN":High_pen,"MIDDLE PEN":Low_pen)
  80. 800   !
  81. 810   ! Create widgets for profile manager
  82. 820   !
  83. 830       ASSIGN @Main3 TO WIDGET "PANEL";PARENT @Main,SET ("X":0,"Y":0,"WIDTH":600,"HEIGHT":279,"BORDER":0,"VISIBLE":0,"SIZE CONTROL":"RESIZE CHILDREN")
  84. 840       ASSIGN @Lbl3 TO WIDGET "LABEL";PARENT @Main3,SET ("X":255,"Y":200,"WIDTH":90,"HEIGHT":20,"BORDER":0,"VALUE":"Low Limit")
  85. 850       ASSIGN @Lbl4 TO WIDGET "LABEL";PARENT @Main3,SET ("X":255,"Y":230,"WIDTH":90,"HEIGHT":20,"BORDER":0,"VALUE":"High Limit")
  86. 860       ASSIGN @Meter1 TO WIDGET "METER";PARENT @Main3,SET ("X":345,"Y":35,"WIDTH":120,"HEIGHT":150,"MINIMUM":-75,"MAXIMUM":+75)
  87. 870       ASSIGN @Meter2 TO WIDGET "METER";PARENT @Main3,SET ("X":465,"Y":35,"WIDTH":120,"HEIGHT":150,"MINIMUM":0)
  88. 880       ASSIGN @Lmeter1 TO WIDGET "LABEL";PARENT @Main3,SET ("X":345,"Y":15,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Curr Temp")
  89. 890       ASSIGN @Lmeter2 TO WIDGET "LABEL";PARENT @Main3,SET ("X":465,"Y":15,"WIDTH":120,"HEIGHT":20,"BORDER":0,"VALUE":"Curr Humidity")
  90. 900       ASSIGN @Temp_low TO WIDGET "NUMBER";PARENT @Main3,SET ("X":345,"Y":200,"WIDTH":120,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  91. 910       ASSIGN @Temp_high TO WIDGET "NUMBER";PARENT @Main3,SET ("X":345,"Y":230,"WIDTH":120,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  92. 920       ASSIGN @Humid_low TO WIDGET "NUMBER";PARENT @Main3,SET ("X":465,"Y":200,"WIDTH":120,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  93. 930       ASSIGN @Humid_high TO WIDGET "NUMBER";PARENT @Main3,SET ("X":465,"Y":230,"WIDTH":120,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  94. 940       ASSIGN @Time TO WIDGET "NUMBER";PARENT @Main3,SET ("X":10,"Y":50,"WIDTH":75,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  95. 950       ASSIGN @Temp TO WIDGET "NUMBER";PARENT @Main3,SET ("X":95,"Y":50,"WIDTH":50,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  96. 960       ASSIGN @Humid TO WIDGET "NUMBER";PARENT @Main3,SET ("X":155,"Y":50,"WIDTH":50,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  97. 970       ASSIGN @Slope TO WIDGET "NUMBER";PARENT @Main3,SET ("X":215,"Y":50,"WIDTH":50,"HEIGHT":20,"REAL NOTATION":"FIXED","REAL RESOLUTION":1)
  98. 980       ASSIGN @Save_me TO WIDGET "PUSHBUTTON";PARENT @Main3,SET ("X":275,"Y":50,"WIDTH":60,"HEIGHT":24,"LABEL":"Set","BORDER":0)
  99. 990       ASSIGN @Kill_me TO WIDGET "PUSHBUTTON";PARENT @Main3,SET ("X":275,"Y":80,"WIDTH":60,"HEIGHT":24,"LABEL":"Clear","BORDER":0)
  100. 1000       ASSIGN @Time_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":10,"Y":30,"WIDTH":75,"HEIGHT":20,"VALUE":"Time")
  101. 1010       ASSIGN @Temp_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":95,"Y":30,"WIDTH":50,"HEIGHT":20,"VALUE":"Temp")
  102. 1020       ASSIGN @Humid_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":155,"Y":30,"WIDTH":50,"HEIGHT":20,"VALUE":"Humid")
  103. 1030       ASSIGN @Ramp_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":215,"Y":30,"WIDTH":50,"HEIGHT":20,"VALUE":"Ramp")
  104. 1040       ASSIGN @Save_disp TO WIDGET "LABEL";PARENT @Main3,SET ("X":275,"Y":30,"WIDTH":60,"HEIGHT":20,"VALUE":"Config")
  105. 1050       ASSIGN @Text2 TO WIDGET "PRINTER";PARENT @Main3,SET ("X":5,"Y":80,"WIDTH":250,"HEIGHT":200)
  106. 1060       CONTROL @Meter1;SET ("LOW LIMIT":-45,"HIGH LIMIT":+45,"ALARM RANGES":"LOW,HIGH")
  107. 1070       STATUS @Meter1;RETURN ("LOW PEN":Low_pen,"HIGH PEN":High_pen)
  108. 1080       CONTROL @Meter1;SET ("LOW PEN":High_pen,"MIDDLE PEN":Low_pen)
  109. 1090       CONTROL @Meter2;SET ("LOW LIMIT":5,"HIGH LIMIT":95,"ALARM RANGES":"LOW,HIGH")
  110. 1100       STATUS @Meter2;RETURN ("LOW PEN":Low_pen,"HIGH PEN":High_pen)
  111. 1110       CONTROL @Meter2;SET ("LOW PEN":High_pen,"MIDDLE PEN":Low_pen)
  112. 1120       GOSUB Setup_profile
  113. 1130  !
  114. 1140  ! Printer Widget appears in all subpanels.
  115. 1150  !
  116. 1160       ASSIGN @Text TO WIDGET "PRINTER";PARENT @Main,SET ("X":5,"Y":280,"WIDTH":580,"HEIGHT":80)
  117. 1170  !
  118. 1180  ! From here to "Afteron" represents:  ON EVENT @Btn1 GOSUB Servicebtn
  119. 1190  !
  120. 1200       ON EVENT @Slider,"CHANGED" GOSUB Changesetpt
  121. 1210       ON EVENT @Slider,"DONE" GOSUB Changesetpt
  122. 1220       ON EVENT @Slider2,"CHANGED" GOSUB Changesetpt
  123. 1230       ON EVENT @Slider2,"DONE" GOSUB Changesetpt
  124. 1240       ON EVENT @Temp_low,"DONE" GOSUB Change_tlow
  125. 1250       ON EVENT @Temp_high,"DONE" GOSUB Change_thigh
  126. 1260       ON EVENT @Humid_low,"DONE" GOSUB Change_hlow
  127. 1270       ON EVENT @Humid_high,"DONE" GOSUB Change_hhigh
  128. 1280       ON EVENT @Save_me,"ACTIVATED" GOSUB Modify_profile
  129. 1290       ON EVENT @Kill_me,"ACTIVATED" GOSUB Clear_profile
  130. 1300  Afteron:!
  131. 1310  !
  132. 1320  !  Get down to work
  133. 1330  !
  134. 1340       Setpt=23
  135. 1350       Setpt2=30
  136. 1360       Curtemp=0
  137. 1370       Curhumid=10
  138. 1380       Siz=2
  139. 1390       Index=1
  140. 1400       CONTROL @Slider;SET ("VALUE":Setpt)
  141. 1410       CONTROL @Slider2;SET ("VALUE":Setpt2)
  142. 1420       CONTROL @Time;SET ("VALUE":0)
  143. 1430       CONTROL @Temp;SET ("VALUE":Setpt)
  144. 1440       CONTROL @Humid;SET ("VALUE":Setpt2)
  145. 1450       CONTROL @Slope;SET ("VALUE":0)
  146. 1460       CONTROL @Main1;SET ("VISIBLE":1)
  147. 1470       CONTROL @Pulldown1;SET ("SENSITIVE":1)
  148. 1480       CONTROL @Pulldown2;SET ("SENSITIVE":1)
  149. 1490  !
  150. 1500  Gotnewsetpt:!
  151. 1510       Reloop=0
  152. 1520       CONTROL @Disp2;SET ("VALUE":Setpt)
  153. 1530       CONTROL @Disp22;SET ("VALUE":Setpt2)
  154. 1540       Evt=Evt+1
  155. 1550       OUTPUT Buf$ USING Logimage;"#";Evt;": Time = ";TIME$(TIMEDATE);"   Setpoint changed to ";Setpt;" Deg. C,   ";Setpt2;" % Hum."
  156. 1560       CONTROL @Text;SET ("APPEND TEXT":Buf$)
  157. 1570       LOOP
  158. 1580    !
  159. 1590           IF Auto=1 THEN GOSUB Get_next_setpt
  160. 1600           Diff=Setpt-Curtemp
  161. 1610           Diff2=Setpt2-Curhumid
  162. 1620           Noise=Siz*(RND-.5)*2
  163. 1630           Delta=Diff/20+Noise
  164. 1640           Delta2=Diff2/20+Noise
  165. 1650           Curtemp=Curtemp+Delta
  166. 1660           Curhumid=Curhumid+Delta2
  167. 1670    !
  168. 1680           CONTROL @Strip;SET ("POINT LOCATION":I)
  169. 1690           CONTROL @Strip2;SET ("POINT LOCATION":I)
  170. 1700           Points(0)=Curtemp
  171. 1710           Points(1)=Setpt
  172. 1720           I=I+1
  173. 1730           CONTROL @Strip;SET ("VALUES":Points(*))
  174. 1740           CONTROL @Disp1;SET ("VALUE":Curtemp)
  175. 1750           CONTROL @Meter1;SET ("VALUE":Curtemp)
  176. 1760           Points(0)=Curhumid
  177. 1770           Points(1)=Setpt2
  178. 1780           CONTROL @Strip2;SET ("VALUES":Points(*))
  179. 1790           CONTROL @Disp12;SET ("VALUE":Curhumid)
  180. 1800           CONTROL @Meter2;SET ("VALUE":Curhumid)
  181. 1810    !
  182. 1820       EXIT IF Reloop
  183. 1830       END LOOP
  184. 1840       GOTO Gotnewsetpt
  185. 1850  !
  186. 1860  Servicebtn:!
  187. 1870       STATUS @Str1;RETURN ("VALUE":Buf$)
  188. 1880       Setpt=VAL(Buf$)
  189. 1890       Reloop=1
  190. 1900       RETURN
  191. 1910       STOP
  192. 1920  Btn1:! Temperature
  193. 1930       GOSUB Turn_off_setup
  194. 1940       GOSUB Turn_off_humid
  195. 1950       GOSUB Turn_on_temp
  196. 1960       RETURN
  197. 1970  Btn2:! Humidity
  198. 1980       GOSUB Turn_off_setup
  199. 1990       GOSUB Turn_off_temp
  200. 2000       GOSUB Turn_on_humid
  201. 2010       RETURN
  202. 2020  Btn3:!
  203. 2030       GOSUB Turn_off_humid
  204. 2040       GOSUB Turn_off_temp
  205. 2050       GOSUB Turn_on_setup
  206. 2060       RETURN
  207. 2070  Btn4:! Manual
  208. 2080       Auto=0
  209. 2090       STATUS @Strip;RETURN ("VISIBLE":Temp_vis)
  210. 2100       STATUS @Strip2;RETURN ("VISIBLE":Humid_vis)
  211. 2110       CONTROL @Slider2;SET ("VALUE":Setpt2)
  212. 2120       CONTROL @Slider;SET ("VALUE":Setpt)
  213. 2130       IF Temp_vis THEN CONTROL @Slider;SET ("VISIBLE":1)
  214. 2140       IF Humid_vis THEN CONTROL @Slider2;SET ("VISIBLE":1)
  215. 2150       RETURN
  216. 2160  Btn5:!
  217. 2170       Auto=1
  218. 2180       CONTROL @Slider;SET ("VISIBLE":0)
  219. 2190       CONTROL @Slider2;SET ("VISIBLE":0)
  220. 2200       Index=1
  221. 2210       Time_start=TIMEDATE
  222. 2220       RETURN
  223. 2230  Btn6:!
  224. 2240       Auto=1
  225. 2250       CONTROL @Slider;SET ("VISIBLE":0)
  226. 2260       CONTROL @Slider2;SET ("VISIBLE":0)
  227. 2270       RETURN
  228. 2280  !
  229. 2290  Turn_off_temp:!
  230. 2300       CONTROL @Main1;SET ("VISIBLE":0)
  231. 2310       RETURN
  232. 2320  Turn_off_humid:!
  233. 2330       CONTROL @Main2;SET ("VISIBLE":0)
  234. 2340       RETURN
  235. 2350  Turn_on_temp:!
  236. 2360       CONTROL @Main1;SET ("VISIBLE":1)
  237. 2370       IF (Auto=0) THEN CONTROL @Slider;SET ("VISIBLE":1)
  238. 2380       RETURN
  239. 2390  Turn_on_humid:!
  240. 2400       CONTROL @Main2;SET ("VISIBLE":1)
  241. 2410       IF (Auto=0) THEN CONTROL @Slider2;SET ("VISIBLE":1)
  242. 2420       RETURN
  243. 2430  Turn_off_setup:!
  244. 2440       CONTROL @Main3;SET ("VISIBLE":0)
  245. 2450       RETURN
  246. 2460  Turn_on_setup:!
  247. 2470       CONTROL @Main3;SET ("VISIBLE":1)
  248. 2480       STATUS @Meter1;RETURN ("LOW LIMIT":Low_lim,"HIGH LIMIT":High_lim)
  249. 2490       CONTROL @Temp_low;SET ("VALUE":Low_lim)
  250. 2500       CONTROL @Temp_high;SET ("VALUE":High_lim)
  251. 2510       STATUS @Meter2;RETURN ("LOW LIMIT":Low_lim,"HIGH LIMIT":High_lim)
  252. 2520       CONTROL @Humid_high;SET ("VALUE":High_lim)
  253. 2530       CONTROL @Humid_low;SET ("VALUE":Low_lim)
  254. 2540       RETURN
  255. 2550  Changesetpt:!
  256. 2560       IF Auto=0 THEN
  257. 2570           STATUS @Slider;RETURN ("VALUE":Setpt)
  258. 2580           STATUS @Slider2;RETURN ("VALUE":Setpt2)
  259. 2590           CONTROL @Disp2;SET ("VALUE":Setpt)
  260. 2600           CONTROL @Disp22;SET ("VALUE":Setpt2)
  261. 2610           Evt=Evt+1
  262. 2620           OUTPUT Buf$ USING Logimage;"#";Evt;": Time = ";TIME$(TIMEDATE);"   Setpoint changed to ";Setpt;" Deg. C, ";Setpt2;" % Hum."
  263. 2630           CONTROL @Text;SET ("APPEND TEXT":Buf$)
  264. 2640       END IF
  265. 2650       RETURN
  266. 2660  Change_tlow:!
  267. 2670       STATUS @Temp_low;RETURN ("VALUE":Low_tlim)
  268. 2680       CONTROL @Disp1;SET ("LOW LIMIT":Low_tlim)
  269. 2690       CONTROL @Meter1;SET ("LOW LIMIT":Low_tlim)
  270. 2700       RETURN
  271. 2710  Change_thigh:!
  272. 2720       STATUS @Temp_high;RETURN ("VALUE":High_tlim)
  273. 2730       CONTROL @Disp1;SET ("HIGH LIMIT":High_tlim)
  274. 2740       CONTROL @Meter1;SET ("HIGH LIMIT":High_tlim)
  275. 2750       RETURN
  276. 2760  Change_hlow:!
  277. 2770       STATUS @Humid_low;RETURN ("VALUE":Low_hlim)
  278. 2780       CONTROL @Disp12;SET ("LOW LIMIT":Low_hlim)
  279. 2790       CONTROL @Meter2;SET ("LOW LIMIT":Low_hlim)
  280. 2800       RETURN
  281. 2810  Change_hhigh:!
  282. 2820       STATUS @Humid_high;RETURN ("VALUE":High_hlim)
  283. 2830       CONTROL @Disp12;SET ("HIGH LIMIT":High_hlim)
  284. 2840       CONTROL @Meter2;SET ("HIGH LIMIT":High_hlim)
  285. 2850       RETURN
  286. 2860  Modify_profile:!
  287. 2870       STATUS @Time;RETURN ("VALUE":Time(Next))
  288. 2880       STATUS @Temp;RETURN ("VALUE":Temp(Next))
  289. 2890       STATUS @Humid;RETURN ("VALUE":Humid(Next))
  290. 2900       STATUS @Slope;RETURN ("VALUE":Ramp(Next))
  291. 2910       OUTPUT Buf$ USING Logimage2;"Time = ";Time(Next);"   Temp=";Temp(Next);" Deg. C, Humid=";Humid(Next);" % Ramp=";Ramp(Next)
  292. 2920       CONTROL @Text2;SET ("APPEND TEXT":Buf$)
  293. 2930       Next=Next+1
  294. 2940       RETURN
  295. 2950  Clear_profile:!
  296. 2960       Next=1
  297. 2970       CONTROL @Text2;SET ("TEXT":"")
  298. 2980       RETURN
  299. 2990  Setup_profile:!
  300. 3000       DATA 0,15,35,55,75
  301. 3010       DATA 10,50,0,-30,23
  302. 3020       DATA 10,90,10,15,20
  303. 3030       DATA 2, 5, 7, 5, 10
  304. 3040       READ Time(1),Time(2),Time(3),Time(4),Time(5)
  305. 3050       READ Temp(1),Temp(2),Temp(3),Temp(4),Temp(5)
  306. 3060       READ Humid(1),Humid(2),Humid(3),Humid(4),Humid(5)
  307. 3070       READ Ramp(1),Ramp(2),Ramp(3),Ramp(4),Ramp(5)
  308. 3080       FOR I=1 TO 5
  309. 3090           OUTPUT Buf$ USING Logimage2;"Time = ";Time(I);"   Temp=";Temp(I);" Deg. C, Humid=";Humid(I);" % Ramp=";Ramp(I)
  310. 3100           CONTROL @Text2;SET ("APPEND TEXT":Buf$)
  311. 3110       NEXT I
  312. 3120       Next=6
  313. 3130       RETURN
  314. 3140  Get_next_setpt:!
  315. 3150       Delta_time=TIMEDATE-Time_start
  316. 3160       Time(Next)=Time(Next-1)+Ramp(Index)+10
  317. 3170       WHILE (Delta_time>Time(Index+1) AND Index<>Next)
  318. 3180           Index=Index+1
  319. 3190       END WHILE
  320. 3200       IF Index=Next THEN
  321. 3210           Auto=0
  322. 3220           DIALOG "INFORMATION","The Temperature/Humidity profile has completed!";SET ("X":200,"Y":300)
  323. 3230           GOTO Btn4
  324. 3240       END IF
  325. 3250       IF (Delta_time<Time(Index)+Ramp(Index) AND Delta_time>Time(Index)) THEN
  326. 3260           IF (Index=1) THEN STATUS @Disp2;RETURN ("VALUE":Foo)
  327. 3270           IF (Index=1) THEN Temp(0)=Foo! Cannot put Temp(0) in place of Foo
  328. 3280           IF (Index=1) THEN STATUS @Disp22;RETURN ("VALUE":Foo)
  329. 3290           IF (Index=1) THEN Humid(0)=Foo
  330. 3300           Mult=(Delta_time-Time(Index))/Ramp(Index)
  331. 3310           Setpt=Temp(Index-1)+(Temp(Index)-Temp(Index-1))*Mult
  332. 3320           Setpt2=Humid(Index-1)+(Humid(Index)-Humid(Index-1))*Mult
  333. 3330       ELSE
  334. 3340           Setpt=Temp(Index)
  335. 3350           Setpt2=Humid(Index)
  336. 3360       END IF
  337. 3370       CONTROL @Disp22;SET ("VALUE":Setpt2)
  338. 3380       CONTROL @Disp2;SET ("VALUE":Setpt)
  339. 3390       IF (Setpt<>Prevst) OR (Setpt2<>Prevst2) THEN
  340. 3400           Evt=Evt+1
  341. 3410           OUTPUT Buf$ USING Logimage;"#";Evt;": Time = ";TIME$(TIMEDATE);"   Setpoint changed to ";Setpt;" Deg. C, ";Setpt2;" % Hum."
  342. 3420           CONTROL @Text;SET ("APPEND TEXT":Buf$)
  343. 3430       END IF
  344. 3440       Prevst=Setpt
  345. 3450       Prevst2=Setpt2
  346. 3460       RETURN
  347. 3470  Finis: END
  348.