programmation pic et lecteur rfid
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

programmation pic et lecteur rfid



  1. #1
    invite64d8200f

    Exclamation programmation pic et lecteur rfid


    ------

    bonjour!
    je suis entrain de faire un programme avec ccs qui lit une donnée (ID) avec un lecteur rfid!
    le premier probleme que j'ai rencontré c'est lorsque j'appelle #include <ex_rfid> prédéfinis dans la bib pic c, une erreur du type: "Cannot change device type this far into the code" et le 16F877.h s'ouvre!
    mon deuxieme probleme c'est concernant l'ecriture des données sur les tags:
    -Est-il possible d'ecrire des données sur les tags, si oui, comment?
    -Le module RFID que je compte l'acheter, est-il préprogrammé?
    merci de me repondre

    -----

  2. #2
    inviteb3c806f8

    Re : programmation pic et lecteur rfid

    Bonjour,

    On écrit #include <ex_rfid.h>

  3. #3
    invite64d8200f

    Re : programmation pic et lecteur rfid

    je l'ai deja testé mais lorsque j'execute il me dit:
    File cannot be opened!!

  4. #4
    inviteb3c806f8

    Re : programmation pic et lecteur rfid

    Alors il n'est pas prédéfini dans ta bibliothèque.

  5. A voir en vidéo sur Futura
  6. #5
    invite64d8200f

    Re : programmation pic et lecteur rfid

    svp! comment faire alors pour le définir!
    le ex_rfid.c je l'ai trouvé dans les exemples du picc!

  7. #6
    inviteb3c806f8

    Re : programmation pic et lecteur rfid

    Envoie moi les codes stp car là j'ai rien compris.

  8. #7
    invite64d8200f

    Re : programmation pic et lecteur rfid

    Code:
    /////////////////////////////////////////////////////////////////////////
    ////                          EX_RFID.C                              ////
    ////                                                                 ////
    ////  This example shows how to read an RFID number from an RFID     ////
    ////  read-only transponder.  It will work on a CCS RFID Development ////
    ////  kit.  Checks received RFID, and compares the ID to an ID       ////
    ////  stored in the EEPROM - if the IDs match then it lights the     ////
    ////  green LED.  If the IDs don't match then it lights the red      ////
    ////  LED.                                                           ////
    ////                                                                 ////
    ////  This example will work with the PCM and PCH compilers.  The    ////
    ////  following conditional compilation lines are used to include a  ////
    ////  valid device for each compiler.  Change the device, clock and  ////
    ////  RS232 pins for your hardware if needed.                        ////
    /////////////////////////////////////////////////////////////////////////
    ////        (C) Copyright 1996,2006 Custom Computer Services         ////
    //// This source code may only be used by licensed users of the CCS  ////
    //// C compiler.  This source code may only be distributed to other  ////
    //// licensed users of the CCS C compiler.  No other use,            ////
    //// reproduction or distribution is permitted without written       ////
    //// permission.  Derivative programs created using this software    ////
    //// in object code form are not restricted in any way.              ////
    /////////////////////////////////////////////////////////////////////////
    
    #include  <16F877.h>
    
    //seting the u-chip
    #if defined(__PCM__)
    #device *=16
    #fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,PUT
    #use delay(clock=20000000)
    
    #elif defined(__PCH__)
    #include <16f877.h>
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #use delay(clock=20000000)
    #endif
    
    // RS485 adresses
    #define  RS485_ID 0x11
    #define  RS485_USE_EXT_INT FALSE
    #define  ADAPTER_RS485_ID  0x7f
    
    // definition of LEDs
    #define GREEN_LED PIN_C3
    #define YELLOW_LED PIN_C4
    #define RED_LED PIN_C5
    
    #include <em4095.c>
    #include <em4102.c>
    
    #include <rs485.c>
    
    //string used for sending using RS485
    int8 msg[32];
    
    //definition of two-color LED states
    typedef enum {OFF, GREEN, RED} LEDcolor;
    
    // function for setting two-color LED
    void twoColorLED(LEDcolor color) {
       switch(color) {
          case OFF:
             output_low(PIN_A3);
             output_low(PIN_A5);
             break;
          case GREEN:
             output_high(PIN_A3);
             output_low(PIN_A5);
             break;
          case RED:
             output_low(PIN_A3);
             output_high(PIN_A5);
             break;
       }
    }
    
    // sends a string using RS485
    void RS485send(char* s) {
       int8 size;
       for(size=0; s[size]!='\0'; ++size);
       rs485_wait_for_bus(FALSE);
       while (!rs485_send_message(ADAPTER_RS485_ID, size, s)) {
          delay_ms(RS485_ID);
       }
    }
    
    // read a char using RS485
    char RS485getc() {
       rs485_get_message(msg, TRUE);
       return msg[2];
    }
    
    // RFID database, terminated with 5xzero
    
    #define EEPROMCEIL 250            // MUST be under 255-5=250
    #define EEPROMBASE 0x2100         // base address of EEPROM
    #rom  EEPROMBASE = { 32, 72,185, 90,  2,
                          1,  2,  3,  4,  5,
                          0,  0,  0,  0,  0
                       }              // EEPROM data
    
    int8 code[5];
    
    //check if the data (ID) match any ID stored and EEPROM and returns 1 if it is true
    int check_id(int8* data) {       
      int8 tmp[5];
      int i,j;
    
      j=0;
      while(j<EEPROMCEIL) {          //till the ceil of EEPROM
         for(i=0;i<=4;i++) {
           tmp[i]=read_eeprom(i+j);
         }
         if((tmp[0] | tmp[1] | tmp[2] | tmp[3] | tmp[4])!=0)   // isn't all bits == 0?
         {
            if ((tmp[0]==data[0])&&(tmp[1]==data[1])&&(tmp[2]==data[2])&&(tmp[3]==data[3])&&(tmp[4]==data[4]))  //check for matching
               return 1;
            j+=5;
         } else
             return 0;
       }
       return 0;
    
    }
    
    // -------------- main 
    void main(void) {
    
       int8  wrong_attemps;
       int32 tagNum;
       int8  customerCode;
    
       rf_init();     //initialization
       rf_powerUp();
    
       // green LED on
       output_low(GREEN_LED);
       twoColorLED(OFF);
    
       wrong_attemps = 0;
       
       // sent a message using RS485
       sprintf(msg,"\n\r\n\rReady...\n\r");
       RS485send(msg);
    
       while(1) {
    
          if(read_4102(code))  //read the code
          {
             tagNum = make32(code[1],code[2],code[3],code[4]);
             customerCode = code[0];
             sprintf(msg,"\r\nScanned ID: %u-%lu",customerCode,tagNum);
             RS485send(msg);         
             sprintf(msg,"( [%u][%u]",code[0],code[1]);
             RS485send(msg);
             sprintf(msg,"[%u][%u][%u] )",code[2],code[3],code[4]);
             RS485send(msg);
             
             
             if(check_id(code)==1)   // and check the code
             {
               wrong_attemps=0;
               sprintf(msg,"\r\nOK - Approved code");
               RS485send(msg);
               twoColorLED(GREEN);
               delay_ms(800);
               twoColorLED(OFF);
    
             } else {
               wrong_attemps++;
               sprintf(msg,"\r\nX  - Disapproved code");
               RS485send(msg);
               twoColorLED(RED);
               delay_ms(800);
               twoColorLED(OFF);
             }
    
             if (wrong_attemps>4) {  // if there is too many attemps, disable for a while
               sprintf(msg,"\r\nToo many attemps!");
               RS485send(msg);
               output_low(RED_LED);
               delay_ms(10000);
               output_high(RED_LED);
               wrong_attemps=0;
             }
          }
       }
    }


    je veux inserer le contenu de cette fonction dans mon programme principale
    Dernière modification par JPL ; 27/05/2014 à 13h45. Motif: Ajout de la balise Code (#) pour garder l'indentation

  9. #8
    inviteb3c806f8

    Re : programmation pic et lecteur rfid

    Tu fais un simple copier coller et basta.

    J'espère que tu as compris l'ensemble du code sinon aucun intérêt.

  10. #9
    invite64d8200f

    Re : programmation pic et lecteur rfid

    si si je l'ai bien compris! mais c'est trop long pour le faire copier coller dans mon programme!!! et c'est plus pratique

Discussions similaires

  1. Programmation C pour lecteur RFID
    Par mich-mich dans le forum Électronique
    Réponses: 1
    Dernier message: 27/05/2014, 09h58
  2. Lecteur RFID
    Par invitebe2a9ce7 dans le forum Électronique
    Réponses: 0
    Dernier message: 30/05/2012, 09h45
  3. lecteur RFID
    Par invite9165473e dans le forum Électronique
    Réponses: 2
    Dernier message: 19/12/2011, 18h51
  4. Lecteur RFID sur 2m
    Par invite3d2336a7 dans le forum Électronique
    Réponses: 9
    Dernier message: 25/09/2010, 19h25
  5. lecteur RFID et µC
    Par invite35e8c515 dans le forum Électronique
    Réponses: 0
    Dernier message: 14/09/2009, 15h02
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...