Go Down

Topic: Arduino + RFID question Rx Tx (Read 3 times) previous topic - next topic

ak37

Ok, merci, je vais me pencher la dessus!

ak37

Code: [Select]
#include <SoftwareSerial.h>



#define rxPin 2

#define txPin 3
int Envoie = 0;
int Recoi = 0;
// set up a new serial port
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);


void setup(){
 
 pinMode(rxPin, INPUT);
 pinMode(txPin, OUTPUT);
 mySerial.begin(9600);
 Serial.begin(9600);
 delay(20);
}

void loop(){
  if(Serial.available() > 0){ //attend un caractère du PC
   
     Envoie= Serial.read();
     mySerial.print(Envoie); //envoie du caractère sur le port Tx
     
  }
  Recoi = mySerial.read(); //attend un caractère disponible sur Rx
  Serial.println(Recoi); //envoie du caractère au PC
  delay(10);
}
 


Quelqu'un remarque un problème la dessus? Je veux simplement envoyer une commande au RFID et afficher ça réponse.
 

fdufnews

Code: [Select]
Recoi = mySerial.read(); //attend un caractère disponible sur Rx

Il faudrait peut être faire un test pour voir s'il y a quelque chose à lire avant de faire un read

ak37

#8
Mar 02, 2010, 08:33 pm Last Edit: Mar 02, 2010, 08:34 pm by ak37 Reason: 1
Quote
Description

Reads a character from the receive pin of the software serial port. This function waits for a character to arrive, reads it, and returns the character read. Data that arrives at other times is lost.


Je croyais que la fonction attendais un caractère avant de la lire et d'envoyer. J'ai essayé avec un test et cela ne change rien  :-/

Gromain59

oui, avec la lib soft serial il faut lire en permanence, au risque de louper des caractères.
Sur des tests d'envoie de chaine de caracteres depuis le pc (console arduino) vers l'arduino, j'avais constaté qu'il fallait que je rajoute systèmatiquement un <espace> en 1er pour que le message soit complet.

D'après la doc de ton module, il faut envoyer "W" pour déclencher une lecture. As-tu testé en envoyant en "dur" ce caractère au lieu de passer par la console pour éliminer un pb de liaison console?
Code: [Select]

mySerial.print("W"); //envoie du caractère sur le port Tx


Code: [Select]
int Envoie = 0;
int Recoi = 0;


le type "char" ne serait pas plus adapté ?

Gromain
"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

Go Up