24 lines
812 B
Plaintext
24 lines
812 B
Plaintext
INSTALL @lib$+"CLASSLIB"
|
|
INSTALL @lib$+"TIMERLIB"
|
|
INSTALL @lib$+"NOWAIT"
|
|
|
|
REM Integrator class:
|
|
DIM integ{f$, t#, v#, tid%, @init, @@exit, input, output, tick}
|
|
PROC_class(integ{})
|
|
|
|
REM Methods:
|
|
DEF integ.@init integ.f$ = "0" : integ.tid% = FN_ontimer(10, PROC(integ.tick), 1) : ENDPROC
|
|
DEF integ.@@exit PROC_killtimer(integ.tid%) : ENDPROC
|
|
DEF integ.input (f$) integ.f$ = f$ : ENDPROC
|
|
DEF integ.output = integ.v#
|
|
DEF integ.tick integ.t# += 0.01 : integ.v# += EVAL(integ.f$) : ENDPROC
|
|
|
|
REM Test:
|
|
PROC_new(myinteg{}, integ{})
|
|
PROC(myinteg.input) ("SIN(2*PI*0.5*myinteg.t#)")
|
|
PROCwait(200)
|
|
PROC(myinteg.input) ("0")
|
|
PROCwait(50)
|
|
PRINT "Final value = " FN(myinteg.output)
|
|
PROC_discard(myinteg{})
|