[C] petit programme qui fonctionne pas.....

petit programme qui fonctionne pas..... [C] - C - Programmation

Marsh Posté le 05-05-2007 à 13:10:05    

bonjours à tousse!

 

est ce que vous pouvez jeter un coup d'oeil a mon programme test?
C'est ecrit en C sous PICC
d'après mes prof la syntaxe est bonne mais je n'arrive pas a avoir ce que je veus....

 


Code :
  1. const char CARD_SUCC[14]= {0xFF,0x0E,0xA3,0x08,0xF8,0x82,0x65,0x08,0xF8,0x82,0x65,0xFF,0x08,0x63};
  2. char a;
  3. char b;
  4. char i;
  5. b=0;
  6. for(i=0; i<14; i++)
  7.     {while(b==0)
  8.              {a=getc(RFID);
  9.               b=a^CARD_SUCC[i];
  10.              }
  11.     }
  12. if(i==14 && b==0)
  13.     {delay_ms(1000);
  14.      putc(0xAA,RFID);
  15.     }
  16. else
  17.     {delay_ms(2000);
  18.      putc(0xAA,RFID);
  19.     }
  20. while(1)
  21. {}
 

merci encore


Message édité par Neo_007 le 05-05-2007 à 15:59:22
Reply

Marsh Posté le 05-05-2007 à 13:10:05   

Reply

Marsh Posté le 05-05-2007 à 13:43:56    

et tu veux que ça fasse quoi en fait ? :D

Reply

Marsh Posté le 05-05-2007 à 14:06:27    

dsl j'ai oublié de le dire.... :pt1cable:  
 
Donc je travaille sur un module de lecture/ecriture de TAG RFID
il y a 2 cas, celui ou la carte est presente et ou elle ne l'est pas....
 
alors j'envoie une donnée sur le port serie nomée : RFID.
et bien entendue la reponse depend de la presence de la carte.
 
La constante CARD_SUCC correspond a la reponse du module dans le cas ou la carte est presente.
 
Voila pour l'explication.
 
Donc je veux qu'il m'envoie 0xAA 1 seconde apres la verif quand la carte est presente
et 0xAA 2 secondes apres lorsqu'elle est absente....

Reply

Marsh Posté le 05-05-2007 à 15:19:20    

En sortie de boucle, i est égal à 14 pas à 13, mais je ne sais pas si c'est ça ton pb, je ne connais rien au PIC et je ne sais pas ce que tu veux.
De toute façon, j'ai l'impression qu'à la sortie de la boucle, forcément i est égal à 14 et b est différent de 0, (sinon tu ne sortirais pas du while)
En fait, ta boucle for ne sert à rien pour ce qui est du C,  mais comme je l'ai déjà dit, je ne connais rien au PIC.


Message édité par Trap D le 05-05-2007 à 15:27:23
Reply

Marsh Posté le 05-05-2007 à 15:27:02    

en effet je pensais bien...
je test ca lundi et je vous redonne de mes nouvelle
mais je pense qu'il y a un autre probleme comme meme, car je crois me souvenir d'avoir tenté le i==14

Reply

Marsh Posté le 05-05-2007 à 15:39:38    

Neo_007 a écrit :

en effet je pensais bien...
je test ca lundi et je vous redonne de mes nouvelle
mais je pense qu'il y a un autre probleme comme meme, car je crois me souvenir d'avoir tenté le i==14

Oui mais aussi b est différent de 0  et oit tu testes (i==13 && b==0) donc ce test est toujours en echec.

Reply

Marsh Posté le 05-05-2007 à 15:57:43    

le ^ n'est pas un ou exclusif?
car dans le cas où ca l'ai tans que a=CARD_SUCC[i], b=0,  non?

 

PS : j'ai edité le code et mis if (i==14) comme tu me la dit


Message édité par Neo_007 le 05-05-2007 à 16:01:03
Reply

Marsh Posté le 05-05-2007 à 16:04:46    

Oui, mais dans ton for, tu boucles sur b égal à 0 avec while (b == 0) donc tu ne sors de la boucle que si b != 0, tu peux alors sortir de la boucle for et tu ne peux jamais avoir b == 0 au sortir du for.

Reply

Marsh Posté le 05-05-2007 à 16:09:27    

donc je dois mettre while (b==0 && i<14)?

 

donc du coup mon for ne servirais plus a rien et le code sera :

Code :
  1. i=0;
  2. b=0;
  3. while(b==0 && i<14)
  4.        {a=getc(RFID);
  5.          b=a^CARD_SUCC[i];
  6.          i=i++
  7.        }


Message édité par Neo_007 le 05-05-2007 à 16:25:40
Reply

Marsh Posté le 05-05-2007 à 16:14:07    

Que veux-tu faire exactement ?

Reply

Marsh Posté le 05-05-2007 à 16:14:07   

Reply

Marsh Posté le 05-05-2007 à 16:19:19    

excuse j'ai pas vue que tu m'avais deja dit que mon for ne servais a rien....

Reply

Marsh Posté le 05-05-2007 à 18:25:45    

D'après ton code, tu fais au maximum 14 essais de lecture d'un fichier RFID, et tu t'arrêtes avant si b est différent de 0.
C'est bien ce que tu veux ?

Reply

Marsh Posté le 05-05-2007 à 18:31:56    

oui c bien ca

Reply

Marsh Posté le 05-05-2007 à 18:38:11    

Donc maintenant ce donne ca :
 
 

Code :
  1. const char CARD_SUCC[14]= {0xFF,0x0E,0xA3,0x08,0xF8,0x82,0x65,0x08,0xF8,0x82,0x65,0xFF,0x08,0x63};
  2. char a;
  3. char b;
  4. char i;
  5. i=0;
  6. b=0;
  7. while(b==0 && i<14)
  8.        {a=getc(RFID);
  9.          b=a^CARD_SUCC[i];
  10.          i=i++
  11.        }
  12. if(i==14 && b==0)
  13.     {delay_ms(1000);
  14.      putc(0xAA,RFID);
  15.     }
  16. else
  17.     {delay_ms(2000);
  18.      putc(0xAA,RFID);
  19.     }
  20. while(1)
  21. {}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed