Modifications

Sauter à la navigation Sauter à la recherche
522 octets ajoutés ,  22 novembre 2015 à 20:45
Ligne 50 : Ligne 50 :  
readPassiveTargetID() attend intentionnellement un certain temps (délais bloquant) jusqu'à ce qu'une carte entre dans le champs magnétique du lecteur. La raison de ce délai bloquant est d'assurer un flux commande/réponse" correctement traité. Une fois que le champs magnétique est activé et qu'une requête de lecture est envoyée via {{fname|readPassiveTargetID}}, vous pouvez continuer a envoyer de nouvelle commande sur le PN532, mais au moment où la carte entre dans le champ, le PN532 enverra la réponse à la requête de lecture initiale, même s'il est au milieu d'autres réponses ou activités. Pour éviter d'avoir à déboguer ce fonctionnement relativement complexe au niveau logiciel, un délais bloquant à été mis en oeuvre pour garder le "modèle commande/réponse" aussi clair que possible.
 
readPassiveTargetID() attend intentionnellement un certain temps (délais bloquant) jusqu'à ce qu'une carte entre dans le champs magnétique du lecteur. La raison de ce délai bloquant est d'assurer un flux commande/réponse" correctement traité. Une fois que le champs magnétique est activé et qu'une requête de lecture est envoyée via {{fname|readPassiveTargetID}}, vous pouvez continuer a envoyer de nouvelle commande sur le PN532, mais au moment où la carte entre dans le champ, le PN532 enverra la réponse à la requête de lecture initiale, même s'il est au milieu d'autres réponses ou activités. Pour éviter d'avoir à déboguer ce fonctionnement relativement complexe au niveau logiciel, un délais bloquant à été mis en oeuvre pour garder le "modèle commande/réponse" aussi clair que possible.
   −
As a workaround to this blocking-delay limitation, '''setPassiveActivationRetries(maxRetries)''' was added to the latest NFC libraries to allow you to set a specific timeout after read requests.
+
Comme solution à cette limitation de "délai bloquant", la fonction {{fname|'''setPassiveActivationRetries(maxRetries)'''}} (''maxRetries'' signifiant ''nombre d'essais max'') à été ajouté à la dernière bibliothèque NFC permettant de mettre en place un ''timeout'' spécifique lors des requêtes de lecture.
   −
By default, the PN532 will wait forever for a card to enter the field. By specifying a fixed number of retries via '''MxRtyPassiveActivation''' (see UM section 7.3.1 describing the '''RFConfiguration''' register, specifically CfgItem 5) the PN532 will abort the read request after specified number of attempts, and you can safely send new commands without worrying about mixing up response frames. To wait forever, set MxRtyPassiveActivation to 0xFF. To timeout after a fixed number of retries, set MxRtyPassiveActivation to anything less than 0xFF.
+
Par défaut, le PN532 attendra indéfiniment qu'une carte entre dans le champs magnétique du lecteur. En fixant un nombre fixe d'essais  par l'intermédiaire de {{fname|MxRtyPassiveActivation}} (voir ''User Manual'' section 7.3.1 décrivant le registre de configuration '''RFConfiguration''', spécialement CfgItem 5) le PN532 abandonnera les tentatives de lectures après un nombre spécifique d'essais et vous pouvez envoyer de nouvelles commandes sans vous inquiété de faire un gros mélange entre les différentes paquet de réponses RFID. Pour attendre indéfiniment, fixez la laveur de {{fname|MxRtyPassiveActivation}} sur 0xFF. Pour effectuer un ''timeout'' après un certain nombre d'essais, fixez la valeur de {{fname|MxRtyPassiveActivation}} sur n'importe quelle valeur inférieur à 0xFF.
   −
Example Sketch:
+
Exemple de croquis:
 
  <nowiki>#include <Wire.h>
 
  <nowiki>#include <Wire.h>
 
#include <Adafruit_NFCShield_I2C.h>
 
#include <Adafruit_NFCShield_I2C.h>
    
#define IRQ  (2)
 
#define IRQ  (2)
#define RESET (3)  // Not connected by default on the NFC Shield
+
#define RESET (3)  // Non connectée au NFC shield (par défaut)
    
Adafruit_NFCShield_I2C nfc(IRQ, RESET);
 
Adafruit_NFCShield_I2C nfc(IRQ, RESET);
Ligne 75 : Ligne 75 :  
   }
 
   }
 
    
 
    
   // Got ok data, print it out!
+
   // Obtenir les données et les affichées!
 
   Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);  
 
   Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);  
 
   Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);  
 
   Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);  
 
   Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
 
   Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
 
    
 
    
   // Set the max number of retry attempts to read from a card
+
   // Fixer le nombre d'essais MAS pour lire les carte
   // This prevents us from waiting forever for a card, which is
+
   // Cela empeche d'attente infiniement après la lecture d'une carte (qui est
   // the default behaviour of the PN532.
+
   // le fonctionnement par défaut du PN532).
 
   nfc.setPassiveActivationRetries(0xFF);
 
   nfc.setPassiveActivationRetries(0xFF);
 
    
 
    
   // configure board to read RFID tags
+
   // configurer la carte pour lire des tags RFID
 
   nfc.SAMConfig();
 
   nfc.SAMConfig();
 
      
 
      
   Serial.println("Waiting for an ISO14443A card");
+
   Serial.println("Attendre apres une carte ISO14443A");
 
}
 
}
    
void loop(void) {
 
void loop(void) {
 
   boolean success;
 
   boolean success;
   uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
+
   uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer/Tampon pour stocker le UID retourné
   uint8_t uidLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
+
   uint8_t uidLength;                        // Longueur de l'UID (4 ou 7 bytes/octets en fonction du type de carte ISO14443A)
 
    
 
    
   // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found
+
   // Attendre après une carte de type ISO14443A (Mifare, etc.).  Lorsqu'une carte est trouvée
   // 'uid' will be populated with the UID, and uidLength will indicate
+
   // 'uid' est remplis avec l'UID, et uidLength indiquera si nous avons un
   // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
+
   // uid en 4 bytes/octets (Mifare Classic) ou en 7 bytes/octets (Mifare Ultralight)
 
   success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);
 
   success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);
 
    
 
    
 
   if (success) {
 
   if (success) {
     Serial.println("Found a card!");
+
     Serial.println("Une carte trouvee!");
     Serial.print("UID Length: ");Serial.print(uidLength, DEC);Serial.println(" bytes");
+
     Serial.print("Longueur UID: ");Serial.print(uidLength, DEC);Serial.println(" bytes / octets");
     Serial.print("UID Value: ");
+
     Serial.print("Valeur UID: ");
 
     for (uint8_t i=0; i < uidLength; i++)  
 
     for (uint8_t i=0; i < uidLength; i++)  
 
     {
 
     {
Ligne 110 : Ligne 110 :  
     }
 
     }
 
     Serial.println("");
 
     Serial.println("");
     // Wait 1 second before continuing
+
     // Attendre une seconde avant de continuer
 
     delay(1000);
 
     delay(1000);
 
   }
 
   }
 
   else
 
   else
 
   {
 
   {
     // PN532 probably timed out waiting for a card
+
     // PN532 probablement en timeout en attendant une carte
     Serial.println("Timed out waiting for a card");
+
     Serial.println("Timeout pendant l attente d une carte");
 
   }
 
   }
 
}</nowiki>
 
}</nowiki>
29 917

modifications

Menu de navigation