Passaggio 6: implementazione
Interruttori
Per l'implementazione delle funzionalità del modulo Switch
usiamo il metodo CallPrioMediumStart
da Module
sovrascrivendolo con la nostra implementazione. Scegliamo questa funzione, perché il module Room
dichiarato a MEDIUM
compito, il che implica che il metodo CallPrioMediumStart
del blocco funzione Switch
verrà chiamato ogni ciclo di un compito medio. Le informazioni dettagliate possono essere visualizzate nel progetto di esempio stesso. Tuttavia, la funzionalità principale dell'interruttore è quella di differire tra la funzione tap e quella dim. Dopo aver premuto l'interruttore, verrà avviato un timer con il tempo specificato dal parametro utente. Quando il timer è terminato e l'interruttore non viene rilasciato, viene utilizzata la funzione di attenuazione, indicata dalla variabile xPushLong
. La variabile xPush
È TRUE
, se l'interruttore è appena premuto. Per entrambi xPushLong
E xPush
le proprietà vengono aggiunte a entrambi i blocchi funzione Switch
e l'interfaccia ISwitch
, in modo che possano essere utilizzati dal blocco funzione luce genitore.
Leggero
Ancora una volta, il Light
il blocco funzione sovrascrive il metodo CallPrioMediumStart
. A seconda delle variabili di ingresso dell'interruttore sottostante, la luce viene regolata su "on" o "off" o solo commutata. Per il dimmer, il valore di velocità del parametro dichiarato rSpeed
si usa. Dopo aver raggiunto il valore di regolazione massimo o minimo, la regolazione viene interrotta. Se la luce è attenuata e si tocca l'interruttore, la luce è accesa. (L'implementazione dettagliata è riportata nel corrispondente progetto di esempio.)
Controlla il codice
Dopo l'implementazione, le dichiarazioni dovrebbero essere controllate utilizzando il comando Costruire. Se non viene visualizzato alcun errore, le dichiarazioni vanno bene.