Se connecter / S'enregistrer
Votre question

Problème de récupération de données par RS232

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
23 Avril 2010 14:11:35

Bonjours à tous.

j'ai réalisé un programme de récupération de données d'un fichier .hex qui est envoyer par liaison RS232 qui sert à mettre à jour mon microcontroleur.
Le soucie c'est que je ne recoi pas toutes les lignes du fichier.

voici le fichier que j'envoi par RS232 :

  1. :100000000C9472000C948B000C948B000C948B005D
  2. :100010000C948B000C948B000C948B000C948B0034
  3. :100020000C948B000C948B000C948B000C948B0024
  4. :100030000C948B000C948B000C948B000C948B0014
  5. :100040000C948B000C948B000C948B000C948B0004
  6. :100050000C948B000C948B000C948B000C948B00F4
  7. :100060000C948B000C948B000C948B000C948B00E4
  8. :100070000C948B000C948B000C948B000C948B00D4
  9. :100080000C948B000C948B000C948B000C948B00C4
  10. :100090000C948B000C948B000C948B000C948B00B4
  11. :1000A0000C948B000C948B000C948B000C948B00A4
  12. :1000B0000C948B000C948B000C948B000C948B0094
  13. :1000C0000C948B000C948B000C948B000C948B0084
  14. :1000D0000C948B000C948B000C948B000C948B0074
  15. :1000E0000C948B0011241FBECFEFD1E2DEBFCDBF39
  16. :1000F00000E00CBF12E0A0E0B2E0EEE0F2E000E0D1


et voici mon code :

  1. ISR( USART1_RX_vect ) //IHM
  2. {
  3. char tmp = 0;
  4. index_ligne = 0;
  5.  
  6. tmp = UDR1; /* je met tout se qui arrive par RS232 dans la variable tmp*/
  7.  
  8. if(tmp == 0x0A) /* si j'arrive au caractère de saut de ligne */
  9. {
  10. index_ligne++;
  11. index_caractere=0;
  12. }
  13.  
  14. else if(tmp != 0x0D) /* temps que la ligne n'est pas fini */
  15. {
  16. bufferISR[index_ligne][index_caractere] = tmp; /* je met dans mon buffer a 2 dimention les données recu */
  17. index_caractere++;
  18. }
  19.  
  20.  
  21. }


Le soucie c'est que dans la boucle if(tmp != 0x0D) quand je met un putchar de tmp j'ai bien les données voulu, mais cela ce guate quand je met toute c'est données dans mon bufferISR...

voici la déclaration de mon bufferISR :

  1. #define CAR 45
  2. #define NBR_LIGNES 16
  3.  
  4. volatile int index_ligne;
  5. volatile int index_caractere;
  6. char bufferISR[NBR_LIGNES][CAR];



Mais je n'arrive pas à trouver mon erreur.
Auriez vous des idées?
Je vous remercie de l'attention que vous porterez à mon problème.

Autres pages sur : probleme recuperation donnees rs232

a b L Programmation
24 Avril 2010 11:49:38

Peux-tu détailler ton problème?
Je pense que c'est lié au fait que tu ne mettes pas de '\0' en fin de ligne pour indiquer la fin de ligne.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS