Utilizzo di un numero come codice segreto

Aprire una serratura protetta da un sistema di allarme che protegge l’accesso ai locali mediante un codice segreto, è una più che lecita preoccupazione.

L’utilizzo del codice segreto tramite un tastierino numerico è il metodo più diffuso.

Digitando il codice corretto, si disattiva l’allarme permettendoci di aprire la porta senza attivare la sirena; lo stesso codice può sbloccare un eventuale chiavistello servo assistito.

Definisco le variabili e gli oggetti da inserire nel 3D System Panel.

keypad serratura variabili
  • Variabili A, B, C, D di tipo Byte, contengono il valore della variabile keypremuto di tipo Byte, che contiene il valore del tasto premuto sul tastierino.
  • Variabile count di tipo byte: conta i numeri da inserire in sequenza per digitare il codice segreto di apertura.
  • Variabile totale di tipo UINT, somma i quattro numeri inseriti con il proprio peso (migliaia, centinaia, decine e unità.)
  • Variabile "code" di tipo UINT.

La variabile di tipo UINT, permette di attribuire alla variabile “code”, un numero compreso tra 0 e 65535.

 Volendo utilizzare un codice composto di più numeri, posso utilizzare la variabile di tipo ULONG (numero compreso tra 0 e 4294967295); con la funzione Switch Case stabilisco il numero di elementi da controllare.

  • Dal menu Inputs inserisco il Keypad_3x4.
  • Dal menu Outputs inserisco il solenoid_dc1 che collego al pin zero della porta D.
  • Dal menu Display inserisco il display LCDI2C1.

Diagramma di flusso

  • Inserisco i Component Macro per inizializzare il display LCDI2C1 con Start.
  • Inserisco il Component Macro per impostare il solenoid_dc1 con TurnOn().
  • Inserisco la funzione Calcolo, assegnando un numero, a piacere, alla variabile "code".
keypad serratura 1

code = 5555

keypad serratura 2

Il Component Macro:

Keypremuto=keypad_3x4::GetNumber(),

Acquisisce il valore numerico del tasto premuto e lo inserisce nella variabile keypremuto.

La funzione Decisione:

if keypremuto <>255

Controlla se il tasto è premuto.

 

La funzione calcolo:

count = count +1,

Congiuntamente alla funzione Switch Case incrementa la variabile count ogni volta che il tasto è premuto, in modo da acquisire il numero successivo da attribuire, in successione, alle variabili A, B, C e D.

keypad serratura 3

La funzione calcolo:

totale = A*1000 + B*100 + C*10 + D*1,

 Trasforma i singoli numeri in un intero e lo attribuisce alla variabile totale.

 

La funzione decisione:

if code = totale,

Verifica se il numero inserito corrisponde al codice segreto.

keypad serratura 4

Se il numero non corrisponde, esegue il ciclo che visualizza, “ritenta”, quindi azzera count e invia il programma al punto d’inserimento iniziale.

C Code

Come limitare i tentativi per induviduare il codice segreto

E’ facile decifrare un codice composto di quattro cifre, pertanto è opportuno limitare i tentativi d’inserimento bloccando il tastierino dopo il terzo e attivando un allarme.

rick 3Riccardo Monti