Edukiak

# ScriptForge.Timer zerbitzua

Timer zerbitzuak erabiltzaile-scriptak exekutatzeak zenbat denbora behar duen neurtzen du.

Timer batek iraupena neurtzen du. Honakoak egin daitezke zerbitzu horrekin:

- Abiarazi, denbora neurtzen noiz hasiko den adierazteko.

- Eten, denbora neurtzea pausatzeko.

- Berrekin, kronometroa eten ondoren denboraren igarotzea monitorizatzen jarraitzeko.

- Berrabiarazi, aurreko neurketak bertan behera uzteko eta Timer zerbitzua zerotik hasteko.

Iraupena segundotan adierazten dira, 3 digitu dezimalen doitasunarekin (milisegundoak). Iraupena 12.345 bada, horrek esan nahi du 12 segundo eta 345 milisegundo direla.

## Zerbitzuari deitzea

Timer zerbitzua erabiltzeko, ScriptForge liburutegia kargatu edo inportatu behar da:

• Basic makroak erabiltzkeo, ScriptForge liburutegia kargatu behar da honako instrukzioa erabiliz:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scriptak erabiltzeko, berriz, scriptforge modulu baten inportazioa behar dute:
from scriptforge import CreateScriptService

##### Basic lengoaian

Beheko adibideak myTimer izeneko Timer objektu bat sortzen du eta berehala abiarazten du.

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim myTimer As Variant
        myTimer = CreateScriptService("Timer", True)
        'Kronometroa berehala hasten da bigarren argumentua = True (egia) denean. Balio lehenetsia = False (gezurra)

Gomendagarria baliabideak askatzea haiek erabili ondoren:

        Set myTimer = myTimer.Dispose()

##### Python lengoaian

        from scriptforge import CreateScriptService
        myTimer = CreateScriptService("Timer", start = True)
        # ...
        myTimer = myTimer.Dispose()

## Propietateak

Izena | Irakurtzeko soilik | Mota | Deskribapena
--- | --- | --- | ---
Duration | Bai | Double | Hasieratik igaro den denbora edo hasieraren eta geldiunearen artean igaro dena (ez du eten-denbora kontuan hartzen)
IsStarted | Bai | Boolean | True (egia) kronometroa hasi bada edo eten bada
IsSuspended | Bai | Boolean | True (egia) kronometroa hasi eta eten bada
SuspendDuration | Bai | Double | Kronometroa etenda egon den denbora hasieratik edo hasieraren eta geldiunearen artean
TotalDuration | Bai | Double | Hasieratik igaro den denbora edo hasieraren eta geldiunearen artean igaro dena (eten-denbora eta exekuzio-denbora kontuan hartuta)

Kontuan izan TotalDuration propietatea eta Duration eta SuspendDuration propietateen batuketa baliokideak direla.

## Metodoak

Metodoek ez dute argumenturik behar eta Boolean balio bat itzultzen dute.

Itzulitako balioa False bada, orduan ez da ezer gertatu.

Izena | Deskribapena | Itzulitako balioa
--- | --- | ---
Continue | Timer berrabiarazten du, eten bada | False (faltsua) kronometroa ez bada eten
Restart | Timer objektua amaitzen du eta bere uneko propietate-balioak baztertzen ditu, eta Timer berri garbi gisa berrabiarazten du. | False (faltsua) kronometroa inaktibo badago
Start | Kronometro garbi berria abiarazten du | False (faltsua) kronometroa dagoeneko hasi bada
Suspend | Abian dagoen kronometro bat eteten du | False (faltsua) kronometroa hasi ez bada edo dagoeneko eten bada
Terminate | Abian dagoen kronometro bat gelditzen du | False (faltsua) kronometroa ez bada hasi edo eten

### Adibidea:

Beheko adibideetan, Basic eta Python lengoaietan, Timer zerbitzuaren metodo eta propietateen erabilera erakusten da.

##### Basic lengoaian

        myTimer.Start()
        Wait 500
        myTimer.Suspend()
        'Elkarrizketa-koadroa irekita egon den bitartean igaro den denbora eten-denboratzat hartuko da
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Continue()
        Wait 500
        'Elkarrizketa-koadroa irekita egon den bitartean igaro den denbora exekuzio-denboratzat hartuko da
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Terminate()
        'Amaierako denbora-neurketak erakusten ditu
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration

Terminate metodoari deitzen bazaio, Continue metodoari ondoren egindako deiek ez diote denboraren neurketari berrekingo. Modu berean, kronometro bat amaitzen bada, Start metodoak hura berrabiaraziko du kronometro berria bailitzan.

##### Python lengoaian

        from time import sleep
        bas = CreateScriptService("Basic")
        myTimer.Start()
        sleep(0.5)
        myTimer.Suspend()
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
        myTimer.Continue()
        sleep(0.5)
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
        myTimer.Terminate()
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))

Kontuan izan Basic lengoaiako Wait funtzioak milisegundoak erabiltzen dituela iraupena adierazten duen argumentuan eta Python lengoaiako sleep funtzioak, berriz, segundoak erabiltzen dituela.

## Kronometro anitzekin lan egitea

Posible da Timer zerbitzu anitzen instantziak sortzea paraleloan. Horrek zalutasun gehiago eskaintzen du kodearen toki desberdinetan denbora neurtzeko.

Hurrengo adibidean, bi Timer objektu nola sortu eta bakoitza bere aldetik nola abiarazi erakusten da.

##### Basic lengoaian

        Dim myTimerA as Variant, myTimerB as Variant
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        'myTimerA hasten du
        myTimerA.Start()
        Wait 1000 'Wait 1 second (1,000 milliseconds)
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'myTimerB hasten du
        myTimerB.Start()
        Wait 1000
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Amaitu kronometro biak
        myTimerA.Terminate()
        myTimerB.Terminate()

##### Python lengoaian

        from time import sleep
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        myTimerA.Start()
        sleep(1)
        bas.MsgBox("{} {}".format(myTimerA.Duration, myTimerB.Duration))
        myTimerB.Start()
        sleep(1)
        bas.MsgBox("{} {}".format(myTimerA.Duration, myTimerB.Duration))
        myTimerA.Terminate()
        myTimerB.Terminate()

Azpimarraren karaktere bat, "_", aurrizki gisa duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez dira Basic makroetan edo Python scriptetan erabili behar.

Erlazionatutako gaiak

Now funtzioa

Timer funtzioa