Per individuare il codice di accesso di una serratura elettrica, o per disattivare un sistema di allarme, Matrix Multimedia, propone l’utilizzo del Circular Buffer.
Variabili e oggetti da inserire nel 3d System panel
Per l’inserimento del codice utilizzo la funzione calcolo con l’espressione
Password = “12345”
La scelta dei cinque caratteri è arbitraria, è possibile inserire un numero qualsiasi, fino a un massimo di venti caratteri.
Ciclo principale
Nel ciclo principale l’istruzione
keypremuto=keypad_3x4::GetAscii()
che ha come “Return Value (BYTE) ”, il contenuto di keypremuto.
Inserisco il carattere corrispondente al tasto premuto contenuto nella variabile keypremuto.
con la funzione decisione :
If keypremuto < 255
Verifico se il tasto è premuto.
quindi inserisco il valore della variabile keypremuto nel Circular Buffer con l’istruzione:
CircularBuffer1::PutByte(keypremuto
NumBytes= CircularBuffer1::getNumberBytes()
inserisco nella variabile NumBytes il valore di ritorno “Return Value(UINT)”.
Infine con l’istruzione :
keytrovato= CircularBuffer1::LookForvalue(Password,5,1,0)
verifico se i 5 caratteri ASCII inseriti corrispondono ai caratteri della Password.
con la funzione decisione:
if keytrovato = 1
controllo se la Password è corretta.
se il valore inserito corrisponde alla Password, con l’istruzione:
Circularbuffer1::Flushbuffer()
ripulisco il Circular buffer.
Con le istruzioni seguenti accendo il led collegato al pin 0 della porta B per 3 secondi, quindi lo spego nuovamente; il led sostituisce il relè di attuazione.
con la funzione calcolo con l’istruzione
NumBytes =0
Azzero la variabile NumBytes in attesa di un nuovo inserimento
Con il Component Macro
keypad_3x4::WaitReleased()
attendo il rilascio del tasto evitando eventuali rimbalzi meccanici.
C Code
Riccardo Monti