Pages: [1]   Go Down
Author Topic: RFID Probleme de comparaison  (Read 1388 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonsoir
Voila j'ai reçu le lecteur RFID
apres un rapide test , je vois bien les codes RFID ,mais je n'arrive pas a faire une comparaison pour autoriser tels ou tels badge smiley-sad

Code:
char code[10];

char tag1[10] = {'2','8','0','0','1','D','5','3','5','7'}; //define tag 1

et je tente la comparaison comme cela

Code:
if(strcmp(code, tag1) == 1) //compare tag1 to the tag read
         {
           digitalWrite(ledPin, HIGH);
           Serial.print("bingo trouvé ");
         }

mais cela ne marche pas
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3430
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
strcmp(code, tag1)
As-tu fait afficher le contenu de la variable code pour essayer de comprendre pourquoi le programme ne fonctionne pas?
« Last Edit: August 26, 2010, 03:49:16 pm by fdufnews » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oui c'est bien ce qui m'etonne
en faite j'ai trouvé une solution mais j'ai 2 badges qui sont valides alors qu'ils ont bien un numero différent

Code:
if(strcmp(code, "28001D5357") != 1) // comparaison du code RFID
       {
           digitalWrite(ledPin, HIGH);
           Serial.print("badge trouvé : ");
           delay(2000);
           digitalWrite(ledPin, LOW);          // Turn off debug LED
          
          
         }
         else
         {
           Serial.print("Refusé ");
         }


si je passe le badge 24008E5FE7 ca me dit aussi que c'est le bon badge
alors que les autres que j'ai ca me dis refusé
La c'est le grand mistére >smiley-sad
« Last Edit: August 26, 2010, 04:36:58 pm by lastiko » Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3430
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oups j'avais pas fait attention à la première lecture, tes tableaux ne sont pas bien définis.
strcmp travaille avec des chaines. Les chaines doivent se terminer par un \0.
Donc:
    1) il faut 1 élément de plus à tes tableaux
    2) il faut penser à ajouter le terminateur

Code:
char code[11];

char tag1[11] = {'2','8','0','0','1','D','5','3','5','7','\0'}; //define tag 1

A mon avis si ton programme te répond OK sur un badge c'est un coup de bol ou un bug.
« Last Edit: August 27, 2010, 01:41:39 am by fdufnews » Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3583
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Librairie Pstring sinon:

http://arduiniana.org/libraries/pstring/
« Last Edit: August 27, 2010, 01:45:30 am by B@tto » Logged


France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3430
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Librairie Pstring sinon:
Cette librairie n'est utilisable que pour faire des impressions. Là le problème c'est du traitement sur les chaines.

Maintenant, si lastiko rencontre des problèmes d'occupation mémoire (la librairie String est assez volumineuse) et qu'il n'utilise que strcmp la fonction peut être réécrite.
« Last Edit: August 27, 2010, 03:48:32 am by fdufnews » Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3583
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Cette librairie n'est utilisable que pour faire des impressions.

Tu peux faire de la comparaison de chaines :

Operators
PString provides three operators for assignment, concatenation, and equivalency test:

char buffer[20];
PString str(buffer, sizeof(buffer));
str = "Yin"; // assignment
str += " Yang"; // concatenation
if (str == "Yin Yang") // comparison
{
  Serial.println("They are equal!");
}
Logged


France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3430
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci B@tto, je m'étais arrêté au titre et aux premières lignes de description de la librairie et je n'avais pas vu les opérateurs.
Cette librairie est intéressante, je crois bien que je vais la récupérer.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci pour vos aides

char tag1[11] = {'2','8','0','0','1','D','5','3','5','7','\0'}; //define tag 1

Les chaines doivent se terminer par un \0.

ca correspond a quoi ?
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3430
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
char tag1[11] = {'2','8','0','0','1','D','5','3','5','7','\0'}; //define tag 1
Les chaines doivent se terminer par un \0.
ca correspond a quoi ?
Ça correspond à la définition d'une chaine en C.
En C une chaine de caractères doit se terminer par un null.
Le null peut s'écrire de différentes façon.
  caractère '\0'
  byte 0

Donc on peut écrire:
Quote
char tag1[11] = {'2','8','0','0','1','D','5','3','5','7','\0'};
ou
char tag1[11] = {'2','8','0','0','1','D','5','3','5','7',0};

Une chaine vide c'est:
Quote
char tag1[11] = {'\0'};

Quand on définit une chaine avec des guillemets, le \0 est implicitement ajouté par le compilateur.
« Last Edit: August 27, 2010, 06:44:17 am by fdufnews » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci pour cette info bien utile, je comprends mieux maintenant pourquoi la comparaison ne fonctionné pas super bien
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un grand merci a B@tto , ca marche nikel avec Pstring

Par contre je n'ai pas réussi avec le code précédent et l'histoire de 0 a la fin

si quelqu'un a le courage de me montrer un code qui compare avec cette methode je suis preneur , histoire de comprendre et de ne plus poser cette question a l'avenir
« Last Edit: August 28, 2010, 08:17:36 am by lastiko » Logged

Pages: [1]   Go Up
Jump to: