Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Memorizzare codice RFID...

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Memorizzare codice RFID...

Messaggioda Foto Utentericello9 » 16 mag 2011, 11:23

Sono riuscito a fare qualche prova e cerco di spiegarvi tutti i miei dubbi.

Sugeundo il suggerimento di crestus sono riuscito a memorizzare nella variabile input i dati ricevuti sulla seriale, sia con l'ultilizzo dell'istruzione for che senza.
Di seguito posto il codice:
Non padroneggiando tutte le istruzioni del codice C ho dovuto define nel settings unl'altro array:
char verifica[]={49,50,51,52,};
che successivamento confronto con l'array input do memorizzo i dati della seriale.
Volevo chiedere se c'è il modo per confrontare l'intero array senza dover verificare ogni suo elemento come ho fatto io.
Un'altra domanda è se si puo azzerare il valore di input[] per tutte le locazioni di memoria gestite.
Grazie
Marcello.



Codice: Seleziona tutto
while(1) //
    {
        LCD_GOTO(1,1);
      LCD_PUTUN(input[0]);
      
      LCD_GOTO(1,4);
      LCD_PUTUN(input[1]);

      LCD_GOTO(1,7);
      LCD_PUTUN(input[2]);

      LCD_GOTO(1,10);
      LCD_PUTUN(input[3]);

      LCD_GOTO(2,4);
      LCD_PUTUN(input[4]);


//CONTROLLO DATI RICEVUTI CON DATI IN MEMORIA
      
   if (verifica[0]==input[0  && p==0)
       p++;

   if (verifica[1]==input[1] && p==1)
      p++;
      
      
   if (verifica[2]==input[2] && p==2)
      p++;
      
      
   if (verifica[3]==input[3] && p==3)
      p++;
      
      

   if (p==4)  //CODICE CORRETTO
      {   
      Buz=1;
      DelayMs(30);
      Buz=0;
      p=0;
      }

   if (i==4) //RESET AL QUARTO DATO RICEVUTO
      {            
      input[0]=0;
      input[1]=0;
      input[2]=0;
      input[3]=0;
      input[4]=0;
      i=0;
      }
   
    }         // Fine ciclo continuo

} // Fine main


void interrupt ISR (void)
{
   if (RCIF)         //abbiamo ricevuto un carattere sulla seriale?
      {   
      
        input[i]=getch(); 
      i++;          //recupero carattere ricevuto sulla seriale
          
}// fine interrupt service routine

Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

0
voti

[12] Re: Memorizzare codice RFID...

Messaggioda Foto Utentecrestus » 21 mag 2011, 12:17

Probabilmente il tuo progrmma funziona anche... ma è decisamente poco elegante!
quando si devono fare operazioni sui vettori si usano i cicli for che occupano poca memoria, sono più semplici da leggere e sono più veloci da correggere nel caso...

Codice: Seleziona tutto
while(1) //
    {

    // routines LCD

     //CONTROLLO DATI RICEVUTI CON DATI IN MEMORIA

    for (p=0;p>3;p++)
        if (verifica[p]!=input[p])
            error=1;

    if (error==0)  //CODICE CORRETTO
      {   
      Buz=1;
      DelayMs(30);
      Buz=0;
      p=0;
      }

   if (i==4) //RESET AL QUARTO DATO RICEVUTO
      {            
      for (i=0;i>3;i++)
                    input[i]=0;
                i=o;
      }
   
    }         // Fine ciclo continuo

} // Fine main


void interrupt ISR (void)
{
   if (RCIF)         //abbiamo ricevuto un carattere sulla seriale?
      {   

        input[i]=getch(); 
      i++;          //recupero carattere ricevuto sulla seriale
          
}// fine interrupt service routine



e ti manca un riazzeramento del flag RCIF all'interno dell'interrupt.... altrimenti continui a girare all'interno dell ISR senza uscirne mai... quindi aggiungi un
RCIF=0;
...:::Pivello allo sbaraglio:::...

MY WEBSITE! come and see... ;) <-- Di nuovo online... spiacente per i problemi tecnici!
Avatar utente
Foto Utentecrestus
1.295 2 7 13
Expert EY
Expert EY
 
Messaggi: 478
Iscritto il: 3 ott 2008, 10:28
Località: studente al politecnico di torino

0
voti

[13] Re: Memorizzare codice RFID...

Messaggioda Foto Utentefilippo125 » 28 giu 2011, 19:10

Come hai fatto a utilizzare i dati della seriale a coppie? E se ho capito bene non effettui lo xor tra i primi 5 bytes e l'ultimo per vedere se hai ricevuto il codice corretto, ma lo verifichi con uno definito prima?
Avatar utente
Foto Utentefilippo125
85 1 2 5
Frequentatore
Frequentatore
 
Messaggi: 139
Iscritto il: 6 ago 2008, 15:59

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti