Example: Engine Monitor - Child Panel
|
10 ! *********************************************************************
20 ! Example: Engine Monitor - Child PANEL
30 !
40 ! This program creates a simulated engine monitor display
50 ! that shows Torque, Pressure, Dwell, Timing, and RPM for
60 ! a theoretical engine. A status log for updated values is
70 ! also included.
80 !
90 ! *********************************************************
100 !
110 DIM Buf$[200]
120 !
130 ! Create the main panel widget
140 !
150 ASSIGN @Panel TO WIDGET "PANEL";SET ("X":100,"Y":30,"WIDTH":400,"HEIGHT":320,"TITLE":" Example: Engine Monitor - Child PANEL","MAXIMIZABLE":1)
160 CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
170 ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
180 !
190 ASSIGN @M1lbl TO WIDGET "LABEL";SET ("X":5,"Y":5,"WIDTH":90,"HEIGHT":20,"VALUE":"Torque","BORDER":0),PARENT @Panel
200 ASSIGN @Meter1 TO WIDGET "METER";SET ("X":5,"Y":25,"WIDTH":90,"HEIGHT":160,"ARC WIDTH":3,"ORIENTATION":"RIGHT","SHOW LIMITS":0),PARENT @Panel
210 !
220 ASSIGN @B2lbl TO WIDGET "LABEL";SET ("X":125,"Y":5,"WIDTH":80,"HEIGHT":20,"VALUE":"Pressure","BORDER":0),PARENT @Panel
230 ASSIGN @Bar2 TO WIDGET "BAR";SET ("X":130,"Y":25,"WIDTH":60,"HEIGHT":100),PARENT @Panel
240 ASSIGN @B2dsp TO WIDGET "LABEL";SET ("X":130,"Y":125,"WIDTH":60,"HEIGHT":20,"BORDER":0),PARENT @Panel
250 !
260 ! Create a child PANEL that contains a bank of engine measurements
270 !
280 ASSIGN @Subpanel TO WIDGET "PANEL";PARENT @Panel,SET ("X":260,"Y":5,"WIDTH":95,"HEIGHT":145)
290 !
300 ASSIGN @Lbl1 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":0,"WIDTH":75,"HEIGHT":20,"BORDER":0,"VALUE":"Dwell")
310 ASSIGN @Disp1 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":20,"WIDTH":75,"HEIGHT":20)
320 !
330 ASSIGN @Label2 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":50,"WIDTH":75,"HEIGHT":20,"BORDER":0,"VALUE":"Timing")
340 ASSIGN @Disp2 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":70,"WIDTH":75,"HEIGHT":20)
350 !
360 ASSIGN @Label3 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":100,"WIDTH":75,"HEIGHT":20,"BORDER":0,"VALUE":"RPM")
370 ASSIGN @Disp3 TO WIDGET "LABEL";PARENT @Subpanel,SET ("X":10,"Y":120,"WIDTH":75,"HEIGHT":20)
380 !
390 ASSIGN @Lbl TO WIDGET "LABEL";SET ("X":130,"Y":150,"WIDTH":240,"HEIGHT":20,"VALUE":"Status Log","BORDER":0),PARENT @Panel
400 ASSIGN @Text TO WIDGET "PRINTER";SET ("X":130,"Y":170,"WIDTH":240,"HEIGHT":100),PARENT @Panel
410 !
420 Value=50
430 Siz=15
440 Loop_val: !
450 FOR I=1 TO 10000
460 IF Value<25 OR Value>=85 THEN Value=50
470 Torq=INT(Value+Siz*RND)
480 Pres=INT(Value+Siz*RND)
490 Dwell=INT(Value+Siz*RND)
500 Timing=INT(Value+Siz*RND)
510 Rpm=INT(Value+Siz*RND)
520 Value=INT(Value+Siz*(RND-.5))
530 !
540 CONTROL @Meter1;SET ("VALUE":Torq)
550 CONTROL @Bar2;SET ("VALUE":Pres)
560 CONTROL @B2dsp;SET ("VALUE":Pres)
570 CONTROL @Disp1;SET ("VALUE":Dwell)
580 CONTROL @Disp2;SET ("VALUE":Timing)
590 CONTROL @Disp3;SET ("VALUE":Rpm)
600 !
610 OUTPUT Buf$ USING "#,K,DDDD,3X,DDD,DDD,DDD";"Update #";I,Torq,Pres,Dwell
620 CONTROL @Text;SET ("APPEND TEXT":Buf$)
630 NEXT I
640 GOTO Loop_val
650 STOP
660 Finis: END